summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormert <mert.tumer@collabora.com>2020-06-09 20:23:48 +0300
committerMert Tumer <mert.tumer@collabora.com>2020-09-28 11:53:34 +0200
commitf7f4464b3c835ccaacf5519ad7ef9ef0bc98d668 (patch)
treeb3b957d0da30776f0641df3d88d5e6fdae30b832
parent2e28b9bb655ac7ebc5b580fabb5636b629dd7f85 (diff)
Save and restore UI element states via localStorage
Also handle Show/Hide sidebar with localstorage Change-Id: I2e6f8b7480d7d55173a3324b819f6e4e829e512f Signed-off-by: mert <mert.tumer@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96511 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
-rw-r--r--loleaflet/src/control/Control.LokDialog.js7
-rw-r--r--loleaflet/src/control/Control.Menubar.js6
-rw-r--r--loleaflet/src/control/Control.StatusBar.js7
-rw-r--r--loleaflet/src/control/Control.Toolbar.js4
-rw-r--r--loleaflet/src/control/Control.UIManager.js38
-rw-r--r--loleaflet/src/map/Map.js7
6 files changed, 54 insertions, 15 deletions
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,