diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2022-06-02 08:21:14 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-06-02 09:22:50 +0200 |
commit | f23b0d206e80fe740a45611d719fbd3ec81bcf57 (patch) | |
tree | 5868d9445d69bd503654bd90996954965a0f2ef5 /sw/source/ui | |
parent | 294fe615e1adcbf20d750599094323725aefc9b8 (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.cxx | 60 |
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; |