loleaflet/src/control/Control.Menubar.js      |   40 ++++++++++++++++++++++----
 loleaflet/src/layer/tile/TileLayer.js         |   19 ++++++++++--
 loleaflet/src/map/handler/Map.StateChanges.js |    4 +-
 3 files changed, 53 insertions(+), 10 deletions(-)

New commits:
commit 22b7bee742b3455c86fe816efa1e5f281af19636
Author: Henry Castro <hcas...@collabora.com>
Date:   Sun Oct 1 10:58:11 2017 -0400

    loleaflet: add tools -> language menu items
    
    Change-Id: Ie79a03b53bdbb248788e444115cf7d7e159bb964

diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index e37ad5a1..fbd818a9 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -10,7 +10,8 @@ L.Control.Menubar = L.Control.extend({
                        {name: _('File'), disabled: true},
                        {name: _('Edit'), disabled: true},
                        {name: _('View'), disabled: true},
-                       {name: _('Insert'), disabled: true}
+                       {name: _('Insert'), disabled: true},
+                       {name: _('Tools'), disabled: true},
                ],
                text:  [
                        {name: _('File'), id: 'file', type: 'menu', menu: [
@@ -172,7 +173,9 @@ L.Control.Menubar = L.Control.extend({
                                        {name: _('Merge cells'), type: 
'unocommand', uno: '.uno:MergeCells'}]
                        },
                        {name: _('Tools'), id: 'tools', type: 'menu', menu: [
-                               {name: _('Automatic Spell Checking'), type: 
'unocommand', uno: '.uno:SpellOnline'}
+                               {name: _('Automatic Spell Checking'), type: 
'unocommand', uno: '.uno:SpellOnline'},
+                               {name: _('Language'), type: 'menu', menu: [
+                                       {name: _('Reset to Default Language'), 
id: 'resetlanguage', type: 'unocommand', 
uno:'.uno:LanguageStatus?Language:string=Default_RESET_LANGUAGES'}]}
                        ]},
                        {name: _('Help'), id: 'help', type: 'menu', menu: [
                                {name: _('Keyboard shortcuts'), id: 
'keyboard-shortcuts', type: 'action'},
@@ -317,9 +320,10 @@ L.Control.Menubar = L.Control.extend({
 
                map.on('doclayerinit', this._onDocLayerInit, this);
                map.on('addmenu', this._addMenu, this);
+               map.on('commandinitialized', this._onInitMenu, this);
        },
 
-       _addMenu: function(e) {
+       _addMenu: function (e) {
                var alreadyExists = L.DomUtil.get('menu-' + e.id);
                if (alreadyExists)
                        return;
@@ -337,6 +341,21 @@ L.Control.Menubar = L.Control.extend({
                this._menubarCont.insertBefore(liItem, 
this._menubarCont.firstChild);
        },
 
+       _onInitMenu: function (e) {
+               if (e.commandName === '.uno:LanguageStatus') {
+                       var liItem, aItem;
+                       $menuParent = $('#menu-resetlanguage').parent();
+                       for (var lang in e.data) {
+                               liItem = L.DomUtil.create('li', '');
+                               aItem = L.DomUtil.create('a', '', liItem);
+                               $(aItem).text(e.data[lang]);
+                               $(aItem).data('type', 'unocommand');
+                               $(aItem).data('uno', 
'.uno:LanguageStatus?Language:string=' + encodeURIComponent('Default_' + 
e.data[lang]));
+                               $menuParent.append(liItem);
+                       }
+               }
+       },
+
        _onDocLayerInit: function() {
                // clear initial menu
                while (this._menubarCont.hasChildNodes()) {
@@ -417,13 +436,22 @@ L.Control.Menubar = L.Control.extend({
                        if (map._permission === 'edit') {
                                if (type === 'unocommand') { // enable all 
depending on stored commandStates
                                        var unoCommand = $(aItem).data('uno');
-                                       if 
(map['stateChangeHandler'].getItemValue(unoCommand) === 'disabled') {
+                                       var itemState = 
map['stateChangeHandler'].getItemValue(unoCommand);
+                                       if (itemState === 'disabled') {
                                                $(aItem).addClass('disabled');
                                        } else {
                                                
$(aItem).removeClass('disabled');
                                        }
-
-                                       if 
(map['stateChangeHandler'].getItemValue(unoCommand) === 'true') {
+                                       if 
(unoCommand.indexOf('.uno:LanguageStatus') !== -1) {
+                                               var lang = 
map['stateChangeHandler'].getItemValue('.uno:LanguageStatus');
+                                               var label = $(aItem).html();
+                                               if (label === lang) {
+                                                       
$(aItem).addClass('lo-menu-item-checked');
+                                               } else {
+                                                       
$(aItem).removeClass('lo-menu-item-checked');
+                                               }
+                                       }
+                                       else if (itemState === 'true') {
                                                
$(aItem).addClass('lo-menu-item-checked');
                                        } else {
                                                
$(aItem).removeClass('lo-menu-item-checked');
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index d5ffef57..c18c4004 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -1045,10 +1045,23 @@ L.TileLayer = L.GridLayer.extend({
        _onStateChangedMsg: function (textMsg) {
                textMsg = textMsg.substr(14);
                var index = textMsg.indexOf('=');
-               var commandName = index !== -1 ? textMsg.substr(0, index) : '';
-               var state = index !== -1 ? textMsg.substr(index + 1) : '';
+               var commandName, state;
+               if (index !== -1)
+               {
+                       commandName = textMsg.substr(0, index);
+                       state = textMsg.substr(index + 1);
+                       this._map.fire('commandstatechanged', {commandName : 
commandName, state : state});
+                       return;
+               }
 
-               this._map.fire('commandstatechanged', {commandName : 
commandName, state : state});
+               index = textMsg.indexOf('?');
+               if (index !== -1)
+               {
+                       commandName = textMsg.substr(0, index);
+                       textMsg = textMsg.substr(index + 1);
+                       state = JSON.parse(textMsg);
+                       this._map.fire('commandinitialized', {commandName: 
commandName, data: state});
+               }
        },
 
        _onUnoCommandResultMsg: function (textMsg) {
diff --git a/loleaflet/src/map/handler/Map.StateChanges.js 
b/loleaflet/src/map/handler/Map.StateChanges.js
index 6c31981e..b0abcb11 100644
--- a/loleaflet/src/map/handler/Map.StateChanges.js
+++ b/loleaflet/src/map/handler/Map.StateChanges.js
@@ -25,7 +25,9 @@ L.Map.StateChangeHandler = L.Handler.extend({
        },
 
        _onStateChanged: function(e) {
-               this._items[e.commandName] = e.state;
+               if (e.commandName.indexOf('?') === -1) {
+                       this._items[e.commandName] = e.state;
+               }
        },
 
        getItems: function() {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to