diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-10-28 16:08:43 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-11-25 09:03:29 +0100 |
commit | 5335381e1b7d150c0e17333e4f171ae497f21007 (patch) | |
tree | dd693097ad284935296fc0c69207168a82c7ee96 /vcl/source/treelist | |
parent | dba2a0435fb8aa1c5a312261fc10959e824230c6 (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.cxx | 49 |
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() |