summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-11-21 16:35:08 +0100
committerMiklos Vajna <vmiklos@suse.cz>2012-11-21 17:16:30 +0100
commit3ef3601f79ed6df6e000002e207eac13666c53d4 (patch)
treee68de5fec83d0cbd68d43e793765b48e2fe5ad3b /android
parentbf246fce77cdfac7e031d93a912d0bf2071a6e5e (diff)
android: add 'go to page' menu item
Change-Id: Ie9d04ef9aeef5cacd1c3b8557111ee3a6194ccd4
Diffstat (limited to 'android')
-rw-r--r--android/experimental/DocumentLoader/res/menu/option.xml5
-rw-r--r--android/experimental/DocumentLoader/res/values/string.xml4
-rw-r--r--android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java71
3 files changed, 75 insertions, 5 deletions
diff --git a/android/experimental/DocumentLoader/res/menu/option.xml b/android/experimental/DocumentLoader/res/menu/option.xml
new file mode 100644
index 000000000000..3230d83fe0cc
--- /dev/null
+++ b/android/experimental/DocumentLoader/res/menu/option.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@+id/go_to_page"
+ android:title="@string/go_to_page"/>
+</menu>
diff --git a/android/experimental/DocumentLoader/res/values/string.xml b/android/experimental/DocumentLoader/res/values/string.xml
new file mode 100644
index 000000000000..148461bfd621
--- /dev/null
+++ b/android/experimental/DocumentLoader/res/values/string.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="go_to_page">Go to page</string>
+</resources>
diff --git a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java
index 64d4248f5657..3ee60ac11e09 100644
--- a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java
+++ b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java
@@ -57,6 +57,8 @@
package org.libreoffice.android.examples;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -74,12 +76,16 @@ import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Gravity;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
+import android.widget.NumberPicker;
import android.widget.TextView;
import android.widget.ViewFlipper;
import android.widget.ViewSwitcher;
@@ -1004,6 +1010,44 @@ public class DocumentLoader
new DocumentLoadTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, "file://" + input);
}
+ private void goToPage(int number)
+ {
+ // Remove old views.
+ flipper.removeAllViews();
+
+ // Add new ones.
+ flipper.addView(new PageViewer(number), 0, matchParent);
+ for (int i = 0; i < PAGECACHE_PLUSMINUS; i++)
+ flipper.addView(new PageViewer(number + i + 1), i + 1, matchParent);
+ for (int i = 0; i < PAGECACHE_PLUSMINUS; i++)
+ flipper.addView(new PageViewer(number + (i * -1) - 1), PAGECACHE_PLUSMINUS + i + 1, matchParent);
+ }
+
+ private void askPageNumber()
+ {
+ AlertDialog.Builder alert = new AlertDialog.Builder(this);
+ alert.setTitle(R.string.go_to_page);
+ final NumberPicker input = new NumberPicker(this);
+ input.setMinValue(1);
+ input.setMaxValue(documentContext.pageCount);
+ alert.setView(input);
+ alert.setPositiveButton("OK", new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int whichButton)
+ {
+ goToPage(input.getValue() - 1);
+ }
+ });
+
+ alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int whichButton)
+ {
+ }
+ });
+ alert.show();
+ }
+
@Override
public void onCreate(Bundle savedInstanceState)
{
@@ -1048,11 +1092,7 @@ public class DocumentLoader
int currentPageNumber = 0;
if (savedInstanceState != null)
currentPageNumber = savedInstanceState.getInt("currentPageNumber");
- flipper.addView(new PageViewer(currentPageNumber), 0, matchParent);
- for (int i = 0; i < PAGECACHE_PLUSMINUS; i++)
- flipper.addView(new PageViewer(currentPageNumber+i+1), i+1, matchParent);
- for (int i = 0; i < PAGECACHE_PLUSMINUS; i++)
- flipper.addView(new PageViewer(currentPageNumber+(i*-1)-1), PAGECACHE_PLUSMINUS + i+1, matchParent);
+ goToPage(currentPageNumber);
setContentView(flipper);
}
@@ -1067,6 +1107,27 @@ public class DocumentLoader
{
return gestureDetector.onTouchEvent(event);
}
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu)
+ {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.option, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item)
+ {
+ // Handle item selection
+ switch (item.getItemId()) {
+ case R.id.go_to_page:
+ askPageNumber();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
}
// vim:set shiftwidth=4 softtabstop=4 expandtab: