sfx2/source/sidebar/SidebarController.cxx |   26 ++++++++++++++++++++++++++
 vcl/inc/jsdialog/jsdialogbuilder.hxx      |    1 +
 vcl/jsdialog/jsdialogbuilder.cxx          |    6 ++++++
 vcl/source/window/toolbox2.cxx            |   18 +++++++++++++++++-
 4 files changed, 50 insertions(+), 1 deletion(-)

New commits:
commit 2ca212f93cb4ae1da84fa71bf70dde24784e8df7
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Tue Jul 6 14:15:17 2021 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Tue Aug 17 17:13:44 2021 +0200

    jsdialog: sidebar: send message on sidebar close
    
    Revert needed code removed in 64bd4dd
    
    Change-Id: If45facbd68ea8f3af433b78e127fbb0745e62c25
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118483
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120565
    Tested-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/sfx2/source/sidebar/SidebarController.cxx 
b/sfx2/source/sidebar/SidebarController.cxx
index fff93887c3a7..803d1c10a739 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -40,6 +40,7 @@
 #include <vcl/svapp.hxx>
 #include <splitwin.hxx>
 #include <tools/diagnose_ex.h>
+#include <tools/json_writer.hxx>
 #include <tools/link.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <comphelper/processfactory.hxx>
@@ -1229,6 +1230,31 @@ IMPL_LINK(SidebarController, OnSubMenuItemSelected, 
const OString&, rCurItemId,
 
 void SidebarController::RequestCloseDeck()
 {
+    if (comphelper::LibreOfficeKit::isActive() && mpCurrentDeck)
+    {
+        const SfxViewShell* pViewShell = SfxViewShell::Current();
+        if (pViewShell && pViewShell->isLOKMobilePhone())
+        {
+            // Mobile phone - TODO: unify with desktop
+            tools::JsonWriter aJsonWriter;
+            aJsonWriter.put("id", mpParentWindow->get_id());
+            aJsonWriter.put("type", "dockingwindow");
+            aJsonWriter.put("text", mpParentWindow->GetText());
+            aJsonWriter.put("enabled", false);
+            const std::string message = aJsonWriter.extractAsStdString();
+            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_JSDIALOG, 
message.c_str());
+        }
+        else if (pViewShell)
+        {
+            tools::JsonWriter aJsonWriter;
+            aJsonWriter.put("id", mpParentWindow->get_id());
+            aJsonWriter.put("action", "close");
+            aJsonWriter.put("jsontype", "sidebar");
+            const std::string message = aJsonWriter.extractAsStdString();
+            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_JSDIALOG, 
message.c_str());
+        }
+    }
+
     mbIsDeckRequestedOpen = false;
     UpdateDeckOpenState();
 
commit 1692ee279c7d0a6aa8210c923a6923c6919f46d3
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Tue Jul 6 11:50:38 2021 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Tue Aug 17 17:13:28 2021 +0200

    jsdialog: dump image for toolitems
    
    Change-Id: If47eb57cc18c6f04e5b2e3a14a6bcea657e03df8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118472
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120543
    Tested-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index cfc5e52e5bb9..8bfa06d0742b 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -568,6 +568,7 @@ public:
 
     virtual void set_menu_item_active(const OString& rIdent, bool bActive) 
override;
     virtual void set_item_sensitive(const OString& rIdent, bool bSensitive) 
override;
+    virtual void set_item_icon_name(const OString& rIdent, const OUString& 
rIconName) override;
 };
 
 class JSTextView final : public JSWidget<SalInstanceTextView, 
::VclMultiLineEdit>
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 4f0e6aa6bfc5..03087e4fd82a 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -1382,6 +1382,12 @@ void JSToolbar::set_item_sensitive(const OString& 
rIdent, bool bSensitive)
     sendUpdate();
 }
 
+void JSToolbar::set_item_icon_name(const OString& rIdent, const OUString& 
rIconName)
+{
+    SalInstanceToolbar::set_item_icon_name(rIdent, rIconName);
+    sendUpdate();
+}
+
 JSTextView::JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView,
                        SalInstanceBuilder* pBuilder, bool bTakeOwnership)
     : JSWidget<SalInstanceTextView, ::VclMultiLineEdit>(pSender, pTextView, 
pBuilder,
diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx
index 47bc4d1ff743..c3f53303e15a 100644
--- a/vcl/source/window/toolbox2.cxx
+++ b/vcl/source/window/toolbox2.cxx
@@ -21,9 +21,11 @@
 #include <vcl/uitest/logger.hxx>
 #include <sal/log.hxx>
 
+#include <comphelper/base64.hxx>
 #include <comphelper/processfactory.hxx>
 #include <boost/property_tree/ptree.hpp>
 
+#include <vcl/cvtgrf.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/idle.hxx>
 #include <vcl/bitmap.hxx>
@@ -1749,15 +1751,29 @@ void ToolBox::DumpAsPropertyTree(tools::JsonWriter& 
rJsonWriter)
             }
             else
             {
+                OUString sCommand = GetItemCommand(nId);
                 rJsonWriter.put("type", "toolitem");
                 rJsonWriter.put("text", GetItemText(nId));
-                rJsonWriter.put("command", GetItemCommand(nId));
+                rJsonWriter.put("command", sCommand);
                 if (!IsItemVisible(nId))
                     rJsonWriter.put("visible", false);
                 if (GetItemBits(nId) & ToolBoxItemBits::DROPDOWN)
                     rJsonWriter.put("dropdown", true);
                 if (!IsItemEnabled(nId))
                     rJsonWriter.put("enabled", false);
+
+                Image aImage = GetItemImage(nId);
+                if (!sCommand.startsWith(".uno:") && !!aImage)
+                {
+                    SvMemoryStream aOStm(6535, 6535);
+                    if(GraphicConverter::Export(aOStm, aImage.GetBitmapEx(), 
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);
+                        rJsonWriter.put("image", aBuffer.makeStringAndClear());
+                    }
+                }
             }
         }
     }

Reply via email to