diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-07-02 11:01:54 +0200 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-07-15 15:08:12 +0200 |
commit | d41b79f1051a8dff638732e737d250eef56d5378 (patch) | |
tree | a97214ecf87431b13b2017bd7bda3b9bd2eac5de /desktop | |
parent | 07ad277ce32410d02dca9933c005bac7fe0ce972 (diff) |
jsdialog: move executor code to vcl
Change-Id: I9247a652707fe3239dc488a605a2c506d8eec95c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97736
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98819
Tested-by: Jenkins
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/lib/init.cxx | 162 |
1 files changed, 6 insertions, 156 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 7365e52db5a2..665f4d56628f 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -151,7 +151,7 @@ #include <vcl/abstdlg.hxx> #include <tools/diagnose_ex.h> #include <vcl/uitest/uiobject.hxx> -#include <vcl/jsdialog/builder.hxx> +#include <vcl/jsdialog/executor.hxx> // Needed for getUndoManager() #include <com/sun/star/document/XUndoManager.hpp> @@ -188,30 +188,6 @@ static void SetLastExceptionMsg(const OUString& s = OUString()) gImpl->maLastExceptionMsg = s; } -class LOKTrigger -{ -public: - static void trigger_changed(weld::Entry& rEdit) - { - rEdit.signal_changed(); - } - - static void trigger_changed(weld::ComboBox& rComboBox) - { - rComboBox.signal_changed(); - } - - static void trigger_clicked(weld::Toolbar& rToolbar, const OString& rIdent) - { - rToolbar.signal_clicked(rIdent); - } - - static void trigger_click(weld::DrawingArea& rDrawingArea, const Point& rPos) - { - rDrawingArea.click(rPos); - } -}; - namespace { struct ExtensionMap @@ -3653,137 +3629,11 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned long try { OString sControlId = OUStringToOString(aMap["id"], RTL_TEXTENCODING_ASCII_US); - weld::Widget* pWidget = jsdialog::FindWeldWidgetsMap(nWindowId, sControlId); - if (!pWidget && nWindowId == 0) - { - pWidget = jsdialog::FindWeldWidgetsMap(reinterpret_cast<sal_uInt64>(SfxViewShell::Current()), sControlId); - } - - bIsWeldedDialog = pWidget != nullptr; - bool bContinueWithLOKWindow = false; - - if (bIsWeldedDialog) - { - OUString sControlType = aMap["type"]; - OUString sAction = aMap["cmd"]; - if (sControlType == "tabcontrol") - { - auto pNotebook = dynamic_cast<weld::Notebook*>(pWidget); - if (pNotebook) - { - if (sAction == "selecttab") - { - OString pageId = OUStringToOString(aMap["data"], RTL_TEXTENCODING_ASCII_US); - int page = std::atoi(pageId.getStr()); - - pNotebook->set_current_page(page); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "combobox") - { - auto pCombobox = dynamic_cast<weld::ComboBox*>(pWidget); - if (pCombobox) - { - if (sAction == "selected") - { - int separatorPos = aMap["data"].indexOf(';'); - if (separatorPos) - { - OUString entryPos = aMap["data"].copy(0, separatorPos); - OString posString = OUStringToOString(entryPos, RTL_TEXTENCODING_ASCII_US); - int pos = std::atoi(posString.getStr()); - pCombobox->set_active(pos); - LOKTrigger::trigger_changed(*pCombobox); - } - } - else if (sAction == "change") - { - pCombobox->set_entry_text(aMap["data"]); - LOKTrigger::trigger_changed(*pCombobox); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "pushbutton") - { - auto pButton = dynamic_cast<weld::Button*>(pWidget); - if (pButton) - { - if (sAction == "click") - { - pButton->clicked(); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "drawingarea") - { - auto pArea = dynamic_cast<weld::DrawingArea*>(pWidget); - if (pArea) - { - if (sAction == "click") - { - LOKTrigger::trigger_click(*pArea, Point(10, 10)); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "spinfield") - { - auto pSpinField = dynamic_cast<weld::SpinButton*>(pWidget); - if (pSpinField) - { - if (sAction == "plus") - { - pSpinField->set_value(pSpinField->get_value() + 1); - } - else if (sAction == "minus") - { - pSpinField->set_value(pSpinField->get_value() - 1); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "toolbox") - { - auto pToolbar = dynamic_cast<weld::Toolbar*>(pWidget); - if (pToolbar) - { - if (sAction == "click") - { - LOKTrigger::trigger_clicked(*pToolbar, OUStringToOString(aMap["data"], RTL_TEXTENCODING_ASCII_US)); - } - else - bContinueWithLOKWindow = true; - } - } - else if (sControlType == "edit") - { - auto pEdit = dynamic_cast<weld::Entry*>(pWidget); - if (pEdit) - { - if (sAction == "change") - { - pEdit->set_text(aMap["data"]); - LOKTrigger::trigger_changed(*pEdit); - } - else - bContinueWithLOKWindow = true; - } - } - else - { - bContinueWithLOKWindow = true; - } - } + bIsWeldedDialog = jsdialog::ExecuteAction(nWindowId, sControlId, aMap); + if (!bIsWeldedDialog) + bIsWeldedDialog = jsdialog::ExecuteAction(reinterpret_cast<sal_uInt64>(SfxViewShell::Current()), + sControlId, aMap); if (!pWindow) { @@ -3791,7 +3641,7 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned long return; } - if (!bIsWeldedDialog || bContinueWithLOKWindow) + if (!bIsWeldedDialog) { WindowUIObject aUIObject(pWindow); std::unique_ptr<UIObject> pUIWindow(aUIObject.get_child(aMap["id"])); |