summaryrefslogtreecommitdiff
path: root/vcl/jsdialog
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-11-17 14:32:04 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2020-11-26 18:12:10 +0100
commitf424bed38ce34a3f73dafb6de20632ed8275cf18 (patch)
tree9f73268f8070063c0a08ce16a497a792446db0e7 /vcl/jsdialog
parentf1b5e0422b421de39c9fee9a87b6fceee8e48bbd (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.cxx12
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx28
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: */