loleaflet/build/deps.js                          |    7 +++
 loleaflet/src/control/Control.StatusIndicator.js |   46 +++++++++++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js            |   10 +++++
 3 files changed, 63 insertions(+)

New commits:
commit 2fa440c18f75e81748f9780762979854b8d7e9f9
Author: Mihai Varga <mihai.va...@collabora.com>
Date:   Thu May 28 18:43:29 2015 +0300

    Status indicator control

diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index b3e838d..e1fd636 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -227,6 +227,13 @@ var deps = {
                desc: 'Switches from viewing to editing mode and backwards'
        },
 
+       ControlStatusIndicator: {
+               src: ['control/Control.js',
+                     'control/Control.StatusIndicator.js'],
+               heading: 'Controls',
+               desc: 'Display document loading status'
+       },
+
        ControlAttrib: {
                src: ['control/Control.js',
                      'control/Control.Attribution.js'],
diff --git a/loleaflet/src/control/Control.StatusIndicator.js 
b/loleaflet/src/control/Control.StatusIndicator.js
new file mode 100644
index 0000000..96b9da9
--- /dev/null
+++ b/loleaflet/src/control/Control.StatusIndicator.js
@@ -0,0 +1,46 @@
+/*
+ * L.Control.StatusIndicator is used for displaying the current loading status
+ */
+
+L.Control.StatusIndicator = L.Control.extend({
+       options: {
+               position: 'topleft',
+       },
+
+       onAdd: function (map) {
+               var partName = 'leaflet-control-statusindicator';
+               this._container = L.DomUtil.create('div', partName + ' 
leaflet-bar');
+
+               map.on('statusindicator:start statusindicator:setvalue 
statusindicator:finish',
+                       this._updateStatus, this);
+               return this._container;
+       },
+
+       _updateStatus: function (e) {
+               if (e.type === 'statusindicator:start') {
+                       L.DomUtil.setStyle(this._container, 'display', '');
+                       this._container.innerText = '0 %';
+               }
+               else if (e.type === 'statusindicator:setvalue') {
+                       this._container.innerText = e.statusIndicator + '% ';
+               }
+               else if (e.type === 'statusindicator:finish') {
+                       L.DomUtil.setStyle(this._container, 'display', 'none');
+               }
+       }
+});
+
+L.Map.mergeOptions({
+       statusIndicatorControl: true
+});
+
+L.Map.addInitHook(function () {
+       if (this.options.statusIndicatorControl) {
+               this.statusIndicatorControl = new L.Control.StatusIndicator();
+               this.addControl(this.statusIndicatorControl);
+       }
+});
+
+L.control.statusIndicator = function (options) {
+       return new L.Control.StatusIndicator(options);
+};
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 6bcab24..a4ee0b4 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -194,6 +194,16 @@ L.TileLayer = L.GridLayer.extend({
                                this._update();
                        }
                }
+               else if (textMsg.startsWith('statusindicatorstart:')) {
+                       this._map.fire('statusindicator:start');
+               }
+               else if (textMsg.startsWith('statusindicatorsetvalue:')) {
+                       var statusIndicator = textMsg.match(/\d+/g)[0];
+                       this._map.fire('statusindicator:setvalue', 
{statusIndicator:statusIndicator});
+               }
+               else if (textMsg.startsWith('statusindicatorfinish:')) {
+                       this._map.fire('statusindicator:finish');
+               }
                else if (textMsg.startsWith('tile:')) {
                        var command = this._parseServerCmd(textMsg);
                        var coords = this._twipsToCoords(new L.Point(command.x, 
command.y));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to