diff options
author | Tor Lillqvist <tml@collabora.com> | 2015-05-06 16:18:42 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2015-05-06 17:55:58 +0300 |
commit | a00cd9025b017c86431db17ca7076f7434462fd7 (patch) | |
tree | 781335898b0a25691959ae272d448603c6d677cf | |
parent | 44724236a014072a5a5012a9e77fb9d2a903fe1d (diff) |
Add support for progress bar callbacks to LibreOfficeKit clients
The framework bits.
Change-Id: I9cbd649c7766284bfcf8846d2b5e129dd2731ee8
-rw-r--r-- | framework/inc/helper/statusindicator.hxx | 4 | ||||
-rw-r--r-- | framework/source/helper/statusindicator.cxx | 52 |
2 files changed, 38 insertions, 18 deletions
diff --git a/framework/inc/helper/statusindicator.hxx b/framework/inc/helper/statusindicator.hxx index e8928e2d9b0e..6043cf2a2071 100644 --- a/framework/inc/helper/statusindicator.hxx +++ b/framework/inc/helper/statusindicator.hxx @@ -68,6 +68,10 @@ class StatusIndicator : public ::cppu::WeakImplHelper1< css::task::XStatusIndic */ css::uno::WeakReference< css::task::XStatusIndicatorFactory > m_xFactory; + sal_Int32 m_nRange; + // We want the callback percentages to increase monotonically + int m_nLastCallbackPercent; + // c++ interface public: diff --git a/framework/source/helper/statusindicator.cxx b/framework/source/helper/statusindicator.cxx index 307adcf24ff1..fc5ae8b3ed35 100644 --- a/framework/source/helper/statusindicator.cxx +++ b/framework/source/helper/statusindicator.cxx @@ -19,6 +19,7 @@ #include <config_features.h> +#include <comphelper/lok.hxx> #include <helper/statusindicator.hxx> namespace framework{ @@ -33,76 +34,91 @@ StatusIndicator::~StatusIndicator() } void SAL_CALL StatusIndicator::start(const OUString& sText , - sal_Int32 nRange) + sal_Int32 nRange) throw(css::uno::RuntimeException, std::exception) { -#if !HAVE_FEATURE_DESKTOP - (void) sText; - (void) nRange; -#else + if (comphelper::LibreOfficeKit::isActive()) + { + m_nRange = nRange; + m_nLastCallbackPercent = -1; + + comphelper::LibreOfficeKit::statusIndicatorStart(); + return; + } + css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory); if (xFactory.is()) { StatusIndicatorFactory* pFactory = static_cast<StatusIndicatorFactory*>(xFactory.get()); pFactory->start(this, sText, nRange); } -#endif } void SAL_CALL StatusIndicator::end() throw(css::uno::RuntimeException, std::exception) { -#if HAVE_FEATURE_DESKTOP + if (comphelper::LibreOfficeKit::isActive()) + { + comphelper::LibreOfficeKit::statusIndicatorFinish(); + return; + } + css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory); if (xFactory.is()) { StatusIndicatorFactory* pFactory = static_cast<StatusIndicatorFactory*>(xFactory.get()); pFactory->end(this); } -#endif } void SAL_CALL StatusIndicator::reset() throw(css::uno::RuntimeException, std::exception) { -#if HAVE_FEATURE_DESKTOP + if (comphelper::LibreOfficeKit::isActive()) + return; + css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory); if (xFactory.is()) { StatusIndicatorFactory* pFactory = static_cast<StatusIndicatorFactory*>(xFactory.get()); pFactory->reset(this); } -#endif } void SAL_CALL StatusIndicator::setText(const OUString& sText) throw(css::uno::RuntimeException, std::exception) { -#if !HAVE_FEATURE_DESKTOP - (void) sText; -#else + if (comphelper::LibreOfficeKit::isActive()) + return; + css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory); if (xFactory.is()) { StatusIndicatorFactory* pFactory = static_cast<StatusIndicatorFactory*>(xFactory.get()); pFactory->setText(this, sText); } -#endif } void SAL_CALL StatusIndicator::setValue(sal_Int32 nValue) throw(css::uno::RuntimeException, std::exception) { -#if !HAVE_FEATURE_DESKTOP - (void) nValue; -#else + if (comphelper::LibreOfficeKit::isActive()) + { + int nPercent = (100*nValue)/m_nRange; + if (nPercent > m_nLastCallbackPercent) + { + comphelper::LibreOfficeKit::statusIndicatorSetValue(nPercent); + m_nLastCallbackPercent = nPercent; + } + return; + } + css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory); if (xFactory.is()) { StatusIndicatorFactory* pFactory = static_cast<StatusIndicatorFactory*>(xFactory.get()); pFactory->setValue(this, nValue); } -#endif } } // namespace framework |