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