vcl/inc/iconview.hxx | 2 + vcl/source/treelist/iconview.cxx | 63 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+)
New commits: commit bd882120ce84510f7a5272ecdbf59a5947ea2d45 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Fri Jan 8 10:54:14 2021 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Jan 12 10:32:57 2021 +0100 jsdialog: dump IconView Change-Id: I82df1f5e5f966e764b768044526b3401d55fc394 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108984 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/vcl/inc/iconview.hxx b/vcl/inc/iconview.hxx index 750f7ec6ebf0..087d0fb900b9 100644 --- a/vcl/inc/iconview.hxx +++ b/vcl/inc/iconview.hxx @@ -32,6 +32,8 @@ public: virtual tools::Rectangle GetFocusRect( SvTreeListEntry*, long nEntryPos ) override; void PaintEntry( SvTreeListEntry&, long nX, long nY, vcl::RenderContext& rRenderContext); + + virtual boost::property_tree::ptree DumpAsPropertyTree() override; }; #endif diff --git a/vcl/source/treelist/iconview.cxx b/vcl/source/treelist/iconview.cxx index 45740a38cde5..cda30201fa2f 100644 --- a/vcl/source/treelist/iconview.cxx +++ b/vcl/source/treelist/iconview.cxx @@ -21,6 +21,11 @@ #include <vcl/viewdataentry.hxx> #include <iconview.hxx> #include "iconviewimpl.hxx" +#include <boost/property_tree/ptree.hpp> +#include <vcl/svlbitm.hxx> +#include <tools/stream.hxx> +#include <vcl/cvtgrf.hxx> +#include <comphelper/base64.hxx> IconView::IconView( vcl::Window* pParent, WinBits nBits ) : SvTreeListBox( pParent, nBits ) @@ -221,4 +226,62 @@ void IconView::PaintEntry(SvTreeListEntry& rEntry, long nX, long nY, } } +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 boost::property_tree::ptree lcl_DumpEntryAndSiblings(SvTreeListEntry* pEntry, + SvTreeListBox* pTabListBox) +{ + boost::property_tree::ptree aEntries; + + while (pEntry) + { + boost::property_tree::ptree aEntry; + + // simple listbox value + const SvLBoxItem* pIt = pEntry->GetFirstItem(SvLBoxItemType::String); + if (pIt) + aEntry.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) + aEntry.put("image", extractPngString(pBmpItem)); + } + + if (pTabListBox->IsSelected(pEntry)) + aEntry.put("selected", "true"); + + aEntry.put("row", OString::number(pTabListBox->GetModel()->GetAbsPos(pEntry)).getStr()); + + aEntries.push_back(std::make_pair("", aEntry)); + + pEntry = pEntry->NextSibling(); + } + + return aEntries; +} + +boost::property_tree::ptree IconView::DumpAsPropertyTree() +{ + boost::property_tree::ptree aTree = SvTreeListBox::DumpAsPropertyTree(); + aTree.put("type", "iconview"); + aTree.push_back(std::make_pair("entries", lcl_DumpEntryAndSiblings(First(), this))); + return aTree; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits