[Libreoffice-commits] online.git: Branch 'distro/collabora/milestone-7' - loleaflet/src
Henry Castro
hcastro at collabora.com
Mon Feb 8 18:22:17 UTC 2016
loleaflet/src/control/Control.Presentation.js | 109 ++++++++++++++++++++++++++
1 file changed, 109 insertions(+)
New commits:
commit 8f2e655d51873234d62411962d7c4da39066f30d
Author: Henry Castro <hcastro at collabora.com>
Date: Sun Feb 7 18:42:12 2016 -0400
loleaflet: rework Control.Presentation.js toolbar items
diff --git a/loleaflet/src/control/Control.Presentation.js b/loleaflet/src/control/Control.Presentation.js
new file mode 100644
index 0000000..6cac3ba
--- /dev/null
+++ b/loleaflet/src/control/Control.Presentation.js
@@ -0,0 +1,109 @@
+/*
+ * L.Control.Presentation is used for common commands for slides.
+ */
+
+/* global vex */
+L.Control.Presentation = L.Control.extend({
+ options: {
+ position: 'topleft'
+ },
+
+ onAdd: function (map) {
+ var buttonsName = 'leaflet-control-presentation',
+ container = L.DomUtil.create('div', buttonsName + '-container' + ' leaflet-bar');
+
+ this._buttons = {
+ 'insertpage': {title: 'Insert Page', uno: 'InsertPage', iconName: 'insertpage.png'},
+ 'duplicatepage': {title: 'Duplicate Page', uno: 'DuplicatePage', iconName: 'duplicatepage.png'},
+ 'deletepage': {title: 'Delete Page', uno: 'DeletePage', iconName: 'deletepage.png'}
+ };
+
+ for (var key in this._buttons) {
+ var button = this._buttons[key];
+ button.el = this._createButton(key, button.title, button.iconName,
+ buttonsName, container, this._onButtonClick);
+ }
+
+ map.on('commandstatechanged', this._onStateChange, this);
+ map.on('updatepermission', this._onPermissionUpdate, this);
+
+ return container;
+ },
+
+ _onPermissionUpdate: function (e) {
+ for (var id in this._buttons) {
+ var button = this._buttons[id];
+ if (button.uno) {
+ if (e.perm !== 'edit' || this._map.getDocType() !== 'presentation') {
+ L.DomUtil.addClass(button.el.firstChild, 'leaflet-control-buttons-disabled');
+ }
+ else {
+ L.DomUtil.removeClass(button.el.firstChild, 'leaflet-control-buttons-disabled');
+ }
+ }
+ }
+ },
+
+ _createButton: function (id, title, iconName, className, container, fn) {
+ var link = L.DomUtil.create('a', className, container);
+ link.href = '#';
+ link.title = title;
+ var img = L.DomUtil.create('img', className, link);
+ img.id = id;
+ img.src = L.Icon.Default.imagePath + '/' + iconName;
+
+ L.DomEvent
+ .on(link, 'mousedown dblclick', L.DomEvent.stopPropagation)
+ .on(link, 'click', L.DomEvent.stop)
+ .on(link, 'click', fn, this)
+ .on(link, 'click', this._refocusOnMap, this);
+
+ return link;
+ },
+
+ _onButtonClick: function (e) {
+ if (L.DomUtil.hasClass(e.target.parentNode, 'leaflet-disabled')) {
+ return;
+ }
+ var id = e.target.id;
+
+ if (id === 'insertpage') {
+ this._map.insertPage();
+ }
+ else if (id === 'duplicatepage') {
+ this._map.duplicatePage();
+ }
+ else if (id === 'deletepage') {
+ vex.dialog.confirm({
+ message: 'Are you sure you want to delete this page?',
+ callback: L.bind(this._onDelete, this)
+ });
+ }
+ },
+
+ _onStateChange: function (e) {
+ var commandName = e.commandName;
+ var enabled = e.state;
+ for (var key in this._buttons) {
+ var button = this._buttons[key];
+ if ('.uno:' + button.uno === commandName) {
+ if (enabled === 'true' && this._map._docLayer._permission === 'edit') {
+ L.DomUtil.removeClass(button.el.firstChild, 'leaflet-control-buttons-disabled');
+ }
+ else if (enabled === 'false') {
+ L.DomUtil.addClass(button.el.firstChild, 'leaflet-control-buttons-disabled');
+ }
+ }
+ }
+ },
+
+ _onDelete: function (e) {
+ if (e !== false) {
+ this._map.deletePage();
+ }
+ }
+});
+
+L.control.presentation = function (options) {
+ return new L.Control.Presentation(options);
+};
More information about the Libreoffice-commits
mailing list