reader/android: link/unlink checkbox in the options menu
Closes #42
Change-Id: Ief2e397558c5d9327942f7db91dae1bf974856cb
diff --git a/android/app/src/main/java/io/v/android/apps/reader/DeviceSetChooserActivity.java b/android/app/src/main/java/io/v/android/apps/reader/DeviceSetChooserActivity.java
index 579bc90..4addeac 100644
--- a/android/app/src/main/java/io/v/android/apps/reader/DeviceSetChooserActivity.java
+++ b/android/app/src/main/java/io/v/android/apps/reader/DeviceSetChooserActivity.java
@@ -4,12 +4,12 @@
package io.v.android.apps.reader;
-import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
+import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
@@ -26,7 +26,7 @@
* When the user clicks on one of the device sets, it starts the PdfViewerActivity with the file
* associated with the device set.
*/
-public class DeviceSetChooserActivity extends Activity {
+public class DeviceSetChooserActivity extends AppCompatActivity {
private static final String TAG = DeviceSetChooserActivity.class.getSimpleName();
diff --git a/android/app/src/main/java/io/v/android/apps/reader/PdfViewerActivity.java b/android/app/src/main/java/io/v/android/apps/reader/PdfViewerActivity.java
index cf28402..44b85a8 100644
--- a/android/app/src/main/java/io/v/android/apps/reader/PdfViewerActivity.java
+++ b/android/app/src/main/java/io/v/android/apps/reader/PdfViewerActivity.java
@@ -4,7 +4,6 @@
package io.v.android.apps.reader;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -12,7 +11,10 @@
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
+import android.support.v7.app.AppCompatActivity;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -39,7 +41,7 @@
/**
* Activity that shows the contents of the selected pdf file.
*/
-public class PdfViewerActivity extends Activity {
+public class PdfViewerActivity extends AppCompatActivity {
private static final String TAG = PdfViewerActivity.class.getSimpleName();
@@ -48,6 +50,7 @@
private PdfViewWrapper mPdfView;
private Button mButtonPrev;
private Button mButtonNext;
+ private MenuItem mMenuItemLinkPage;
private DB mDB;
private DBList<DeviceSet> mDeviceSets;
@@ -128,7 +131,10 @@
}
mCurrentDS = changed;
- mPdfView.setPage(getDeviceMeta().getPage());
+
+ DeviceMeta dm = getDeviceMeta();
+ mPdfView.setPage(dm.getPage());
+ mMenuItemLinkPage.setChecked(dm.getLinked());
}
@Override
@@ -210,6 +216,36 @@
leaveDeviceSet();
}
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_pdf_viewer, menu);
+ mMenuItemLinkPage = menu.findItem(R.id.action_link_page);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.action_link_page:
+ toggleLinkedState(item.isChecked());
+ return true;
+
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ private void toggleLinkedState(boolean checked) {
+ DeviceMeta dm = getDeviceMeta();
+ if (dm == null) {
+ return;
+ }
+
+ dm.setLinked(!checked);
+ mDB.updateDeviceSet(mCurrentDS);
+ }
+
private DeviceMeta createDeviceMeta() {
String deviceId = DeviceInfoFactory.getDeviceId(this);
int page = 1;
@@ -347,6 +383,7 @@
dm.setPage(dm.getPage() - 1);
}
+ mDB.updateDeviceSet(mCurrentDS);
return;
}
@@ -380,6 +417,7 @@
dm.setPage(dm.getPage() + 1);
}
+ mDB.updateDeviceSet(mCurrentDS);
return;
}
diff --git a/android/app/src/main/res/menu/menu_device_set_chooser.xml b/android/app/src/main/res/menu/menu_device_set_chooser.xml
index 60fca2e..0fa0b45 100644
--- a/android/app/src/main/res/menu/menu_device_set_chooser.xml
+++ b/android/app/src/main/res/menu/menu_device_set_chooser.xml
@@ -1,9 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".DeviceSetChooserActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/action_settings" />
</menu>
diff --git a/android/app/src/main/res/menu/menu_pdf_viewer.xml b/android/app/src/main/res/menu/menu_pdf_viewer.xml
new file mode 100644
index 0000000..de831c4
--- /dev/null
+++ b/android/app/src/main/res/menu/menu_pdf_viewer.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ tools:context=".DeviceSetChooserActivity">
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ app:showAsAction="never"
+ android:title="@string/action_settings" />
+ <item
+ android:id="@+id/action_link_page"
+ android:orderInCategory="50"
+ app:showAsAction="never"
+ android:checkable="true"
+ android:checked="true"
+ android:title="@string/action_link" />
+</menu>
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
index 0edb971..0a142de 100644
--- a/android/app/src/main/res/values/colors.xml
+++ b/android/app/src/main/res/values/colors.xml
@@ -6,4 +6,5 @@
<color name="windowBackground">#455A64</color>
<color name="buttonNormal">#E0F2F1</color>
<color name="accent">#FF9800</color>
+ <color name="itemBackground">#004D40</color>
</resources>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index d043fa0..1c91eba 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
<resources>
<string name="app_name">PDF Reader</string>
<string name="action_settings">Settings</string>
+ <string name="action_link">Link Page</string>
</resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index f0720a6..61a6039 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -10,6 +10,8 @@
<item name="android:windowBackground">@color/windowBackground</item>
<item name="android:colorButtonNormal">@color/buttonNormal</item>
<item name="android:colorAccent">@color/accent</item>
+ <item name="android:itemTextAppearance">@style/PopupMenuTextStyle</item>
+ <item name="android:itemBackground">@color/itemBackground</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
@@ -17,4 +19,8 @@
<item name="colorAccent">@color/accent</item>
</style>
+ <style name="PopupMenuTextStyle" parent="Theme.AppCompat.Light">
+ <item name="android:textColor">@color/textPrimary</item>
+ </style>
+
</resources>