summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorSiqi Liu <me@siqi.fr>2015-04-13 16:22:49 +0200
committerSiqi Liu <me@siqi.fr>2015-04-13 16:22:49 +0200
commitcc54da22377feef44e1aa48a92d9b4c86eda7577 (patch)
tree0a9406b68b1d1cf496e4730acf5ac6c6982b6811 /android
parentb3f42066e705c0bb313a4e36f0fb617fc1818c0d (diff)
java part handles received statechange callback
Diffstat (limited to 'android')
-rw-r--r--android/Bootstrap/src/org/libreoffice/kit/Document.java10
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java15
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java6
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/ToolbarController.java57
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/canvas/ImageUtils.java24
5 files changed, 109 insertions, 3 deletions
diff --git a/android/Bootstrap/src/org/libreoffice/kit/Document.java b/android/Bootstrap/src/org/libreoffice/kit/Document.java
index 5d97656879cf..6c0ee547ba4a 100644
--- a/android/Bootstrap/src/org/libreoffice/kit/Document.java
+++ b/android/Bootstrap/src/org/libreoffice/kit/Document.java
@@ -31,6 +31,15 @@ public class Document {
public static final int MOUSE_BUTTON_UP = 1;
public static final int MOUSE_MOVE = 2;
+
+ /**
+ * State change types
+ */
+ public static final int BOLD = 0;
+ public static final int ITALIC = 1;
+ public static final int UNDERLINE = 2;
+ public static final int STRIKEOUT = 3;
+
/**
* Callback message types
*/
@@ -42,6 +51,7 @@ public class Document {
public static final int CALLBACK_CURSOR_VISIBLE = 5;
public static final int CALLBACK_GRAPHIC_SELECTION = 6;
public static final int CALLBACK_HYPERLINK_CLICKED = 7;
+ public static final int CALLBACK_STATE_CHANGED = 8;
/**
* Set text selection types
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
index 0c6710396677..385fab5123ba 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/InvalidationHandler.java
@@ -68,11 +68,24 @@ public class InvalidationHandler implements Document.MessageCallback {
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;
+ case Document.CALLBACK_STATE_CHANGED:
+ Log.d("Document.CALLBACK_STATE_CHANGED: " + payload);
+ String[] parts = payload.split(":");
+ boolean pressed = Boolean.parseBoolean(parts[1]);
+ if (parts[0].equals("Bold")) {
+ LOKitShell.getToolbarController().onToggleStateChanged(Document.BOLD, pressed);
+ } else if (parts[0].equals("Italic")) {
+ LOKitShell.getToolbarController().onToggleStateChanged(Document.ITALIC, pressed);
+ } else if (parts[0].equals("Underline")) {
+ LOKitShell.getToolbarController().onToggleStateChanged(Document.UNDERLINE, pressed);
+ } else if (parts[0].equals("Strikeout")) {
+ LOKitShell.getToolbarController().onToggleStateChanged(Document.STRIKEOUT, pressed);
+ }
+ break;
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java
index 61ec01453a1a..1a8c97012d2a 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java
@@ -19,6 +19,7 @@ import android.widget.ListView;
import android.widget.Toast;
import org.libreoffice.overlay.DocumentOverlay;
+
import org.mozilla.gecko.ZoomConstraints;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.LayerView;
@@ -69,6 +70,7 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
+ mToolbarController.setOptionMenu(menu);
return super.onCreateOptionsMenu(menu);
}
@@ -141,7 +143,7 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
- mToolbarController = new ToolbarController(getSupportActionBar(), toolbar);
+ mToolbarController = new ToolbarController(this, getSupportActionBar(), toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
@@ -176,6 +178,8 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
// create TextCursorLayer
mDocumentOverlay = new DocumentOverlay(mAppContext, layerView);
+
+
}
private boolean copyFileToTemp() {
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/ToolbarController.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/ToolbarController.java
index 358617f208aa..34eff3fc3d9c 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/ToolbarController.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/ToolbarController.java
@@ -8,22 +8,77 @@
*/
package org.libreoffice;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.libreoffice.canvas.ImageUtils;
+import org.libreoffice.kit.Document;
/**
* Controls the changes to the toolbar.
*/
public class ToolbarController {
+ private static final String LOGTAG = ToolbarController.class.getSimpleName();
private final Toolbar mToolbar;
private final ActionBar mActionBar;
+ private Menu mOptionsMenu;
+ private Context mContext;
- public ToolbarController(ActionBar actionBar, Toolbar toolbar) {
+ public ToolbarController(Context context, ActionBar actionBar, Toolbar toolbar) {
mToolbar = toolbar;
mActionBar = actionBar;
+ mContext = context;
switchToViewMode();
}
+ public void onToggleStateChanged(int type, boolean pressed) {
+ MenuItem menuItem = null;
+ Bitmap icon = null;
+ switch (type) {
+ case Document.BOLD:
+ menuItem = mOptionsMenu.findItem(R.id.action_bold);
+ icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.action_bold);
+ break;
+ case Document.ITALIC:
+ menuItem = mOptionsMenu.findItem(R.id.action_italic);
+ icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.action_italic);
+ break;
+ case Document.UNDERLINE:
+ menuItem = mOptionsMenu.findItem(R.id.action_underline);
+ icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.action_underline);
+ break;
+ case Document.STRIKEOUT:
+ menuItem = mOptionsMenu.findItem(R.id.action_strikeout);
+ icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.action_strikeout);
+ break;
+ default:
+ Log.e(LOGTAG, "Uncaptured state change type: " + type);
+ return;
+ }
+
+ if (menuItem == null) {
+ Log.e(LOGTAG, "MenuItem not found.");
+ return;
+ }
+
+ if (pressed) {
+ icon = ImageUtils.bitmapToPressed(icon);
+ }
+
+ menuItem.setIcon(new BitmapDrawable(mContext.getResources(), icon));
+ }
+
+ public void setOptionMenu(Menu menu) {
+ mOptionsMenu = menu;
+ }
+
/**
* Change the toolbar to edit mode.
*/
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/canvas/ImageUtils.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/canvas/ImageUtils.java
new file mode 100644
index 000000000000..fd62444c41be
--- /dev/null
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/canvas/ImageUtils.java
@@ -0,0 +1,24 @@
+package org.libreoffice.canvas;
+
+import android.graphics.Bitmap;
+import android.graphics.Color;
+
+public class ImageUtils {
+ /**
+ * Convert transparent pixels to gray ones.
+ */
+ public static Bitmap bitmapToPressed(Bitmap input) {
+ Bitmap op = Bitmap.createBitmap(input.getWidth(), input.getHeight(), input.getConfig());
+ for(int i=0; i<op.getWidth(); i++){
+ for(int j=0; j<op.getHeight(); j++){
+ int p = input.getPixel(i, j);
+ // assign gray color if the pixel in input is transparent.
+ int newColor = Color.alpha(p) == 0 ? Color.argb(255, 200, 200, 200) : p;
+ op.setPixel(i, j, newColor);
+ }
+ }
+
+ return op;
+ }
+}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */