loleaflet/src/control/Control.ContextMenu.js |  113 +++++++++++++++++++--------
 1 file changed, 81 insertions(+), 32 deletions(-)

New commits:
commit f3f0b6d8694ded04729c5a5c8fc4b85c5af2cd20
Author:     Tamás Zolnai <tamas.zol...@collabora.com>
AuthorDate: Mon Dec 2 09:34:41 2019 +0100
Commit:     Tamás Zolnai <tamas.zol...@collabora.com>
CommitDate: Mon Dec 2 18:16:36 2019 +0100

    Mobile: Show context menus in mobile wizard.
    
    Change-Id: I8c61faed63ca6c439ab59ec5678c6360cfb5f28c
    Reviewed-on: https://gerrit.libreoffice.org/84239
    Reviewed-by: Tamás Zolnai <tamas.zol...@collabora.com>
    Tested-by: Tamás Zolnai <tamas.zol...@collabora.com>

diff --git a/loleaflet/src/control/Control.ContextMenu.js 
b/loleaflet/src/control/Control.ContextMenu.js
index 3283a0039..b2e9b58ae 100644
--- a/loleaflet/src/control/Control.ContextMenu.js
+++ b/loleaflet/src/control/Control.ContextMenu.js
@@ -102,41 +102,46 @@ L.Control.ContextMenu = L.Control.extend({
                        this._onClosePopup();
                }
                var contextMenu = this._createContextMenuStructure(obj);
-               var spellingContextMenu = false;
-               for (var menuItem in contextMenu) {
-                       if (menuItem.includes('.uno:SpellCheckIgnore')) {
-                               spellingContextMenu = true;
-                               break;
+               if (window.mode.isMobile()) {
+                       var menuData = 
this.getMenuStructureForMobileWizard(contextMenu, true, '');
+                       map.fire('mobilewizard', menuData);
+               } else {
+                       var spellingContextMenu = false;
+                       for (var menuItem in contextMenu) {
+                               if (menuItem.includes('.uno:SpellCheckIgnore')) 
{
+                                       spellingContextMenu = true;
+                                       break;
+                               }
                        }
-               }
 
-               L.installContextMenu({
-                       selector: '.leaflet-layer',
-                       className: 'loleaflet-font',
-                       trigger: 'none',
-                       build: function() {
-                               return {
-                                       callback: function(key) {
-                                               if (map.getDocType() == 
'spreadsheet' && key == '.uno:ShowNote') {
-                                                       
map._docLayer.showAnnotationFromCurrentCell();
-                                               } else if (map.getDocType() == 
'spreadsheet' && key == '.uno:HideNote') {
-                                                       
map._docLayer.hideAnnotationFromCurrentCell();
-                                               } else if 
(!map._clip.filterExecCopyPaste(key)) {
-                                                       map.sendUnoCommand(key);
-                                                       // For spelling context 
menu we need to remove selection
-                                                       if (spellingContextMenu)
-                                                               
map._docLayer._clearSelections();
-                                                       // Give the stolen 
focus back to map
-                                                       map.focus();
-                                               }
-                                       },
-                                       items: contextMenu
-                               };
-                       }
-               });
+                       L.installContextMenu({
+                               selector: '.leaflet-layer',
+                               className: 'loleaflet-font',
+                               trigger: 'none',
+                               build: function() {
+                                       return {
+                                               callback: function(key) {
+                                                       if (map.getDocType() == 
'spreadsheet' && key == '.uno:ShowNote') {
+                                                               
map._docLayer.showAnnotationFromCurrentCell();
+                                                       } else if 
(map.getDocType() == 'spreadsheet' && key == '.uno:HideNote') {
+                                                               
map._docLayer.hideAnnotationFromCurrentCell();
+                                                       } else if 
(!map._clip.filterExecCopyPaste(key)) {
+                                                               
map.sendUnoCommand(key);
+                                                               // For spelling 
context menu we need to remove selection
+                                                               if 
(spellingContextMenu)
+                                                                       
map._docLayer._clearSelections();
+                                                               // Give the 
stolen focus back to map
+                                                               map.focus();
+                                                       }
+                                               },
+                                               items: contextMenu
+                                       };
+                               }
+                       });
 
-               $('.leaflet-layer').contextMenu(this._prevMousePos);
-               this.hasContextMenu = true;
+                       $('.leaflet-layer').contextMenu(this._prevMousePos);
+                       this.hasContextMenu = true;
+               }
        },
 
        _createContextMenuStructure: function(obj) {
@@ -242,6 +247,50 @@ L.Control.ContextMenu = L.Control.extend({
                }
 
                return contextMenu;
+       },
+
+       getMenuStructureForMobileWizard: function(menu, mainMenu, itemCommand) {
+               if (itemCommand.includes('sep'))
+                       return null;
+
+               var itemText = ''
+               if (menu.name)
+                       itemText = menu.name;
+
+               var itemType = 'submenu';
+               var executionType = 'menu';
+               if (mainMenu) {
+                       itemType = 'mainmenu';
+                       executionType = 'menu';
+               } else if (!menu.items) {
+                       itemType = 'menuitem';
+                       executionType = 'command';
+               }
+
+               var menuStructure = {
+                       type : itemType,
+                       enabled : true,
+                       text : itemText,
+                       executionType : executionType,
+                       children : []
+               };
+               if (itemCommand)
+                       menuStructure['command'] = itemCommand;
+               if (mainMenu) {
+                       for (var menuItem in menu) {
+                               var element = 
this.getMenuStructureForMobileWizard(menu[menuItem], false, menuItem);
+                               if (element)
+                                       menuStructure['children'].push(element);
+                       }
+               } else if (itemType == 'submenu') {
+                       for (menuItem in menu.items) {
+                               element = 
this.getMenuStructureForMobileWizard(menu.items[menuItem], false, menuItem);
+                               if (element)
+                                       menuStructure['children'].push(element);
+                       }
+               }
+
+               return menuStructure;
        }
 });
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to