[Libreoffice-commits] core.git: vcl/inc vcl/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jan 14 09:23:28 UTC 2021
vcl/inc/iconview.hxx | 1
vcl/source/treelist/iconview.cxx | 59 +++++++++++++++++++++++++++++++++++++++
2 files changed, 60 insertions(+)
New commits:
commit 26f246c0203b7ee9f92a321f6bd7ed9173b85fc0
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Jan 8 10:54:14 2021 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Jan 14 10:22:43 2021 +0100
jsdialog: dump IconView
Change-Id: I82df1f5e5f966e764b768044526b3401d55fc394
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108984
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109256
Tested-by: Jenkins
diff --git a/vcl/inc/iconview.hxx b/vcl/inc/iconview.hxx
index f10b0ed8a53e..c1e62bc2ec65 100644
--- a/vcl/inc/iconview.hxx
+++ b/vcl/inc/iconview.hxx
@@ -35,6 +35,7 @@ public:
vcl::RenderContext& rRenderContext);
virtual FactoryFunction GetUITestFactory() const override;
+ virtual void DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) override;
};
#endif
diff --git a/vcl/source/treelist/iconview.cxx b/vcl/source/treelist/iconview.cxx
index b6dd3da1c40a..7786a6976c2a 100644
--- a/vcl/source/treelist/iconview.cxx
+++ b/vcl/source/treelist/iconview.cxx
@@ -22,6 +22,11 @@
#include <iconview.hxx>
#include "iconviewimpl.hxx"
#include <vcl/uitest/uiobject.hxx>
+#include <tools/json_writer.hxx>
+#include <vcl/toolkit/svlbitm.hxx>
+#include <tools/stream.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <comphelper/base64.hxx>
IconView::IconView(vcl::Window* pParent, WinBits nBits)
: SvTreeListBox(pParent, nBits)
@@ -218,4 +223,58 @@ void IconView::PaintEntry(SvTreeListEntry& rEntry, tools::Long nX, tools::Long n
FactoryFunction IconView::GetUITestFactory() const { return IconViewUIObject::create; }
+static OUString extractPngString(const SvLBoxContextBmp* pBmpItem)
+{
+ BitmapEx aImage = pBmpItem->GetBitmap1().GetBitmapEx();
+ SvMemoryStream aOStm(65535, 65535);
+ if (GraphicConverter::Export(aOStm, aImage, ConvertDataFormat::PNG) == ERRCODE_NONE)
+ {
+ css::uno::Sequence<sal_Int8> aSeq(static_cast<sal_Int8 const*>(aOStm.GetData()),
+ aOStm.Tell());
+ OUStringBuffer aBuffer("data:image/png;base64,");
+ ::comphelper::Base64::encode(aBuffer, aSeq);
+ return aBuffer.makeStringAndClear();
+ }
+
+ return "";
+}
+
+static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, SvTreeListEntry* pEntry,
+ SvTreeListBox* pTabListBox)
+{
+ while (pEntry)
+ {
+ auto aNode = rJsonWriter.startStruct();
+
+ // simple listbox value
+ const SvLBoxItem* pIt = pEntry->GetFirstItem(SvLBoxItemType::String);
+ if (pIt)
+ rJsonWriter.put("text", static_cast<const SvLBoxString*>(pIt)->GetText());
+
+ pIt = pEntry->GetFirstItem(SvLBoxItemType::ContextBmp);
+ if (pIt)
+ {
+ const SvLBoxContextBmp* pBmpItem = static_cast<const SvLBoxContextBmp*>(pIt);
+ if (pBmpItem)
+ rJsonWriter.put("image", extractPngString(pBmpItem));
+ }
+
+ if (pTabListBox->IsSelected(pEntry))
+ rJsonWriter.put("selected", "true");
+
+ rJsonWriter.put("row",
+ OString::number(pTabListBox->GetModel()->GetAbsPos(pEntry)).getStr());
+
+ pEntry = pEntry->NextSibling();
+ }
+}
+
+void IconView::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter)
+{
+ SvTreeListBox::DumpAsPropertyTree(rJsonWriter);
+ rJsonWriter.put("type", "iconview");
+ auto aNode = rJsonWriter.startArray("entries");
+ lcl_DumpEntryAndSiblings(rJsonWriter, First(), this);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list