summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2022-10-19 08:44:38 +0200
committerMiklos Vajna <vmiklos@collabora.com>2022-10-20 10:55:23 +0200
commit8f36736f511215deff3a7d5479f23ad58266b0bc (patch)
treecceee361c720d89a24da2a9b16a64c9b26079a8f
parentff7b81697250b12044556dedd45ac1be3dc8037d (diff)
sw content controls, alias and tag: add UI
- add 2 new weld::Entry instances to edit these strings + matching labels - extend the grid to have 2 columns, as previously only a checkbox was there for all content controls, which only needed a single column, but now we want label + entry pairs in later rows - cover this with a UITest (cherry picked from commit add110bad816fadeb96e7af0d4689389c04c263e) Change-Id: Ia5cfb90725d3b5b40eccf15ec7c7823e0e6d6751 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141545 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--sw/qa/uitest/ui/misc/misc.py11
-rw-r--r--sw/source/ui/misc/contentcontroldlg.cxx26
-rw-r--r--sw/source/uibase/inc/contentcontroldlg.hxx2
-rw-r--r--sw/uiconfig/swriter/ui/contentcontroldlg.ui51
4 files changed, 89 insertions, 1 deletions
diff --git a/sw/qa/uitest/ui/misc/misc.py b/sw/qa/uitest/ui/misc/misc.py
index cf4554ce9638..2b6307cefb61 100644
--- a/sw/qa/uitest/ui/misc/misc.py
+++ b/sw/qa/uitest/ui/misc/misc.py
@@ -10,6 +10,7 @@
"""Covers sw/source/ui/misc/ fixes."""
from uitest.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict
from uitest.uihelper.common import type_text
@@ -23,6 +24,8 @@ class TestTmpdlg(UITestCase):
portions = paragraph.createEnumeration()
portion = portions.nextElement()
contentControl = portion.ContentControl
+ contentControl.Alias = "my alias"
+ contentControl.Tag = "my tag"
listItems = contentControl.ListItems
self.assertEqual(len(listItems), 1)
self.assertEqual(listItems[0][0].Name, "DisplayText")
@@ -32,6 +35,12 @@ class TestTmpdlg(UITestCase):
# Append a new list item.
with self.ui_test.execute_dialog_through_command(".uno:ContentControlProperties") as xDialog:
+ xAlias = xDialog.getChild("aliasentry")
+ self.assertEqual(get_state_as_dict(xAlias)['Text'], "my alias")
+ type_text(xAlias, "new alias ")
+ xTag = xDialog.getChild("tagentry")
+ self.assertEqual(get_state_as_dict(xTag)['Text'], "my tag")
+ type_text(xTag, "new tag ")
xAdd = xDialog.getChild("add")
with self.ui_test.execute_blocking_action(xAdd.executeAction, args=('CLICK', ())) as xSubDialog:
xDisplayName = xSubDialog.getChild("displayname")
@@ -46,6 +55,8 @@ class TestTmpdlg(UITestCase):
self.assertEqual(listItems[1][0].Value, "Foo Bar")
self.assertEqual(listItems[1][1].Name, "Value")
self.assertEqual(listItems[1][1].Value, "foo-bar")
+ self.assertEqual(contentControl.Alias, "new alias my alias")
+ self.assertEqual(contentControl.Tag, "new tag my tag")
# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/source/ui/misc/contentcontroldlg.cxx b/sw/source/ui/misc/contentcontroldlg.cxx
index 5e4347e62afb..5770bf1bd6bd 100644
--- a/sw/source/ui/misc/contentcontroldlg.cxx
+++ b/sw/source/ui/misc/contentcontroldlg.cxx
@@ -38,6 +38,8 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt
"ContentControlDialog")
, m_rWrtShell(rWrtShell)
, m_xShowingPlaceHolderCB(m_xBuilder->weld_check_button("showing_place_holder"))
+ , m_xAlias(m_xBuilder->weld_entry("aliasentry"))
+ , m_xTag(m_xBuilder->weld_entry("tagentry"))
, m_xCheckboxFrame(m_xBuilder->weld_frame("checkboxframe"))
, m_xCheckedState(m_xBuilder->weld_entry("checkboxcheckedentry"))
, m_xCheckedStateBtn(m_xBuilder->weld_button("btncheckboxchecked"))
@@ -94,6 +96,18 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt
m_xShowingPlaceHolderCB->set_state(eShowingPlaceHolder);
m_xShowingPlaceHolderCB->save_state();
+ if (!m_pContentControl->GetAlias().isEmpty())
+ {
+ m_xAlias->set_text(m_pContentControl->GetAlias());
+ m_xAlias->save_value();
+ }
+
+ if (!m_pContentControl->GetTag().isEmpty())
+ {
+ m_xTag->set_text(m_pContentControl->GetTag());
+ m_xTag->save_value();
+ }
+
if (m_pContentControl->GetCheckbox())
{
m_xCheckedState->set_text(m_pContentControl->GetCheckedState());
@@ -176,6 +190,18 @@ IMPL_LINK_NOARG(SwContentControlDlg, OkHdl, weld::Button&, void)
bChanged = true;
}
+ if (m_xAlias->get_value_changed_from_saved())
+ {
+ m_pContentControl->SetAlias(m_xAlias->get_text());
+ bChanged = true;
+ }
+
+ if (m_xTag->get_value_changed_from_saved())
+ {
+ m_pContentControl->SetTag(m_xTag->get_text());
+ bChanged = true;
+ }
+
if (m_xCheckedState->get_value_changed_from_saved())
{
m_pContentControl->SetCheckedState(m_xCheckedState->get_text());
diff --git a/sw/source/uibase/inc/contentcontroldlg.hxx b/sw/source/uibase/inc/contentcontroldlg.hxx
index 7654e3d6befb..df4830e7cd9f 100644
--- a/sw/source/uibase/inc/contentcontroldlg.hxx
+++ b/sw/source/uibase/inc/contentcontroldlg.hxx
@@ -37,6 +37,8 @@ class SwContentControlDlg final : public SfxDialogController
std::vector<SwContentControlListItem> m_aSavedListItems;
std::unique_ptr<weld::CheckButton> m_xShowingPlaceHolderCB;
+ std::unique_ptr<weld::Entry> m_xAlias;
+ std::unique_ptr<weld::Entry> m_xTag;
std::unique_ptr<weld::Frame> m_xCheckboxFrame;
std::unique_ptr<weld::Entry> m_xCheckedState;
std::unique_ptr<weld::Button> m_xCheckedStateBtn;
diff --git a/sw/uiconfig/swriter/ui/contentcontroldlg.ui b/sw/uiconfig/swriter/ui/contentcontroldlg.ui
index ef6b2081426c..caf30206c961 100644
--- a/sw/uiconfig/swriter/ui/contentcontroldlg.ui
+++ b/sw/uiconfig/swriter/ui/contentcontroldlg.ui
@@ -91,7 +91,7 @@
</packing>
</child>
<child>
- <!-- n-columns=1 n-rows=1 -->
+ <!-- n-columns=2 n-rows=3 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -111,6 +111,55 @@
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="aliaslabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="contentcontroldlg|aliaslabel">Title:</property>
+ <property name="mnemonic-widget">aliasentry</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="taglabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="contentcontroldlg|taglabel">Tag:</property>
+ <property name="mnemonic-widget">tagentry</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="aliasentry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="truncate-multiline">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="tagentry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="truncate-multiline">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
</packing>
</child>
</object>