diff options
-rw-r--r-- | comphelper/source/misc/lok.cxx | 27 | ||||
-rw-r--r-- | include/comphelper/lok.hxx | 10 |
2 files changed, 37 insertions, 0 deletions
diff --git a/comphelper/source/misc/lok.cxx b/comphelper/source/misc/lok.cxx index 71bc922c5d5f..fc8a09d054e9 100644 --- a/comphelper/source/misc/lok.cxx +++ b/comphelper/source/misc/lok.cxx @@ -27,6 +27,33 @@ bool isActive() return bActive; } +static void (*pStatusIndicatorCallback)(void *data, statusIndicatorCallbackType type, int percent)(nullptr); +static void *pStatusIndicatorCallbackData(nullptr); + +void setStatusIndicatorCallback(void (*callback)(void *data, statusIndicatorCallbackType type, int percent), void *data) +{ + pStatusIndicatorCallback = callback; + pStatusIndicatorCallbackData = data; +} + +void statusIndicatorStart() +{ + if (pStatusIndicatorCallback) + pStatusIndicatorCallback(pStatusIndicatorCallbackData, statusIndicatorCallbackType::Start, 0); +} + +void statusIndicatorSetValue(int percent) +{ + if (pStatusIndicatorCallback) + pStatusIndicatorCallback(pStatusIndicatorCallbackData, statusIndicatorCallbackType::SetValue, percent); +} + +void statusIndicatorFinish() +{ + if (pStatusIndicatorCallback) + pStatusIndicatorCallback(pStatusIndicatorCallbackData, statusIndicatorCallbackType::Finish, 0); +} + } // namespace LibreOfficeKit } // namespace comphelper diff --git a/include/comphelper/lok.hxx b/include/comphelper/lok.hxx index 8ddfb5a84fde..ba4745c8e61b 100644 --- a/include/comphelper/lok.hxx +++ b/include/comphelper/lok.hxx @@ -22,6 +22,16 @@ COMPHELPER_DLLPUBLIC void setActive(); COMPHELPER_DLLPUBLIC bool isActive(); +enum class statusIndicatorCallbackType { Start, SetValue, Finish }; + +COMPHELPER_DLLPUBLIC void setStatusIndicatorCallback(void (*callback)(void *data, statusIndicatorCallbackType type, int percent), void *data); + +COMPHELPER_DLLPUBLIC void statusIndicatorStart(); + +COMPHELPER_DLLPUBLIC void statusIndicatorSetValue(int percent); + +COMPHELPER_DLLPUBLIC void statusIndicatorFinish(); + } } |