summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2015-03-06 21:52:42 +0900
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-03-09 10:16:20 +0100
commitb792f60279186953889591c5dd4bc76017db7aa0 (patch)
treea9bf6e01e21031e4b208db25682681acac222283
parentd5c32b45186dfa8e78116841f5bb0a73ee545b33 (diff)
android: handle callbacks directly in InvalidationHandler
Change-Id: Ic4ceaadcf251f7257001f8043161ce15898d7239
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java25
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java1
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java36
3 files changed, 28 insertions, 34 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
index 7bc58243ac4e..478ab2d22af7 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
@@ -14,9 +14,10 @@ import java.util.List;
/**
* Parses (interprets) and handles invalidation messages from LibreOffice.
*/
-public class InvalidationHandler {
+public class InvalidationHandler implements Document.MessageCallback {
private static String LOGTAG = InvalidationHandler.class.getSimpleName();
+ private TileProvider mTileProvider;
private TextCursorLayer mTextCursorLayer;
private TextSelection mTextSelection;
private OverlayState mState;
@@ -24,16 +25,25 @@ public class InvalidationHandler {
public InvalidationHandler(LibreOfficeMainActivity mainActivity) {
mTextCursorLayer = mainActivity.getTextCursorLayer();
mTextSelection = mainActivity.getTextSelection();
+ mTileProvider = null;
mState = OverlayState.NONE;
}
+ public void setTileProvider(TileProvider tileProvider) {
+ mTileProvider = tileProvider;
+ }
+
/**
- * Processes invalidation message
+ * Processes callback message
*
* @param messageID - ID of the message
* @param payload - additional invalidation message payload
*/
- public void processMessage(int messageID, String payload) {
+ @Override
+ public void messageRetrieved(int messageID, String payload) {
+ if (!LOKitShell.isEditingEnabled()) {
+ return;
+ }
switch (messageID) {
case Document.CALLBACK_INVALIDATE_TILES:
invalidateTiles(payload);
@@ -53,6 +63,15 @@ public class InvalidationHandler {
case Document.CALLBACK_CURSOR_VISIBLE:
cursorVisibility(payload);
break;
+ case Document.CALLBACK_HYPERLINK_CLICKED:
+ if (!payload.startsWith("http://") && !payload.startsWith("https://")) {
+ payload = "http://" + payload;
+ }
+
+ Intent urlIntent = new Intent(Intent.ACTION_VIEW);
+ urlIntent.setData(Uri.parse(payload));
+ LibreOfficeMainActivity.mAppContext.startActivity(urlIntent);
+ break;
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 78e18d3e4558..e3c7c2c2d830 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -159,6 +159,7 @@ public class LOKitThread extends Thread {
mInvalidationHandler = new InvalidationHandler(LibreOfficeMainActivity.mAppContext);
mTileProvider = TileProviderFactory.create(mLayerClient, mInvalidationHandler, filename);
+ mInvalidationHandler.setTileProvider(mTileProvider);
if (mTileProvider.isReady()) {
LOKitShell.showProgressSpinner();
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index 179c6fffe1f1..ae14cc65c25f 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -28,7 +28,7 @@ import java.nio.ByteBuffer;
/**
* LOKit implementation of TileProvider.
*/
-public class LOKitTileProvider implements TileProvider, Document.MessageCallback {
+public class LOKitTileProvider implements TileProvider {
private static final String LOGTAG = LOKitTileProvider.class.getSimpleName();
private static int TILE_SIZE = 256;
private final GeckoLayerClient mLayerClient;
@@ -43,13 +43,13 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
private float mWidthTwip;
private float mHeightTwip;
- private InvalidationHandler mInvalidationHandler;
+ private Document.MessageCallback mMessageCallback;
private long objectCreationTime = System.currentTimeMillis();
- public LOKitTileProvider(GeckoLayerClient layerClient, InvalidationHandler invalidationHandler, String input) {
+ public LOKitTileProvider(GeckoLayerClient layerClient, Document.MessageCallback messageCallback, String input) {
mLayerClient = layerClient;
- mInvalidationHandler = invalidationHandler;
+ mMessageCallback = messageCallback;
mDPI = (float) LOKitShell.getDpi();
mTileWidth = pixelToTwip(TILE_SIZE, mDPI);
mTileHeight = pixelToTwip(TILE_SIZE, mDPI);
@@ -89,7 +89,7 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
}
public void postLoad() {
- mDocument.setMessageCallback(this);
+ mDocument.setMessageCallback(mMessageCallback);
int parts = mDocument.getParts();
Log.i(LOGTAG, "Document parts: " + parts);
@@ -407,32 +407,6 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
return mDocument.getPart();
}
-
- /**
- * Process the retrieved messages from LOK
- */
- @Override
- public void messageRetrieved(int messageID, String payload) {
- /**
- * Handles messages that do not require entering editing mode.
- */
- switch (messageID) {
- case Document.CALLBACK_HYPERLINK_CLICKED:
- if (!payload.startsWith("http://") &&
- !payload.startsWith("https://"))
- payload = "http://" + payload;
-
- Intent url_intent = new Intent(Intent.ACTION_VIEW);
- url_intent.setData(Uri.parse(payload));
- LibreOfficeMainActivity.mAppContext.startActivity(url_intent);
- return;
- }
-
- if (!LOKitShell.isEditingEnabled()) {
- return;
- }
- mInvalidationHandler.processMessage(messageID, payload);
- }
}
// vim:set shiftwidth=4 softtabstop=4 expandtab: