summaryrefslogtreecommitdiff
path: root/vcl/source/treelist
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-10-28 16:08:43 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2020-11-25 09:03:29 +0100
commit5335381e1b7d150c0e17333e4f171ae497f21007 (patch)
treedd693097ad284935296fc0c69207168a82c7ee96 /vcl/source/treelist
parentdba2a0435fb8aa1c5a312261fc10959e824230c6 (diff)
jsdialog: dump treelistview
Change-Id: Id6152a1b96a92a8ee863e1426d458b9f81605065 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106535 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl/source/treelist')
-rw-r--r--vcl/source/treelist/svtabbx.cxx49
1 files changed, 49 insertions, 0 deletions
diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx
index a789607a2193..fdae20554120 100644
--- a/vcl/source/treelist/svtabbx.cxx
+++ b/vcl/source/treelist/svtabbx.cxx
@@ -32,6 +32,7 @@
#include <strings.hrc>
#include <svdata.hxx>
#include <memory>
+#include <tools/json_writer.hxx>
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::accessibility;
@@ -39,6 +40,54 @@ using namespace ::com::sun::star::accessibility;
constexpr SvLBoxTabFlags MYTABMASK =
SvLBoxTabFlags::ADJUST_RIGHT | SvLBoxTabFlags::ADJUST_LEFT | SvLBoxTabFlags::ADJUST_CENTER | SvLBoxTabFlags::FORCE;
+static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter,
+ SvTreeListEntry* pEntry,
+ SvTabListBox* pTabListBox,
+ bool bCheckButtons)
+{
+ while (pEntry)
+ {
+ auto aNode = rJsonWriter.startStruct();
+
+ const SvLBoxItem* pIt = pEntry->GetFirstItem(SvLBoxItemType::String);
+ if (pIt)
+ rJsonWriter.put("text", static_cast<const SvLBoxString*>(pIt)->GetText());
+
+ if (bCheckButtons)
+ {
+ SvButtonState eCheckState = pTabListBox->GetCheckButtonState(pEntry);
+ if (eCheckState == SvButtonState::Unchecked)
+ rJsonWriter.put("state", "false");
+ else if (eCheckState == SvButtonState::Checked)
+ rJsonWriter.put("state", "true");
+ }
+
+ if (pTabListBox->IsSelected(pEntry))
+ rJsonWriter.put("selected", "true");
+
+ rJsonWriter.put("row", OString::number(pTabListBox->GetModel()->GetAbsPos(pEntry)).getStr());
+
+ SvTreeListEntry* pChild = pTabListBox->FirstChild(pEntry);
+ if (pChild)
+ {
+ auto childrenNode = rJsonWriter.startArray("children");
+ lcl_DumpEntryAndSiblings(rJsonWriter, pChild, pTabListBox, bCheckButtons);
+ }
+
+ pEntry = pEntry->NextSibling();
+ }
+}
+
+void SvTabListBox::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter)
+{
+ SvTreeListBox::DumpAsPropertyTree(rJsonWriter);
+
+ bool bCheckButtons = static_cast<int>(nTreeFlags & SvTreeFlags::CHKBTN);
+
+ auto entriesNode = rJsonWriter.startArray("entries");
+ lcl_DumpEntryAndSiblings(rJsonWriter, First(), this, bCheckButtons);
+}
+
// SvTreeListBox callback
void SvTabListBox::SetTabs()