[Libreoffice-commits] core.git: Branch 'feature/tiled-editing' - 3 commits - android/experimental

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Wed Feb 18 23:27:20 PST 2015


 android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java                     |    3 -
 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java |    8 +++-
 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java                  |   13 +-----
 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java                 |   10 +----
 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java           |   19 ++++++----
 android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java            |    6 ---
 android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java                |   11 +----
 7 files changed, 28 insertions(+), 42 deletions(-)

New commits:
commit 01c194b85668d5c8eba0edc5b39317769f7d9982
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Feb 19 16:24:29 2015 +0900

    android: key press/release is in KeyEvent, no need to distinct them
    
    Change-Id: Ic68145a0f67ce9558570ab95b8057271c22481a3

diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
index bc786f5..807d0d0 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
@@ -83,10 +83,9 @@ public class LOEvent implements Comparable<LOEvent> {
         mDocumentTouchCoordinate = documentTouchCoordinate;
     }
 
-    public LOEvent(int type, String keyEventType, KeyEvent keyEvent) {
+    public LOEvent(int type, KeyEvent keyEvent) {
         mType = type;
         mTypeString = "Key Event";
-        mKeyEventType = keyEventType;
         mKeyEvent = keyEvent;
     }
 
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
index dc4c856..36d477d 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
@@ -16,13 +16,13 @@ public class LOKitInputConnectionHandler implements InputConnectionHandler {
 
     @Override
     public boolean onKeyPreIme(int keyCode, KeyEvent event) {
-        LOKitShell.sendKeyPressEvent(event);
+        LOKitShell.sendKeyEvent(event);
         return false;
     }
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
-        LOKitShell.sendKeyPressEvent(event);
+        LOKitShell.sendKeyEvent(event);
         return false;
     }
 
@@ -33,13 +33,13 @@ public class LOKitInputConnectionHandler implements InputConnectionHandler {
 
     @Override
     public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
-        LOKitShell.sendKeyPressEvent(event);
+        LOKitShell.sendKeyEvent(event);
         return false;
     }
 
     @Override
     public boolean onKeyUp(int keyCode, KeyEvent event) {
-        LOKitShell.sendKeyReleaseEvent(event);
+        LOKitShell.sendKeyEvent(event);
         return false;
     }
 }
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
index ab25078..1e3036c 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
@@ -90,17 +90,10 @@ public class LOKitShell {
     }
 
     /**
-     * Send key press event to LOKitThread.
+     * Send key event to LOKitThread.
      */
-    public static void sendKeyPressEvent(KeyEvent event) {
-        LOKitShell.sendEvent(new LOEvent(LOEvent.KEY_EVENT, "KeyPress", event));
-    }
-
-    /**
-     * Send key release event to LOKitThread.
-     */
-    public static void sendKeyReleaseEvent(KeyEvent event) {
-        LOKitShell.sendEvent(new LOEvent(LOEvent.KEY_EVENT, "KeyRelease", event));
+    public static void sendKeyEvent(KeyEvent event) {
+        LOKitShell.sendEvent(new LOEvent(LOEvent.KEY_EVENT, event));
     }
 
     public static void sendSizeChangedEvent(int width, int height) {
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 3d71423..8ae5749 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -194,7 +194,7 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
                 touch(event.mTouchType, event.mMotionEvent, event.mDocumentTouchCoordinate);
                 break;
             case LOEvent.KEY_EVENT:
-                keyEvent(event.mKeyEventType, event.mKeyEvent);
+                keyEvent(event.mKeyEvent);
                 break;
             case LOEvent.TILE_REEVALUATION_REQUEST:
                 tileReevaluationRequest(event.mComposedTileLayer);
@@ -205,18 +205,14 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
     /**
      * Processes key events.
      */
-    private void keyEvent(String keyEventType, KeyEvent keyEvent) {
+    private void keyEvent(KeyEvent keyEvent) {
         if (!LOKitShell.isEditingEnabled()) {
             return;
         }
         if (mTileProvider == null) {
             return;
         }
-        if (keyEventType.equals("KeyPress")) {
-            mTileProvider.keyPress(keyEvent);
-        } else if (keyEventType.equals("KeyRelease")) {
-            mTileProvider.keyRelease(keyEvent);
-        }
+        mTileProvider.sendKeyEvent(keyEvent);
     }
 
     /**
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index 97fb009..d8753de 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -314,23 +314,20 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
     }
 
     @Override
-    public void keyPress(KeyEvent keyEvent) {
+    public void sendKeyEvent(KeyEvent keyEvent) {
         if (keyEvent.getAction() == KeyEvent.ACTION_MULTIPLE) {
             String keyString = keyEvent.getCharacters();
             for (int i = 0; i < keyString.length(); i++) {
                 int codePoint = keyString.codePointAt(i);
                 mOffice.postKeyEvent(Office.KEY_PRESS, codePoint, getKeyCode(keyEvent));
             }
-        } else {
+        } else if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
             mOffice.postKeyEvent(Office.KEY_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent));
+        } else if (keyEvent.getAction() == KeyEvent.ACTION_UP) {
+            mOffice.postKeyEvent(Office.KEY_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent));
         }
     }
 
-    @Override
-    public void keyRelease(KeyEvent keyEvent) {
-        mOffice.postKeyEvent(Office.KEY_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent));
-    }
-
     private void mouseButton(int type, PointF inDocument, int numberOfClicks) {
         int x = (int) pixelToTwip(inDocument.x, mDPI);
         int y = (int) pixelToTwip(inDocument.y, mDPI);
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
index ed1e069..e6fbcd2 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
@@ -94,11 +94,7 @@ public class MockTileProvider implements TileProvider {
     }
 
     @Override
-    public void keyPress(KeyEvent keyEvent) {
-    }
-
-    @Override
-    public void keyRelease(KeyEvent keyEvent) {
+    public void sendKeyEvent(KeyEvent keyEvent) {
 
     }
 
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
index 0050d1e..92dbb3d 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
@@ -69,18 +69,11 @@ public interface TileProvider {
     void registerInvalidationCallback(TileProvider.TileInvalidationCallback tileInvalidationCallback);
 
     /**
-     * Trigger a key press.
+     * Trigger a key event.
      *
      * @param keyEvent - contains information about key event
      */
-    void keyPress(KeyEvent keyEvent);
-
-    /**
-     * Trigger a key release.
-     *
-     * @param keyEvent - contains information about key event
-     */
-    void keyRelease(KeyEvent keyEvent);
+    void sendKeyEvent(KeyEvent keyEvent);
 
     /**
      * Trigger a mouse button down event.
commit cfb2f675ebc1ac35f850c8ffe04c63525d9c20d5
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Feb 19 16:07:00 2015 +0900

    android: support ACTION_MULTIPLE KeyEvent
    
    With ACTION_MULTIPLE more characters have been entered at the same
    time. In this case we send more key press events to LO for now.
    This is generally useful for IME input but Android also sends this
    if non-ASCII key has been hit - even when the key is only one
    character.
    
    Change-Id: Iaf48ed4e40b8e4413ed5735add34870ec263b61d

diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index 4e5a842..97fb009 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -315,7 +315,15 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
 
     @Override
     public void keyPress(KeyEvent keyEvent) {
-        mOffice.postKeyEvent(Office.KEY_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent));
+        if (keyEvent.getAction() == KeyEvent.ACTION_MULTIPLE) {
+            String keyString = keyEvent.getCharacters();
+            for (int i = 0; i < keyString.length(); i++) {
+                int codePoint = keyString.codePointAt(i);
+                mOffice.postKeyEvent(Office.KEY_PRESS, codePoint, getKeyCode(keyEvent));
+            }
+        } else {
+            mOffice.postKeyEvent(Office.KEY_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent));
+        }
     }
 
     @Override
commit eb3701bb262cfd8f3fdd767b1a37f438dfc5d371
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Feb 19 16:02:03 2015 +0900

    android: also send key event in onKeyMultiple and onKeyPreIme
    
    Change-Id: Ib231edd7b659ca3d0360bb3ac3021ead652f5458

diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
index 6a5837b..dc4c856 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitInputConnectionHandler.java
@@ -7,6 +7,8 @@ import android.view.inputmethod.InputConnection;
 import org.mozilla.gecko.gfx.InputConnectionHandler;
 
 public class LOKitInputConnectionHandler implements InputConnectionHandler {
+    private static String LOGTAG = LOKitInputConnectionHandler.class.getSimpleName();
+
     @Override
     public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
         return null;
@@ -14,6 +16,7 @@ public class LOKitInputConnectionHandler implements InputConnectionHandler {
 
     @Override
     public boolean onKeyPreIme(int keyCode, KeyEvent event) {
+        LOKitShell.sendKeyPressEvent(event);
         return false;
     }
 
@@ -30,6 +33,7 @@ public class LOKitInputConnectionHandler implements InputConnectionHandler {
 
     @Override
     public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
+        LOKitShell.sendKeyPressEvent(event);
         return false;
     }
 


More information about the Libreoffice-commits mailing list