Kaydet (Commit) cc54da22 authored tarafından Siqi Liu's avatar Siqi Liu

java part handles received statechange callback

üst b3f42066
......@@ -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
......
......@@ -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;
}
}
......
......@@ -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() {
......
......@@ -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.
*/
......
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: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment