loleaflet/src/control/Control.LokDialog.js |    7 +++++
 loleaflet/src/control/Control.Menubar.js   |    6 ++++
 loleaflet/src/control/Control.StatusBar.js |    7 -----
 loleaflet/src/control/Control.Toolbar.js   |    4 +++
 loleaflet/src/control/Control.UIManager.js |   38 +++++++++++++++++++++++------
 loleaflet/src/map/Map.js                   |    7 +++--
 6 files changed, 54 insertions(+), 15 deletions(-)

New commits:
commit f7f4464b3c835ccaacf5519ad7ef9ef0bc98d668
Author:     mert <mert.tu...@collabora.com>
AuthorDate: Tue Jun 9 20:23:48 2020 +0300
Commit:     Mert Tumer <mert.tu...@collabora.com>
CommitDate: Mon Sep 28 11:53:34 2020 +0200

    Save and restore UI element states via localStorage
    
    Also handle Show/Hide sidebar with localstorage
    
    Change-Id: I2e6f8b7480d7d55173a3324b819f6e4e829e512f
    Signed-off-by: mert <mert.tu...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96511
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 23fe890cd..87b97e9cf 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -1092,6 +1092,9 @@ L.Control.LokDialog = L.Control.extend({
                        else
                                $(panel).parent().hide();
 
+                       if (window.initSidebarState)
+                               
this._map.uiManager.setSavedState('ShowSidebar', width > 1);
+
                        // Render window.
                        this._sendPaintWindowRect(id);
                } else {
@@ -1141,6 +1144,8 @@ L.Control.LokDialog = L.Control.extend({
                this._createDialogCursor(strId);
 
                this._postLaunch(id, panelContainer, panelCanvas);
+               if (window.initSidebarState)
+                       this._map.uiManager.setSavedState('ShowSidebar', true);
        },
 
        _postLaunch: function(id, panelContainer, panelCanvas) {
@@ -1409,6 +1414,8 @@ L.Control.LokDialog = L.Control.extend({
                        this._map.focus();
                }
                $('#document-container').addClass('sidebar-closed');
+               if (window.initSidebarState)
+                       this._map.uiManager.setSavedState('ShowSidebar', false);
        },
 
        _onCalcInputBarClose: function(dialogId) {
diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index d3e3988a7..2dd0a6979 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -1309,6 +1309,12 @@ L.Control.Menubar = L.Control.extend({
                        return;
                }
 
+               if (unoCommand.startsWith('.uno:Sidebar') || 
unoCommand.startsWith('.uno:SlideMasterPage') ||
+                       unoCommand.startsWith('.uno:ModifyPage') || 
unoCommand.startsWith('.uno:SlideChangeWindow') ||
+                       unoCommand.startsWith('.uno:CustomAnimation') || 
unoCommand.startsWith('.uno:MasterSlidesPanel')) {
+                       window.initSidebarState = true;
+               }
+
                this._map.sendUnoCommand(unoCommand);
        },
 
diff --git a/loleaflet/src/control/Control.StatusBar.js 
b/loleaflet/src/control/Control.StatusBar.js
index 62f368403..0a82d5c6f 100644
--- a/loleaflet/src/control/Control.StatusBar.js
+++ b/loleaflet/src/control/Control.StatusBar.js
@@ -397,12 +397,7 @@ L.Control.StatusBar = L.Control.extend({
                if (statusbar)
                        statusbar.refresh();
 
-               var showStatusbar = true;
-               if (window.uiDefaults) {
-                       if (window.uiDefaults[docType]) {
-                               showStatusbar = 
window.uiDefaults[docType].ShowStatusbar !== false;
-                       }
-               }
+               var showStatusbar = 
this.map.uiManager.getSavedStateOrDefault('ShowStatusbar');
                if (showStatusbar)
                        $('#toolbar-down').show();
                else
diff --git a/loleaflet/src/control/Control.Toolbar.js 
b/loleaflet/src/control/Control.Toolbar.js
index 7fa110194..97767962d 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -70,6 +70,10 @@ function onClick(e, id, item) {
                throw new Error('unknown id: ' + id);
        }
 
+       if (id === 'sidebar' || id === 'modifypage' || id === 
'slidechangewindow' || id === 'customanimation' || id === 'masterslidespanel') {
+               window.initSidebarState = true;
+       }
+
        // In the iOS app we don't want clicking on the toolbar to pop up the 
keyboard.
        if (!window.ThisIsTheiOSApp && id !== 'zoomin' && id !== 'zoomout' && 
id !== 'mobile_wizard' && id !== 'insertion_mobile_wizard') {
                map.focus(map.canAcceptKeyboardInput()); // Maintain same 
keyboard state.
diff --git a/loleaflet/src/control/Control.UIManager.js 
b/loleaflet/src/control/Control.UIManager.js
index edc0472e6..de3be968f 100644
--- a/loleaflet/src/control/Control.UIManager.js
+++ b/loleaflet/src/control/Control.UIManager.js
@@ -114,12 +114,7 @@ L.Control.UIManager = L.Control.extend({
                        
L.DomUtil.remove(L.DomUtil.get('presentation-controls-wrapper'));
 
                        if ((window.mode.isTablet() || 
window.mode.isDesktop())) {
-                               var showRuler = true;
-                               if (window.uiDefaults) {
-                                       if (window.uiDefaults[docType]) {
-                                               showRuler = 
window.uiDefaults[docType].ShowRuler || false;
-                                       }
-                               }
+                               var showRuler = 
this.getSavedStateOrDefault('ShowRuler');
                                var interactiveRuler = 
this.map.isPermissionEdit();
                                L.control.ruler({position:'topleft', 
interactive:interactiveRuler, showruler: showRuler}).addTo(this.map);
                        }
@@ -190,11 +185,13 @@ L.Control.UIManager = L.Control.extend({
        showRuler: function() {
                $('.loleaflet-ruler').show();
                $('#map').addClass('hasruler');
+               this.setSavedState('ShowRuler', true);
        },
 
        hideRuler: function() {
                $('.loleaflet-ruler').hide();
                $('#map').removeClass('hasruler');
+               this.setSavedState('ShowRuler', false);
        },
 
        toggleRuler: function() {
@@ -272,7 +269,7 @@ L.Control.UIManager = L.Control.extend({
                $('#document-container').css('bottom', this.documentBottom);
                $('#presentation-controls-wrapper').css('bottom', 
this.presentationControlBottom);
                $('#toolbar-down').show();
-               this.map.invalidateSize();
+               this.setSavedState('ShowStatusbar', true);
        },
 
        hideStatusBar: function(firstStart) {
@@ -284,6 +281,8 @@ L.Control.UIManager = L.Control.extend({
                $('#document-container').css('bottom', '0px');
                $('#presentation-controls-wrapper').css('bottom','33px');
                $('#toolbar-down').hide();
+               if (!firstStart)
+                       this.setSavedState('ShowStatusbar', false);
        },
 
        toggleStatusBar: function() {
@@ -373,6 +372,31 @@ L.Control.UIManager = L.Control.extend({
                        }
                        obj.css({'top': String(prevTop) + 'px'});
                }
+       },
+
+       setSavedState: function(name, state) {
+               localStorage.setItem('UIDefaults_' + this.map.getDocType() + 
'_' + name, state);
+       },
+
+       getSavedStateOrDefault: function(name) {
+               var retval = true;
+               var docType = this.map.getDocType();
+               var state = localStorage.getItem('UIDefaults_' + docType + '_' 
+ name);
+               switch (state) {
+               case 'true':
+                       return true;
+               case 'false':
+                       return false;
+               default:
+                       // no saved state; must check the UIDefaults
+                       if (window.uiDefaults && window.uiDefaults[docType])
+                               retval = window.uiDefaults[docType][name];
+
+                       if (retval === undefined || retval === null)
+                               return true;
+                       else
+                               return retval;
+               }
        }
 });
 
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 20f495114..70f22c605 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -282,9 +282,12 @@ L.Map = L.Evented.extend({
                                // Let the first page finish loading then load 
the sidebar.
                                var map = this;
                                setTimeout(function () {
-                                       // Show the sidebar by default, but not 
on mobile.
+                                       // Hide the sidebar on start if saved 
state or UIDefault is set.
                                        if (window.mode.isDesktop() && 
!window.ThisIsAMobileApp) {
-                                               map._socket.sendMessage('uno 
.uno:SidebarShow');
+                                               var showSidebar = 
map.uiManager.getSavedStateOrDefault('ShowSidebar');
+
+                                               if (showSidebar === false)
+                                                       
map._socket.sendMessage('uno .uno:SidebarHide');
                                        }
                                        else if (window.mode.isChromebook()) {
                                                // HACK - currently the sidebar 
shows when loaded,
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to