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

Henry Castro (via logerrit) logerrit at kemper.freedesktop.org
Fri Oct 11 15:17:47 UTC 2019


 loleaflet/build/deps.js                      |    6 +++
 loleaflet/src/control/Control.MobileSlide.js |   54 +++++++++++++++++++++++++++
 loleaflet/src/layer/tile/ImpressTileLayer.js |   21 ++++++++++
 3 files changed, 80 insertions(+), 1 deletion(-)

New commits:
commit ae89da611d295c30ca00d575d5ffd27b6c44c223
Author:     Henry Castro <hcastro at collabora.com>
AuthorDate: Fri Oct 11 11:11:51 2019 -0400
Commit:     Henry Castro <hcastro at collabora.com>
CommitDate: Fri Oct 11 17:17:30 2019 +0200

    iloleaflet: mobile: add a button to insert a slide in the Impress ...
    
    document
    
    A file is created Control.MobileSlide.js for the purpose to create a
    button control at the bottom right of the Impress document only if the client
    browser is identified as Mobile. The button has the function to create a new
    Slide.
    
    Change-Id: I494687a91cf4dc06d08e98c6844b06fb69b2448e
    Reviewed-on: https://gerrit.libreoffice.org/80665
    Reviewed-by: Henry Castro <hcastro at collabora.com>
    Tested-by: Henry Castro <hcastro at collabora.com>

diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index 900ee2733..782ddfc84 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -405,6 +405,12 @@ var deps = {
 		desc: 'Attribution control.'
 	},
 
+	ControlMobileSlide: {
+		src: ['control/Control.js',
+		      'control/Control.MobileSlide.js'],
+		desc: 'Mobile control to add new slide.'
+	},
+
 	ControlScale: {
 		src: ['control/Control.js',
 		      'control/Control.Scale.js'],
diff --git a/loleaflet/src/control/Control.MobileSlide.js b/loleaflet/src/control/Control.MobileSlide.js
new file mode 100644
index 000000000..db7fb2e5f
--- /dev/null
+++ b/loleaflet/src/control/Control.MobileSlide.js
@@ -0,0 +1,54 @@
+/*
+ * L.Control.MobileSlide is used to add new slide button on the Impress document.
+ */
+
+L.Control.MobileSlide = L.Control.extend({
+	options: {
+		position: 'bottomright'
+	},
+
+	onAdd: function (map) {
+		this._map = map;
+
+		if (!this._container) {
+			this._initLayout();
+		}
+
+		return this._container;
+	},
+
+	onRemove: function () {
+		this._map = undefined;
+	},
+
+	_onAddSlide: function () {
+		this._map.insertPage();
+	},
+
+	_initLayout: function () {
+		this._container = L.DomUtil.create('div', 'leaflet-control-zoom leaflet-bar');
+		this._createButton('+', '', 'leaflet-control-zoom-in',  this._container, this._onAddSlide,  this);
+		return this._container;
+	},
+
+	_createButton: function (html, title, className, container, fnOnClick, context) {
+		var button = L.DomUtil.create('a', className, container);
+		button.innerHTML = html;
+		button.href = '#';
+		button.title = title;
+
+		L.DomEvent
+		    .on(button, 'click', L.DomEvent.stopPropagation)
+		    .on(button, 'mousedown', L.DomEvent.stopPropagation)
+		    .on(button, 'click', L.DomEvent.preventDefault)
+		    .on(button, 'click', this._map.focus, this._map)
+		    .on(button, 'click', fnOnClick, context);
+
+		return button;
+	},
+});
+
+L.control.mobileSlide = function (options) {
+	return new L.Control.MobileSlide(options);
+};
+
diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js b/loleaflet/src/layer/tile/ImpressTileLayer.js
index a2d6b607b..9e77dc1ee 100644
--- a/loleaflet/src/layer/tile/ImpressTileLayer.js
+++ b/loleaflet/src/layer/tile/ImpressTileLayer.js
@@ -7,6 +7,14 @@
 L.ImpressTileLayer = L.TileLayer.extend({
 	extraSize: L.point(290, 0),
 
+	initialize: function (url, options) {
+		L.TileLayer.prototype.initialize.call(this, url, options);
+
+		if (window.mode.isMobile()) {
+			this._addButton = L.control.mobileSlide();
+		}
+	},
+
 	newAnnotation: function (comment) {
 		if (this._draft) {
 			return;
@@ -25,13 +33,14 @@ L.ImpressTileLayer = L.TileLayer.extend({
 	beforeAdd: function (map) {
 		map.on('zoomend', this._onAnnotationZoom, this);
 		map.on('updateparts', this.onUpdateParts, this);
+		map.on('updatepermission', this.onUpdatePermission, this);
 		map.on('AnnotationCancel', this.onAnnotationCancel, this);
 		map.on('AnnotationReply', this.onReplyClick, this);
 		map.on('AnnotationSave', this.onAnnotationSave, this);
 		map.on('AnnotationScrollUp', this.onAnnotationScrollUp, this);
 		map.on('AnnotationScrollDown', this.onAnnotationScrollDown, this);
 		map.on('resize', this.onResize, this);
-		if (L.Browser.mobile) {
+		if (window.mode.isMobile()) {
 			map.on('doclayerinit', this.onMobileInit, this);
 		}
 	},
@@ -341,6 +350,16 @@ L.ImpressTileLayer = L.TileLayer.extend({
 		}
 	},
 
+	onUpdatePermission: function (e) {
+		if (window.mode.isMobile()) {
+			if (e.perm === 'edit') {
+				this._addButton.addTo(this._map);
+			} else {
+				this._addButton.remove();
+			}
+		}
+	},
+
 	clearAnnotations: function () {
 		var annotation;
 		var annotations;


More information about the Libreoffice-commits mailing list