diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-11-17 14:32:04 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-11-26 18:12:10 +0100 |
commit | f424bed38ce34a3f73dafb6de20632ed8275cf18 (patch) | |
tree | 9f73268f8070063c0a08ce16a497a792446db0e7 /vcl/jsdialog | |
parent | f1b5e0422b421de39c9fee9a87b6fceee8e48bbd (diff) |
jsdialog: implemented Expander widget
Change-Id: Ib0aee0e01c662a4d6a9231d9a1a951c9fa68eff4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106693
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl/jsdialog')
-rw-r--r-- | vcl/jsdialog/executor.cxx | 12 | ||||
-rw-r--r-- | vcl/jsdialog/jsdialogbuilder.cxx | 28 |
2 files changed, 40 insertions, 0 deletions
diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index 6ded26055270..24e3eb1f14d3 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -209,6 +209,18 @@ bool ExecuteAction(sal_uInt64 nWindowId, const OString& rWidget, StringMap& rDat } } } + else if (sControlType == "expander") + { + auto pExpander = dynamic_cast<weld::Expander*>(pWidget); + if (pExpander) + { + if (sAction == "toggle") + { + pExpander->set_expanded(!pExpander->get_expanded()); + return true; + } + } + } } return false; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index b72dae272500..4fb351b5439f 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -452,6 +452,20 @@ std::unique_ptr<weld::TreeView> JSInstanceBuilder::weld_tree_view(const OString& return pWeldWidget; } +std::unique_ptr<weld::Expander> JSInstanceBuilder::weld_expander(const OString& id) +{ + VclExpander* pExpander = m_xBuilder->get<VclExpander>(id); + auto pWeldWidget = pExpander + ? std::make_unique<JSExpander>(GetNotifierWindow(), GetContentWindow(), + pExpander, this, false, m_sTypeOfJSON) + : nullptr; + + if (pWeldWidget) + RememberWidget(id, pWeldWidget.get()); + + return pWeldWidget; +} + weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonType, @@ -779,4 +793,18 @@ void JSTreeView::select(int pos) enable_notify_events(); } +JSExpander::JSExpander(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow, + ::VclExpander* pExpander, SalInstanceBuilder* pBuilder, bool bTakeOwnership, + std::string sTypeOfJSON) + : JSWidget<SalInstanceExpander, ::VclExpander>(aNotifierWindow, aContentWindow, pExpander, + pBuilder, bTakeOwnership, sTypeOfJSON) +{ +} + +void JSExpander::set_expanded(bool bExpand) +{ + SalInstanceExpander::set_expanded(bExpand); + notifyDialogState(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |