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