kit/ChildSession.cpp                          |   10 +++++-----
 loleaflet/html/loleaflet.html.m4              |    1 +
 loleaflet/src/control/Control.Menubar.js      |   11 ++++++++++-
 loleaflet/src/control/Control.Toolbar.js      |   16 ++++++++++++++++
 loleaflet/src/control/Toolbar.js              |    4 ++++
 loleaflet/src/map/handler/Map.FileInserter.js |   15 +++++++++++++++
 loleaflet/src/unocommands.js                  |    7 +++++++
 wsd/LOOLWSD.cpp                               |    9 ++++++---
 wsd/protocol.txt                              |    4 ++++
 9 files changed, 68 insertions(+), 9 deletions(-)

New commits:
commit 887ecdb8d3e8301b67e249c88d8aab734c76fed1
Author:     Ashod Nakashian <[email protected]>
AuthorDate: Wed Sep 12 20:07:10 2018 -0400
Commit:     Ashod Nakashian <[email protected]>
CommitDate: Wed Nov 6 03:43:02 2019 +0100

    wsd: leaflet: Insert background
    
    This adds support for .uno:SelectBackground
    which inserts slide background image.
    
    (cherry picked from commit 30a77e7e490e4e83bb6423f41388ee9adbccfae3)
    
    Change-Id: I587b31f67d518aba348ae7e8d058ada23a61e858
    Reviewed-on: https://gerrit.libreoffice.org/67500
    Reviewed-by: Ashod Nakashian <[email protected]>
    Tested-by: Ashod Nakashian <[email protected]>

diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index f67e3a1c1..c2fc39a77 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -1156,12 +1156,12 @@ bool ChildSession::insertFile(const char* /*buffer*/, 
int /*length*/, const std:
     }
 #endif
 
-    if (type == "graphic" || type == "graphicurl")
+    if (type == "graphic" || type == "graphicurl" || type == 
"selectbackground")
     {
         std::string url;
 
 #if !MOBILEAPP
-        if (type == "graphic")
+        if (type == "graphic" || type == "selectbackground")
             url = "file://" + std::string(JAILED_DOCUMENT_ROOT) + 
"insertfile/" + name;
         else if (type == "graphicurl")
             URI::decode(name, url);
@@ -1176,8 +1176,8 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, const std:
         url = "file://" + tempFile;
 #endif
 
-        std::string command = ".uno:InsertGraphic";
-        std::string arguments = "{"
+        const std::string command = (type == "selectbackground" ? 
".uno:SelectBackground" : ".uno:InsertGraphic");
+        const std::string arguments = "{"
             "\"FileName\":{"
                 "\"type\":\"string\","
                 "\"value\":\"" + url + "\""
@@ -1185,7 +1185,7 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, const std:
 
         getLOKitDocument()->setView(_viewId);
 
-        LOG_TRC("Inserting graphic: '" << arguments.c_str() << "', '");
+        LOG_TRC("Inserting " << type << ": " << command << ' ' << 
arguments.c_str());
 
         getLOKitDocument()->postUnoCommand(command.c_str(), arguments.c_str(), 
false);
     }
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 3f5480c9a..3758a47a4 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -159,6 +159,7 @@ ifelse(MOBILEAPP,[true],
     </script>
 
     <input id="insertgraphic" type="file" style="position: fixed; top: -100em">
+    <input id="selectbackground" type="file" style="position: fixed; top: 
-100em">
 
     <div id="closebuttonwrapper">
       <div class="closebuttonimage" id="closebutton"></div>
diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index ef1ffa0f9..cb46986f4 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -287,6 +287,7 @@ L.Control.Menubar = L.Control.extend({
                        {name: _UNO('.uno:InsertMenu', 'presentation'), id: 
'insert', type: 'menu', menu: [
                                {name: _('Local Image...'), id: 
'insertgraphic', type: 'action'},
                                {name: _UNO('.uno:InsertGraphic', 
'presentation'), id: 'insertgraphicremote', type: 'action'},
+                               {name: _UNO('.uno:SelectBackground', 
'presentation'), id: 'selectbackground', type: 'action'},
                                {name: _UNO('.uno:InsertAnnotation', 
'presentation'), id: 'insertcomment', type: 'action'},
                                {uno: '.uno:InsertObjectChart'},
                                {type: 'separator'},
@@ -1071,6 +1072,8 @@ L.Control.Menubar = L.Control.extend({
                        L.DomUtil.get('insertgraphic').click();
                } else if (id === 'insertgraphicremote') {
                        this._map.fire('postMessage', {msgId: 
'UI_InsertGraphic'});
+               } else if (id === 'selectbackground') {
+                       L.DomUtil.get('selectbackground').click();
                } else if (id === 'zoomin' && this._map.getZoom() < 
this._map.getMaxZoom()) {
                        this._map.zoomIn(1);
                } else if (id === 'showresolved') {
diff --git a/loleaflet/src/control/Control.Toolbar.js 
b/loleaflet/src/control/Control.Toolbar.js
index 44f2659e7..ba07e8e67 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -1316,6 +1316,21 @@ function onInsertFile() {
        return false;
 }
 
+function onInsertBackground() {
+       var selectBackground = L.DomUtil.get('selectbackground');
+       if ('files' in selectBackground) {
+               for (var i = 0; i < selectBackground.files.length; i++) {
+                       var file = selectBackground.files[i];
+                       map.selectBackground(file);
+               }
+       }
+
+       // Set the value to null everytime so that onchange event is triggered,
+       // even if the same file is selected
+       selectBackground.value = null;
+       return false;
+}
+
 function onAddressInput(e) {
        if (e.keyCode === 13) {
                // address control should not have focus anymore
@@ -2378,6 +2393,7 @@ $(window).resize(function() {
 $(document).ready(function() {
        // Attach insert file action
        $('#insertgraphic').on('change', onInsertFile);
+       $('#selectbackground').on('change', onInsertBackground);
 });
 
 function setupToolbar(e) {
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index 7dda7e3bf..8c9ee5750 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -179,6 +179,10 @@ L.Map.include({
                this.fire('inserturl', {url: url});
        },
 
+       selectBackground: function (file) {
+               this.fire('selectbackground', {file: file});
+       },
+
        cellEnterString: function (string) {
                var command = {
                        'StringName': {
diff --git a/loleaflet/src/map/handler/Map.FileInserter.js 
b/loleaflet/src/map/handler/Map.FileInserter.js
index 728eb9ab0..5bf305ec0 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -16,6 +16,7 @@ L.Map.FileInserter = L.Handler.extend({
                this._childId = null;
                this._toInsert = {};
                this._toInsertURL = {};
+               this._toInsertBackground = {};
                var parser = document.createElement('a');
                parser.href = map.options.server;
        },
@@ -33,12 +34,14 @@ L.Map.FileInserter = L.Handler.extend({
                this._map.on('insertfile', this._onInsertFile, this);
                this._map.on('inserturl', this._onInsertURL, this);
                this._map.on('childid', this._onChildIdMsg, this);
+               this._map.on('selectbackground', this._onSelectBackground, 
this);
        },
 
        removeHooks: function () {
                this._map.off('insertfile', this._onInsertFile, this);
                this._map.off('inserturl', this._onInsertURL, this);
                this._map.off('childid', this._onChildIdMsg, this);
+               this._map.off('selectbackground', this._onSelectBackground, 
this);
        },
 
        _onInsertFile: function (e) {
@@ -61,6 +64,16 @@ L.Map.FileInserter = L.Handler.extend({
                }
        },
 
+       _onSelectBackground: function (e) {
+               if (!this._childId) {
+                       this._map._socket.sendMessage('getchildid');
+                       this._toInsertBackground[Date.now()] = e.file;
+               }
+               else {
+                       this._sendFile(Date.now(), e.file, 'selectbackground');
+               }
+       },
+
        _onChildIdMsg: function (e) {
                this._childId = e.id;
                for (var name in this._toInsert) {
@@ -88,6 +101,8 @@ L.Map.FileInserter = L.Handler.extend({
                        return;
                }
 
+               this._toInsertBackground = {};
+
                if (window.ThisIsAMobileApp) {
                        // Pass the file contents as a base64-encoded parameter 
in an insertfile message
                        var reader = new FileReader();
diff --git a/loleaflet/src/unocommands.js b/loleaflet/src/unocommands.js
index 6f16e3d06..e0422f479 100644
--- a/loleaflet/src/unocommands.js
+++ b/loleaflet/src/unocommands.js
@@ -206,6 +206,7 @@ var unoCommandsArray = {
        SaveAs:{global:{menu:_('Save ~As...'),},},
        SearchDialog:{global:{menu:_('Find & Rep~lace...'),},},
        SelectAll:{global:{menu:_('Select ~All'),},},
+       SelectBackground:{presentation:{menu:_('Set Background Image...'),},},
        
SelectTable:{presentation:{menu:_('~Select...'),},text:{menu:_('~Table'),},},
        SendToBack:{global:{menu:_('~Send to Back'),},},
        SetAnchorAtChar:{text:{menu:_('To ~Character'),},},
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 7bf4bb47c..9eb332b86 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2644,7 +2644,7 @@ private:
                             std::vector<char> saveasRequest(saveas.begin(), 
saveas.end());
                             clientSession->handleMessage(true, WSOpCode::Text, 
saveasRequest);
                         });
-                        });
+                    });
 
                     sent = true;
                 }
@@ -2691,11 +2691,11 @@ private:
                 // protect against attempts to inject something funny here
                 if (formChildid.find('/') == std::string::npos && 
formName.find('/') == std::string::npos)
                 {
-                    LOG_INF("Perform insertfile: " << formChildid << ", " << 
formName);
                     const std::string dirPath = LOOLWSD::ChildRoot + 
formChildid
                                               + JAILED_DOCUMENT_ROOT + 
"insertfile";
+                    const std::string fileName = dirPath + '/' + 
form.get("name");
+                    LOG_INF("Perform insertfile: " << formChildid << ", " << 
formName << ", filename: " << fileName);
                     File(dirPath).createDirectories();
-                    std::string fileName = dirPath + "/" + form.get("name");
                     File(handler.getFilename()).moveTo(fileName);
                     response.setContentLength(0);
                     socket->send(response);
@@ -3379,11 +3379,13 @@ int LOOLWSD::innerMain()
         LOG_FTL("Missing --systemplate option");
         throw MissingOptionException("systemplate");
     }
+
     if (LoTemplate.empty())
     {
         LOG_FTL("Missing --lotemplate option");
         throw MissingOptionException("lotemplate");
     }
+
     if (ChildRoot.empty())
     {
         LOG_FTL("Missing --childroot option");
@@ -3494,6 +3496,7 @@ int LOOLWSD::innerMain()
         }
 #endif
     }
+
     // Stop the listening to new connections
     // and wait until sockets close.
     LOG_INF("Stopping server socket listening. ShutdownRequestFlag: " <<
diff --git a/wsd/protocol.txt b/wsd/protocol.txt
index bf11deafd..6e097587b 100644
--- a/wsd/protocol.txt
+++ b/wsd/protocol.txt
@@ -70,6 +70,10 @@ insertfile name=<name> type=<type>
         type = 'graphicurl': The file is supposed to be downloaded by the core
                             itself; it does so from the URL provided in 'name'
 
+selectbackground name=<name>
+
+    Inserts a graphic file with the name <name> into the document as 
background.
+
 key type=<type> char=<charcode> key=<keycode>
 
     <type> is 'input' or 'up', <charcode> and <keycode> are numbers.
commit f86a1cb016d896903d6222dd886666bdeb80a7b0
Author:     Ashod Nakashian <[email protected]>
AuthorDate: Sat Aug 4 14:17:34 2018 -0400
Commit:     Ashod Nakashian <[email protected]>
CommitDate: Wed Nov 6 03:42:49 2019 +0100

    leaflet: add impress menus for sidebars
    
    (cherry picked from commit 3309b8b637488b0b20894f4d16be3e132efa8bee)
    
    Change-Id: Idc51426994cdbf679592c397122c1e4dfc314abe
    Reviewed-on: https://gerrit.libreoffice.org/81975
    Reviewed-by: Ashod Nakashian <[email protected]>
    Tested-by: Ashod Nakashian <[email protected]>

diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index 78d68fee0..ef1ffa0f9 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -276,7 +276,13 @@ L.Control.Menubar = L.Control.extend({
                                {name: _UNO('.uno:ZoomPlus', 'presentation'), 
id: 'zoomin', type: 'action'},
                                {name: _UNO('.uno:ZoomMinus', 'presentation'), 
id: 'zoomout', type: 'action'},
                                {name: _('Reset zoom'), id: 'zoomreset', type: 
'action'},
-                               {uno: '.uno:Sidebar'}
+                               {type: 'separator'},
+                               {uno: '.uno:SlideMasterPage'},
+                               {uno: '.uno:CloseMasterView'},
+                               {uno: '.uno:MasterSlidesPanel'},
+                               {uno: '.uno:ModifyPage'},
+                               {uno: '.uno:SlideChangeWindow'},
+                               {uno: '.uno:CustomAnimation'}
                        ]},
                        {name: _UNO('.uno:InsertMenu', 'presentation'), id: 
'insert', type: 'menu', menu: [
                                {name: _('Local Image...'), id: 
'insertgraphic', type: 'action'},
diff --git a/loleaflet/src/unocommands.js b/loleaflet/src/unocommands.js
index ed094f3b9..6f16e3d06 100644
--- a/loleaflet/src/unocommands.js
+++ b/loleaflet/src/unocommands.js
@@ -24,6 +24,7 @@ var unoCommandsArray = {
        ChangeCaseToUpper:{global:{menu:_('~UPPERCASE'),},},
        ChangesMenu:{global:{menu:_('Track Chan~ges'),},},
        ClearOutline:{global:{menu:_('~Remove Outline'),},},
+       CloseMasterView:{presentation:{menu:_('Close Master View'),},},
        ColorScaleFormatDialog:{spreadsheet:{menu:_('Color Scale...'),},},
        CommonAlignBottom:{global:{menu:_('Bottom'),},},
        CommonAlignHorizontalCenter:{global:{menu:_('Centered'),},},
@@ -40,6 +41,7 @@ var unoCommandsArray = {
        ControlCodes:{text:{menu:_('For~matting Marks'),},},
        Copy:{global:{menu:_('Cop~y'),},},
        CopyHyperlinkLocation:{global:{menu:_('Copy Hyperlink Location'),},},
+       CustomAnimation:{presentation:{menu:_('Animation'),},},
        Cut:{global:{menu:_('~Cut'),},},
        DataBarFormatDialog:{spreadsheet:{menu:_('Data Bar...'),},},
        DataFilterAutoFilter:{spreadsheet:{menu:_('Auto~Filter'),},},
@@ -155,6 +157,7 @@ var unoCommandsArray = {
        LayoutStatus:{presentation:{menu:_('Layout'),},},
        LeftPara:{global:{context:_('Align Left'),menu:_('Left'),},},
        MergeCells:{presentation:{menu:_('Merge 
Cells'),},spreadsheet:{menu:_('Merge Cells'),},text:{menu:_('Merge Cells'),},},
+       ModifyPage:{presentation:{menu:_('Slide ~Layout'),},},
        MoveDown:{text:{menu:_('Move Down'),},},
        MoveDownSubItems:{text:{menu:_('Move Down with Subpoints'),},},
        MoveUp:{text:{menu:_('Move Up'),},},
@@ -226,6 +229,9 @@ var unoCommandsArray = {
        ShowTrackedChanges:{text:{menu:_('~Show'),},},
        Shrink:{global:{menu:_('Decrease Size'),},},
        Sidebar:{global:{menu:_('Sidebar'),},},
+       SlideChangeWindow:{presentation:{menu:_('Slide Transition'),},},
+       SlideMasterPage:{presentation:{menu:_('~Master Slide'),},},
+       MasterSlidesPanel:{presentation:{menu:_('Master Slides'),},},
        SlideMenu:{presentation:{menu:_('S~lide'),},},
        SlideShowMenu:{presentation:{menu:_('~Slide Show'),},},
        SmallCaps:{global:{menu:_('Small capitals'),},},
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to