[Libreoffice-commits] online.git: android/lib loleaflet/src

Jan Holesovsky (via logerrit) logerrit at kemper.freedesktop.org
Tue Dec 10 16:10:48 UTC 2019


 android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java |   80 +++++-----
 loleaflet/src/control/Control.Toolbar.js                             |    7 
 2 files changed, 51 insertions(+), 36 deletions(-)

New commits:
commit c6f36965cfc1bd68fdb88b01d493163b5d176bcc
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Sat Aug 10 00:21:50 2019 +0200
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Tue Dec 10 17:10:29 2019 +0100

    android: Framework to be able to broadcast to another activity.
    
    Change-Id: I24634c5e06223bd1c5cdb8da511159b03ce35719
    Reviewed-on: https://gerrit.libreoffice.org/84871
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
index dbb58d0b0..3fe1c317f 100644
--- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
+++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
@@ -528,7 +528,8 @@ public class LOActivity extends AppCompatActivity {
      * return true to pass the message to the native part or false to block the message
      */
     boolean interceptMsgFromWebView(String message) {
-        switch (message) {
+        String[] messageAndParam = message.split(" ", 2); // the command and the rest (that can potentially contain spaces too)
+        switch (messageAndParam[0]) {
             case "PRINT":
                 mainHandler.post(new Runnable() {
                     @Override
@@ -540,47 +541,53 @@ public class LOActivity extends AppCompatActivity {
             case "SLIDESHOW":
                 initiateSlideShow();
                 return false;
-            case "uno .uno:Paste":
-                clipData = clipboardManager.getPrimaryClip();
-                if (clipData != null) {
-                    if (clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
-                        final ClipData.Item clipItem = clipData.getItemAt(0);
+            case "SAVE":
+                sendBroadcast(messageAndParam[0], messageAndParam[1]);
+                return false;
+            case "uno":
+                switch (messageAndParam[1]) {
+                    case ".uno:Paste":
+                        clipData = clipboardManager.getPrimaryClip();
+                        if (clipData != null) {
+                            if (clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
+                                final ClipData.Item clipItem = clipData.getItemAt(0);
+                                nativeHandler.post(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        LOActivity.this.paste("text/plain;charset=utf-16", clipItem.getText().toString());
+                                    }
+                                });
+                            }
+                            return false;
+                        }
+                        break;
+                    case ".uno:Copy": {
                         nativeHandler.post(new Runnable() {
                             @Override
                             public void run() {
-                                LOActivity.this.paste("text/plain;charset=utf-16", clipItem.getText().toString());
+                                String tempSelectedText = LOActivity.this.getTextSelection();
+                                if (!tempSelectedText.equals("")) {
+                                    clipData = ClipData.newPlainText(ClipDescription.MIMETYPE_TEXT_PLAIN, tempSelectedText);
+                                    clipboardManager.setPrimaryClip(clipData);
+                                }
                             }
                         });
+                        break;
                     }
-                    return false;
-                }
-                break;
-            case "uno .uno:Copy": {
-                nativeHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        String tempSelectedText = LOActivity.this.getTextSelection();
-                        if (!tempSelectedText.equals("")) {
-                            clipData = ClipData.newPlainText(ClipDescription.MIMETYPE_TEXT_PLAIN, tempSelectedText);
-                            clipboardManager.setPrimaryClip(clipData);
-                        }
-                    }
-                });
-                break;
-            }
-            case "uno .uno:Cut": {
-                nativeHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        String tempSelectedText = LOActivity.this.getTextSelection();
-                        if (!tempSelectedText.equals("")) {
-                            clipData = ClipData.newPlainText(ClipDescription.MIMETYPE_TEXT_PLAIN, tempSelectedText);
-                            clipboardManager.setPrimaryClip(clipData);
-                        }
+                    case ".uno:Cut": {
+                        nativeHandler.post(new Runnable() {
+                            @Override
+                            public void run() {
+                                String tempSelectedText = LOActivity.this.getTextSelection();
+                                if (!tempSelectedText.equals("")) {
+                                    clipData = ClipData.newPlainText(ClipDescription.MIMETYPE_TEXT_PLAIN, tempSelectedText);
+                                    clipboardManager.setPrimaryClip(clipData);
+                                }
+                            }
+                        });
+                        break;
                     }
-                });
-                break;
-            }
+                }
             case "DIM_SCREEN": {
                 mainHandler.post(new Runnable() {
                     @Override
@@ -640,6 +647,9 @@ public class LOActivity extends AppCompatActivity {
         });
     }
 
+    /** Could be overridden if it's necessary to forward some callbacks elsewhere. */
+    public void sendBroadcast(String event, String data) {}
+
     public native void saveAs(String fileUri, String format);
 
     public native String getTextSelection();
diff --git a/loleaflet/src/control/Control.Toolbar.js b/loleaflet/src/control/Control.Toolbar.js
index 5d9de3baf..86474ddce 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -2135,7 +2135,12 @@ function onCommandResult(e) {
 			// add the result reason string if failed
 			postMessageObj['result'] = e.result && e.result.value;
 		}
-		map.fire('postMessage', {msgId: 'Action_Save_Resp', args: postMessageObj});
+
+		if (window.ThisIsAMobileApp) {
+			window.postMobileMessage('SAVE ' + JSON.stringify(postMessageObj));
+		} else {
+			map.fire('postMessage', {msgId: 'Action_Save_Resp', args: postMessageObj});
+		}
 	}
 	else if ((commandName === '.uno:Undo' || commandName === '.uno:Redo') &&
 		e.success === true && e.result.value && !isNaN(e.result.value)) { /*UNDO_CONFLICT*/


More information about the Libreoffice-commits mailing list