loleaflet/src/control/Control.JSDialogBuilder.js |   12 +--
 loleaflet/src/control/Control.MobileWizard.js    |   81 +++++++++--------------
 2 files changed, 40 insertions(+), 53 deletions(-)

New commits:
commit 7c29eb06ea2b8dad91a7836be3c387565658ad45
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Thu Jan 9 14:56:43 2020 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Thu Jan 9 23:31:18 2020 +0100

    panel/wizard: adapt to new simpler 'deck' and 'panel' hierarchy.
    
    Avoid lots of indirection and complexity based on the new,
    simplified sidebar JSON hierarchy from the core.
    
    Change-Id: I73d5c6af30d40e9a430e0f3df3b78b620f425e39
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/86510
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js 
b/loleaflet/src/control/Control.JSDialogBuilder.js
index b704ddfdf..d4f58b470 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -1518,16 +1518,14 @@ L.Control.JSDialogBuilder = L.Control.extend({
                        var childObject = needsToCreateContainer ? 
L.DomUtil.createWithId('div', childData.id, parent) : parent;
 
                        var handler = this._controlHandlers[childType];
-                       var twoPanelsAsChildren = childData.children
-                               && (childData.children.length == 4 || 
childData.children.length == 5)
-                               && childData.children[0] && 
childData.children[0].type == 'panel'
-                               && childData.children[2] && 
childData.children[2].type == 'panel';
+                       var twoPanelsAsChildren =
+                           childData.children && childData.children.length == 2
+                           && childData.children[0] && 
childData.children[0].type == 'panel'
+                           && childData.children[1] && 
childData.children[1].type == 'panel';
 
                        if (twoPanelsAsChildren) {
-                               var tabsData = [childData.children[0], 
childData.children[2]];
-
                                handler = this._controlHandlers['paneltabs'];
-                               processChildren = handler(childObject, 
tabsData, this);
+                               processChildren = handler(childObject, 
childData.children, this);
                        } else {
                                if (handler)
                                        processChildren = handler(childObject, 
childData, this);
diff --git a/loleaflet/src/control/Control.MobileWizard.js 
b/loleaflet/src/control/Control.MobileWizard.js
index d8145c05a..f07da4911 100644
--- a/loleaflet/src/control/Control.MobileWizard.js
+++ b/loleaflet/src/control/Control.MobileWizard.js
@@ -248,9 +248,8 @@ L.Control.MobileWizard = L.Control.extend({
 
        _onMobileWizard: function(data) {
                if (data) {
-                       var isSidebar = data.id !== 'insert' && data.id !== 
'menubar'
-                               && data.id !== 'insertshape' && data.id !== 
'funclist'
-                               && data.executionType !== 'menu';
+                       var isSidebar = (data.children && data.children.length 
>= 1 &&
+                                        data.children[0].type == 'deck');
 
                        if (!this._isActive && isSidebar) {
                                if (this.map.showSidebar == false)
@@ -271,10 +270,9 @@ L.Control.MobileWizard = L.Control.extend({
                        this._showWizard();
                        this._hideKeyboard();
 
-                       // We can change the sidebar as we want here
-                       if (data.id === '') { // sidebar indicator
+                       // Morph the sidebar into something prettier
+                       if (isSidebar)
                                this._modifySidebarLayout(data);
-                       }
 
                        L.control.jsDialogBuilder({mobileWizard: this, map: 
this.map}).build(this.content.get(0), [data]);
 
@@ -309,53 +307,44 @@ L.Control.MobileWizard = L.Control.extend({
        },
 
        _modifySidebarLayout: function (data) {
-               this._mergeStylesAndTextPropertyPanels(data);
-               this._removeItems(data, ['editcontour']);
-       },
-
-       _mergeStylesAndTextPropertyPanels: function (data) {
-               var stylesChildren = this._removeStylesPanelAndGetContent(data);
-               if (stylesChildren !== null) {
-                       this._addChildrenToTextPanel(data, stylesChildren);
-               }
-       },
-
-       _removeStylesPanelAndGetContent: function (data) {
-               if (data.children) {
-                       for (var i = 0; i < data.children.length; i++) {
-                               if (data.children[i].type === 'panel' && 
data.children[i].children &&
-                                       data.children[i].children.length > 0 && 
data.children[i].children[0].id === 'SidebarStylesPanel') {
-                                       var ret = 
data.children[i].children[0].children;
-                                       data.children.splice(i, 2);
-                                       return ret;
-                               }
-
-                               var childReturn = 
this._removeStylesPanelAndGetContent(data.children[i]);
-                               if (childReturn !== null) {
-                                       return childReturn;
-                               }
+               var deck = this._findItemByTypeRecursive(data, 'deck');
+               if (deck)
+               {
+                       // merge styles into text-panel for elegance
+                       var stylesIdx = this._findIdxInParentById(deck, 
'SidebarStylesPanel');
+                       var textIdx = this._findIdxInParentById(deck, 
'SidebarTextPanel');
+                       if (stylesIdx >= 0 && textIdx >= 0)
+                       {
+                               var moveContent = 
deck.children[stylesIdx].children;
+                               deck.children.splice(stylesIdx, 1); // remove
+                               textIdx = this._findIdxInParentById(deck, 
'SidebarTextPanel'); // re-lookup
+                               deck.children[textIdx].children = 
moveContent.concat(deck.children[textIdx].children);
                        }
                }
-               return null;
+
+               this._removeItems(data, ['editcontour']);
        },
 
-       _addChildrenToTextPanel: function (data, children) {
-               if (data.id === 'SidebarTextPanel' && data.children && 
data.children.length > 0 &&
-                       data.children[0].children && 
data.children[0].children.length > 0) {
-                       data.children[0].children = 
children.concat(data.children[0].children);
-                       data.children[0].children[0].id = 'box42';
-                       return 'success';
+       _findItemByTypeRecursive: function(data, t) {
+               var found = null;
+               if (data.type === t)
+                       return data;
+               if (data.children)
+               {
+                       for (var i = 0; !found && i < data.children.length; i++)
+                               found = 
this._findItemByTypeRecursive(data.children[i], t);
                }
+               return found;
+       },
 
-               if (data.children) {
-                       for (var i = 0; i < data.children.length; i++) {
-                               var childReturn = 
this._addChildrenToTextPanel(data.children[i], children);
-                               if (childReturn !== null) {
-                                       return childReturn;
-                               }
-                       }
+       _findIdxInParentById: function(data, id) {
+               if (data.children)
+               {
+                       for (var i = 0; i < data.children.length; i++)
+                               if (data.children[i].id === id)
+                                       return i;
                }
-               return null;
+               return -1;
        },
 
        _removeItems: function (data, items) {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to