[Libreoffice-commits] online.git: loleaflet/src

mert (via logerrit) logerrit at kemper.freedesktop.org
Mon Sep 28 09:53:53 UTC 2020


 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.tumer at collabora.com>
AuthorDate: Tue Jun 9 20:23:48 2020 +0300
Commit:     Mert Tumer <mert.tumer at 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.tumer at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96511
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at 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,


More information about the Libreoffice-commits mailing list