summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.com>2015-11-01 22:52:24 +0100
committerTomaž Vajngerl <tomaz.vajngerl@collabora.com>2015-11-02 08:51:48 +0100
commit9085b5f6d40031e164d776fcd9daa0305b4e5a23 (patch)
tree29f34aaf7a36cde7bbc8a8c75d69badc7dc3b17e
parent15943cbaf1ec46e86aaad55784822dbddf9ddb87 (diff)
android: update JNI facade, rename mouse/keyboard event flags
Change-Id: Ia2b9a812717d05c7d98d47bf0fe5fd293029d045 (cherry picked from commit 6d9124de6fac2dea39427978993e68155291cc9c)
-rw-r--r--android/Bootstrap/src/org/libreoffice/kit/Document.java55
-rw-r--r--android/Bootstrap/src/org/libreoffice/kit/Office.java3
-rw-r--r--android/source/src/java/org/libreoffice/InvalidationHandler.java4
-rw-r--r--android/source/src/java/org/libreoffice/LOEvent.java13
-rw-r--r--android/source/src/java/org/libreoffice/LOKitThread.java2
-rw-r--r--android/source/src/java/org/libreoffice/LOKitTileProvider.java16
-rw-r--r--android/source/src/java/org/libreoffice/TileProvider.java2
-rw-r--r--desktop/source/lib/lokandroid.cxx50
8 files changed, 115 insertions, 30 deletions
diff --git a/android/Bootstrap/src/org/libreoffice/kit/Document.java b/android/Bootstrap/src/org/libreoffice/kit/Document.java
index 6c0ee547ba4a..669ca94cd1a8 100644
--- a/android/Bootstrap/src/org/libreoffice/kit/Document.java
+++ b/android/Bootstrap/src/org/libreoffice/kit/Document.java
@@ -12,12 +12,12 @@ package org.libreoffice.kit;
import java.nio.ByteBuffer;
public class Document {
- public static final int PART_MODE_DEFAULT = 0;
- public static final int PART_MODE_SLIDE = 1;
- public static final int PART_MODE_NOTES = 2;
- public static final int PART_MODE_SLIDENOTES = 3;
- public static final int PART_MODE_EMBEDDEDOBJ = 4;
+ public static final int PART_MODE_SLIDE = 0;
+ public static final int PART_MODE_NOTES = 1;
+ /**
+ * Document types
+ */
public static final int DOCTYPE_TEXT = 0;
public static final int DOCTYPE_SPREADSHEET = 1;
public static final int DOCTYPE_PRESENTATION = 2;
@@ -27,10 +27,15 @@ public class Document {
/**
* Mouse event types
*/
- public static final int MOUSE_BUTTON_DOWN = 0;
- public static final int MOUSE_BUTTON_UP = 1;
- public static final int MOUSE_MOVE = 2;
+ public static final int MOUSE_EVENT_BUTTON_DOWN = 0;
+ public static final int MOUSE_EVENT_BUTTON_UP = 1;
+ public static final int MOUSE_EVENT_MOVE = 2;
+ /**
+ * Key event types
+ */
+ public static final int KEY_EVENT_PRESS = 0;
+ public static final int KEY_EVENT_RELEASE = 1;
/**
* State change types
@@ -40,6 +45,11 @@ public class Document {
public static final int UNDERLINE = 2;
public static final int STRIKEOUT = 3;
+ public static final int ALIGN_LEFT= 4;
+ public static final int ALIGN_CENTER = 5;
+ public static final int ALIGN_RIGHT= 6;
+ public static final int ALIGN_JUSTIFY= 7;
+
/**
* Callback message types
*/
@@ -52,6 +62,13 @@ public class Document {
public static final int CALLBACK_GRAPHIC_SELECTION = 6;
public static final int CALLBACK_HYPERLINK_CLICKED = 7;
public static final int CALLBACK_STATE_CHANGED = 8;
+ public static final int CALLBACK_STATUS_INTICATOR_START = 9;
+ public static final int CALLBACK_STATUS_INTICATOR_SET_VALUE = 10;
+ public static final int CALLBACK_STATUS_INTICATOR_FINISH = 11;
+ public static final int CALLBACK_SEARCH_NOT_FOUND = 12;
+ public static final int CALLBACK_DOCUMENT_SIZE_CHANGED = 13;
+ public static final int CALLBACK_SET_PART = 14;
+ public static final int CALLBACK_SEARCH_RESULT_SELECTION = 15;
/**
* Set text selection types
@@ -66,6 +83,19 @@ public class Document {
public static final int SET_GRAPHIC_SELECTION_START = 0;
public static final int SET_GRAPHIC_SELECTION_END = 1;
+ /**
+ * Mouse button type
+ */
+ public static final int MOUSE_BUTTON_LEFT = 1;
+ public static final int MOUSE_BUTTON_MIDDLE = 2;
+ public static final int MOUSE_BUTTON_RIGHT = 4;
+
+ public static final int KEYBOARD_MODIFIER_NONE = 0x0000;
+ public static final int KEYBOARD_MODIFIER_SHIFT = 0x1000;
+ public static final int KEYBOARD_MODIFIER_MOD1 = 0x2000;
+ public static final int KEYBOARD_MODIFIER_MOD2 = 0x4000;
+ public static final int KEYBOARD_MODIFIER_MOD3 = 0x8000;
+
private final ByteBuffer handle;
private MessageCallback messageCallback = null;
@@ -105,6 +135,8 @@ public class Document {
public native void setPartMode(int partMode);
+ public native String getPartPageRectangles();
+
public native long getDocumentHeight();
public native long getDocumentWidth();
@@ -140,13 +172,14 @@ public class Document {
* @param y - y coordinate
* @param count - number of events
*/
- public native void postMouseEvent(int type, int x, int y, int count);
+ public native void postMouseEvent(int type, int x, int y, int count, int button, int modifier);
/**
* Post a .uno: command to LOK
* @param command - the command, like ".uno:Bold"
+ * @param arguments
*/
- public native void postUnoCommand(String command);
+ public native void postUnoCommand(String command, String arguments);
/**
* Change text selection.
@@ -169,6 +202,8 @@ public class Document {
*/
public native void resetSelection();
+ public native String getCommandValues(String command);
+
/**
* Callback to retrieve messages from LOK
*/
diff --git a/android/Bootstrap/src/org/libreoffice/kit/Office.java b/android/Bootstrap/src/org/libreoffice/kit/Office.java
index 86eda5cf6873..8c616d0e9ce2 100644
--- a/android/Bootstrap/src/org/libreoffice/kit/Office.java
+++ b/android/Bootstrap/src/org/libreoffice/kit/Office.java
@@ -12,9 +12,6 @@ package org.libreoffice.kit;
import java.nio.ByteBuffer;
public class Office {
- public static final int KEY_PRESS = 0;
- public static final int KEY_RELEASE = 1;
-
private ByteBuffer handle;
public Office(ByteBuffer handle) {
diff --git a/android/source/src/java/org/libreoffice/InvalidationHandler.java b/android/source/src/java/org/libreoffice/InvalidationHandler.java
index 307dcd83fbf3..b7f0a5e0d9cd 100644
--- a/android/source/src/java/org/libreoffice/InvalidationHandler.java
+++ b/android/source/src/java/org/libreoffice/InvalidationHandler.java
@@ -208,7 +208,7 @@ public class InvalidationHandler implements Document.MessageCallback {
float newTop = moveToRect.top;
if (cursorRectangle.right < moveToRect.left || cursorRectangle.left < moveToRect.left) {
- newLeft = cursorRectangle.left - (moveToRect.width() * 0.1f);
+ newLeft = cursorRectangle.left - (moveToRect.width() * 0.1f);
} else if (cursorRectangle.right > moveToRect.right || cursorRectangle.left > moveToRect.right) {
newLeft = cursorRectangle.right - (moveToRect.width() * 0.9f);
}
@@ -306,6 +306,7 @@ public class InvalidationHandler implements Document.MessageCallback {
/**
* Trigger a transition to a new overlay state.
+ *
* @param next - new state to transition to
*/
public synchronized void changeStateTo(OverlayState next) {
@@ -314,6 +315,7 @@ public class InvalidationHandler implements Document.MessageCallback {
/**
* Executes a transition from old overlay state to a new overlay state.
+ *
* @param previous - old state
* @param next - new state
*/
diff --git a/android/source/src/java/org/libreoffice/LOEvent.java b/android/source/src/java/org/libreoffice/LOEvent.java
index 7067714fd1f6..215512136167 100644
--- a/android/source/src/java/org/libreoffice/LOEvent.java
+++ b/android/source/src/java/org/libreoffice/LOEvent.java
@@ -47,6 +47,7 @@ public class LOEvent implements Comparable<LOEvent> {
public KeyEvent mKeyEvent;
public RectF mInvalidationRect;
public SelectionHandle.HandleType mHandleType;
+ public String mValue;
public LOEvent(int type) {
mType = type;
@@ -58,10 +59,18 @@ public class LOEvent implements Comparable<LOEvent> {
mComposedTileLayer = composedTileLayer;
}
- public LOEvent(int type, String filename) {
+ public LOEvent(int type, String someString) {
mType = type;
mTypeString = "String";
- mString = filename;
+ mString = someString;
+ mValue = null;
+ }
+
+ public LOEvent(int type, String key, String value) {
+ mType = type;
+ mTypeString = "key / value";
+ mString = key;
+ mValue = value;
}
public LOEvent(int type, int partIndex) {
diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java b/android/source/src/java/org/libreoffice/LOKitThread.java
index 1a14e7ceb457..5a784c78e247 100644
--- a/android/source/src/java/org/libreoffice/LOKitThread.java
+++ b/android/source/src/java/org/libreoffice/LOKitThread.java
@@ -243,7 +243,7 @@ public class LOKitThread extends Thread {
mInvalidationHandler.changeStateTo(InvalidationHandler.OverlayState.NONE);
break;
case LOEvent.UNO_COMMAND:
- mTileProvider.postUnoCommand(event.mString);
+ mTileProvider.postUnoCommand(event.mString, event.mValue);
break;
}
}
diff --git a/android/source/src/java/org/libreoffice/LOKitTileProvider.java b/android/source/src/java/org/libreoffice/LOKitTileProvider.java
index 6b7759d4a90e..f859b7a1bc62 100644
--- a/android/source/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/source/src/java/org/libreoffice/LOKitTileProvider.java
@@ -388,12 +388,12 @@ public class LOKitTileProvider implements TileProvider {
String keyString = keyEvent.getCharacters();
for (int i = 0; i < keyString.length(); i++) {
int codePoint = keyString.codePointAt(i);
- mDocument.postKeyEvent(Office.KEY_PRESS, codePoint, getKeyCode(keyEvent));
+ mDocument.postKeyEvent(Document.KEY_EVENT_PRESS, codePoint, getKeyCode(keyEvent));
}
} else if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
- mDocument.postKeyEvent(Office.KEY_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent));
+ mDocument.postKeyEvent(Document.KEY_EVENT_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent));
} else if (keyEvent.getAction() == KeyEvent.ACTION_UP) {
- mDocument.postKeyEvent(Office.KEY_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent));
+ mDocument.postKeyEvent(Document.KEY_EVENT_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent));
}
}
@@ -401,7 +401,7 @@ public class LOKitTileProvider implements TileProvider {
int x = (int) pixelToTwip(inDocument.x, mDPI);
int y = (int) pixelToTwip(inDocument.y, mDPI);
- mDocument.postMouseEvent(type, x, y, numberOfClicks);
+ mDocument.postMouseEvent(type, x, y, numberOfClicks, Document.MOUSE_BUTTON_LEFT, Document.KEYBOARD_MODIFIER_NONE);
}
/**
@@ -409,7 +409,7 @@ public class LOKitTileProvider implements TileProvider {
*/
@Override
public void mouseButtonDown(PointF documentCoordinate, int numberOfClicks) {
- mouseButton(Document.MOUSE_BUTTON_DOWN, documentCoordinate, numberOfClicks);
+ mouseButton(Document.MOUSE_EVENT_BUTTON_DOWN, documentCoordinate, numberOfClicks);
}
/**
@@ -417,12 +417,12 @@ public class LOKitTileProvider implements TileProvider {
*/
@Override
public void mouseButtonUp(PointF documentCoordinate, int numberOfClicks) {
- mouseButton(Document.MOUSE_BUTTON_UP, documentCoordinate, numberOfClicks);
+ mouseButton(Document.MOUSE_EVENT_BUTTON_UP, documentCoordinate, numberOfClicks);
}
@Override
- public void postUnoCommand(String command) {
- mDocument.postUnoCommand(command);
+ public void postUnoCommand(String command, String arguments) {
+ mDocument.postUnoCommand(command, arguments);
}
private void setTextSelection(int type, PointF documentCoordinate) {
diff --git a/android/source/src/java/org/libreoffice/TileProvider.java b/android/source/src/java/org/libreoffice/TileProvider.java
index cf9173a8d1bd..3104172ef5cf 100644
--- a/android/source/src/java/org/libreoffice/TileProvider.java
+++ b/android/source/src/java/org/libreoffice/TileProvider.java
@@ -114,7 +114,7 @@ public interface TileProvider {
*
* @param command - the .uno: command, like ".uno:Bold"
*/
- void postUnoCommand(String command);
+ void postUnoCommand(String command, String arguments);
/**
* Send text selection start coordinate.
diff --git a/desktop/source/lib/lokandroid.cxx b/desktop/source/lib/lokandroid.cxx
index 6142f5ab9885..9d7ce6ea5b53 100644
--- a/desktop/source/lib/lokandroid.cxx
+++ b/desktop/source/lib/lokandroid.cxx
@@ -183,6 +183,14 @@ extern "C" SAL_JNI_EXPORT jint JNICALL Java_org_libreoffice_kit_Document_getPart
return (jint) pDocument->pClass->getPart(pDocument);
}
+extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getPartPageRectangles
+ (JNIEnv* pEnv, jobject aObject)
+{
+ LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject);
+ char* pRectangles = pDocument->pClass->getPartPageRectangles(pDocument);
+ return pEnv->NewStringUTF(pRectangles);
+}
+
extern "C" SAL_JNI_EXPORT jint JNICALL Java_org_libreoffice_kit_Document_getParts
(JNIEnv* pEnv, jobject aObject)
{
@@ -277,22 +285,27 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postKey
}
extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postMouseEvent
- (JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y, jint count)
+ (JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y, jint count, jint button, jint modifier)
{
LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject);
- pDocument->pClass->postMouseEvent(pDocument, type, x, y, count, MOUSE_LEFT, 0);
+ pDocument->pClass->postMouseEvent(pDocument, type, x, y, count, button, modifier);
}
extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postUnoCommand
- (JNIEnv* pEnv, jobject aObject, jstring command)
+ (JNIEnv* pEnv, jobject aObject, jstring command, jstring arguments)
{
LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject);
const char* pCommand = pEnv->GetStringUTFChars(command, NULL);
+ const char* pArguments = nullptr;
+ if (arguments != NULL)
+ pArguments = pEnv->GetStringUTFChars(arguments, NULL);
- pDocument->pClass->postUnoCommand(pDocument, pCommand, 0);
+ pDocument->pClass->postUnoCommand(pDocument, pCommand, pArguments);
pEnv->ReleaseStringUTFChars(command, pCommand);
+ if (arguments != NULL)
+ pEnv->ReleaseStringUTFChars(arguments, pArguments);
}
extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setTextSelection
@@ -302,6 +315,22 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setText
pDocument->pClass->setTextSelection(pDocument, type, x, y);
}
+extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getTextSelection
+ (JNIEnv* pEnv, jobject aObject, jstring mimeType)
+{
+ LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject);
+
+ const char* pMimeType = pEnv->GetStringUTFChars(mimeType, NULL);
+
+ char* pUsedMimeType = 0;
+ char* pSelection = pDocument->pClass->getTextSelection(pDocument, pMimeType, &pUsedMimeType);
+ free(pUsedMimeType);
+
+ pEnv->ReleaseStringUTFChars(mimeType, pMimeType);
+
+ return pEnv->NewStringUTF(pSelection);
+}
+
extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setGraphicSelection
(JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y)
{
@@ -316,4 +345,17 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_resetSe
pDocument->pClass->resetSelection(pDocument);
}
+extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getCommandValues
+ (JNIEnv* pEnv, jobject aObject, jstring command)
+{
+ LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject);
+
+ const char* pCommand = pEnv->GetStringUTFChars(command, NULL);
+
+ char* pValue = pDocument->pClass->getCommandValues(pDocument, pCommand);
+
+ pEnv->ReleaseStringUTFChars(command, pCommand);
+
+ return pEnv->NewStringUTF(pValue);
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */