summaryrefslogtreecommitdiff
path: root/sw/source/ui
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2022-06-02 08:21:14 +0200
committerMiklos Vajna <vmiklos@collabora.com>2022-06-02 09:22:50 +0200
commitf23b0d206e80fe740a45611d719fbd3ec81bcf57 (patch)
tree5868d9445d69bd503654bd90996954965a0f2ef5 /sw/source/ui
parent294fe615e1adcbf20d750599094323725aefc9b8 (diff)
sw content controls, checkbox: add properties dialog
- add a new m_xCheckboxFrame to SwContentControlDlg that contains all the checkbox-related widgets - hide this frame for non-checkbox content controls - load the checked & unchecked states into entries to show their current value - provide buttons to easily pick special characters using SvxCharacterMap Change-Id: I8f2ad862d1102bac0198360d40cfe8b653ce4ccd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135286 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'sw/source/ui')
-rw-r--r--sw/source/ui/misc/contentcontroldlg.cxx60
1 files changed, 60 insertions, 0 deletions
diff --git a/sw/source/ui/misc/contentcontroldlg.cxx b/sw/source/ui/misc/contentcontroldlg.cxx
index 49157fdec606..2d713b0091f4 100644
--- a/sw/source/ui/misc/contentcontroldlg.cxx
+++ b/sw/source/ui/misc/contentcontroldlg.cxx
@@ -20,6 +20,7 @@
#include <contentcontroldlg.hxx>
#include <vcl/weld.hxx>
+#include <cui/cuicharmap.hxx>
#include <wrtsh.hxx>
#include <ndtxt.hxx>
@@ -34,6 +35,11 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt
"ContentControlDialog")
, m_rWrtShell(rWrtShell)
, m_xShowingPlaceHolderCB(m_xBuilder->weld_check_button("showing_place_holder"))
+ , m_xCheckboxFrame(m_xBuilder->weld_frame("checkboxframe"))
+ , m_xCheckedState(m_xBuilder->weld_entry("checkboxcheckedentry"))
+ , m_xCheckedStateBtn(m_xBuilder->weld_button("btncheckboxchecked"))
+ , m_xUncheckedState(m_xBuilder->weld_entry("checkboxuncheckedentry"))
+ , m_xUncheckedStateBtn(m_xBuilder->weld_button("btncheckboxunchecked"))
, m_xListItemsFrame(m_xBuilder->weld_frame("listitemsframe"))
, m_xListItems(m_xBuilder->weld_tree_view("listitems"))
, m_xListItemButtons(m_xBuilder->weld_box("listitembuttons"))
@@ -44,6 +50,8 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt
, m_xMoveDownBtn(m_xBuilder->weld_button("movedown"))
, m_xOk(m_xBuilder->weld_button("ok"))
{
+ m_xCheckedStateBtn->connect_clicked(LINK(this, SwContentControlDlg, SelectCharHdl));
+ m_xUncheckedStateBtn->connect_clicked(LINK(this, SwContentControlDlg, SelectCharHdl));
m_xListItems->connect_changed(LINK(this, SwContentControlDlg, SelectionChangedHdl));
m_xOk->connect_clicked(LINK(this, SwContentControlDlg, OkHdl));
@@ -81,6 +89,18 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt
m_xShowingPlaceHolderCB->set_state(eShowingPlaceHolder);
m_xShowingPlaceHolderCB->save_state();
+ if (m_pContentControl->GetCheckbox())
+ {
+ m_xCheckedState->set_text(m_pContentControl->GetCheckedState());
+ m_xCheckedState->save_value();
+ m_xUncheckedState->set_text(m_pContentControl->GetUncheckedState());
+ m_xUncheckedState->save_value();
+ }
+ else
+ {
+ m_xCheckboxFrame->set_visible(false);
+ }
+
if (m_pContentControl->HasListItems())
{
for (const auto& rListItem : m_pContentControl->GetListItems())
@@ -115,6 +135,16 @@ IMPL_LINK_NOARG(SwContentControlDlg, OkHdl, weld::Button&, void)
bChanged = true;
}
+ if (m_xCheckedState->get_value_changed_from_saved())
+ {
+ m_pContentControl->SetCheckedState(m_xCheckedState->get_text());
+ }
+
+ if (m_xUncheckedState->get_value_changed_from_saved())
+ {
+ m_pContentControl->SetUncheckedState(m_xUncheckedState->get_text());
+ }
+
std::vector<SwContentControlListItem> aItems;
for (int i = 0; i < m_xListItems->n_children(); ++i)
{
@@ -137,6 +167,36 @@ IMPL_LINK_NOARG(SwContentControlDlg, OkHdl, weld::Button&, void)
m_xDialog->response(RET_OK);
}
+IMPL_LINK(SwContentControlDlg, SelectCharHdl, weld::Button&, rButton, void)
+{
+ SvxCharacterMap aMap(m_xDialog.get(), nullptr, nullptr);
+ sal_UCS4 cBullet = 0;
+ sal_Int32 nIndex = 0;
+ if (&rButton == m_xCheckedStateBtn.get())
+ {
+ cBullet = m_pContentControl->GetCheckedState().iterateCodePoints(&nIndex);
+ }
+ else if (&rButton == m_xUncheckedStateBtn.get())
+ {
+ cBullet = m_pContentControl->GetUncheckedState().iterateCodePoints(&nIndex);
+ }
+ aMap.SetChar(cBullet);
+ if (aMap.run() != RET_OK)
+ {
+ return;
+ }
+
+ cBullet = aMap.GetChar();
+ if (&rButton == m_xCheckedStateBtn.get())
+ {
+ m_xCheckedState->set_text(OUString(&cBullet, 1));
+ }
+ else if (&rButton == m_xUncheckedStateBtn.get())
+ {
+ m_xUncheckedState->set_text(OUString(&cBullet, 1));
+ }
+}
+
IMPL_LINK_NOARG(SwContentControlDlg, InsertHdl, weld::Button&, void)
{
SwContentControlListItem aItem;