vcl/inc/verticaltabctrl.hxx   |    4 +++
 vcl/source/control/ivctrl.cxx |   44 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

New commits:
commit 407297d9c592479d9fc90033876cad96206f9259
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Thu Aug 17 10:21:57 2023 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Mon Aug 28 10:19:03 2023 +0200

    jsdialog: dump vertical tab control
    
    Change-Id: I673199dfd7e95bfdb748791db094e7a1c3e74dba
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155759
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Attila Szűcs <attila.sz...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156158
    Tested-by: Jenkins
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/vcl/inc/verticaltabctrl.hxx b/vcl/inc/verticaltabctrl.hxx
index df05cfdf72b5..c5942799b381 100644
--- a/vcl/inc/verticaltabctrl.hxx
+++ b/vcl/inc/verticaltabctrl.hxx
@@ -22,6 +22,8 @@
 #include <memory>
 #include <string_view>
 
+#include <tools/json_writer.hxx>
+
 #include <vcl/toolkit/ivctrl.hxx>
 #include <vcl/layout.hxx>
 
@@ -78,6 +80,8 @@ public:
 
     vcl::Window* GetPageParent() { return m_xBox.get(); }
 
+    virtual void DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) override;
+
     virtual FactoryFunction GetUITestFactory() const override;
 };
 
diff --git a/vcl/source/control/ivctrl.cxx b/vcl/source/control/ivctrl.cxx
index 8a7e111f1581..a2f502ff81dc 100644
--- a/vcl/source/control/ivctrl.cxx
+++ b/vcl/source/control/ivctrl.cxx
@@ -627,6 +627,50 @@ void VerticalTabControl::SetPageText(std::u16string_view 
rPageId, const OUString
     pData->pEntry->SetText(rText);
 }
 
+void VerticalTabControl::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter)
+{
+    rJsonWriter.put("id", get_id());
+    rJsonWriter.put("type", "tabcontrol");
+    rJsonWriter.put("vertical", true);
+    rJsonWriter.put("selected", GetCurPageId());
+
+    {
+        auto childrenNode = rJsonWriter.startArray("children");
+        for (int i = 0; i < GetPageCount(); i++)
+        {
+            VclPtr<vcl::Window> pChild = GetPage(GetPageId(i));
+
+            if (pChild)
+            {
+                if (!pChild->GetChildCount())
+                    continue;
+
+                auto aChildNode = rJsonWriter.startStruct();
+                pChild->DumpAsPropertyTree(rJsonWriter);
+            }
+        }
+    }
+    {
+        auto tabsNode = rJsonWriter.startArray("tabs");
+        for(int i = 0; i < GetPageCount(); i++)
+        {
+            VclPtr<vcl::Window> pChild = GetPage(GetPageId(i));
+
+            if (pChild)
+            {
+                if (!pChild->GetChildCount())
+                    continue;
+
+                auto aTabNode = rJsonWriter.startStruct();
+                auto sId = GetPageId(i);
+                rJsonWriter.put("text", GetPageText(sId));
+                rJsonWriter.put("id", sId);
+                rJsonWriter.put("name", GetPageText(sId));
+            }
+        }
+    }
+}
+
 FactoryFunction VerticalTabControl::GetUITestFactory() const
 {
     return VerticalTabControlUIObject::create;

Reply via email to