diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 06fc1f4..f0d2e56 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,7 +4,7 @@
android:versionCode="4"
android:versionName="1.2.1" >
+ android:targetSdkVersion="26" />
diff --git a/app/src/main/assets/viewer.js b/app/src/main/assets/viewer.js
index b358e48..d810eb8 100644
--- a/app/src/main/assets/viewer.js
+++ b/app/src/main/assets/viewer.js
@@ -63,5 +63,6 @@ function onGetDocument() {
channel.setNumPages(pdfDoc.numPages);
scale = zoomLevels[channel.getZoomLevel()] / 100;
renderPage(channel.getPage());
+ channel.onDocumentLoaded();
});
}
diff --git a/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java b/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java
index 9bd63c2..fda5a5b 100644
--- a/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java
+++ b/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java
@@ -44,6 +44,7 @@ public class PdfViewer extends Activity {
private WebView mWebView;
private Uri mUri;
private Channel mChannel;
+ private boolean documentLoaded;
private class Channel {
private int mPage;
@@ -73,6 +74,9 @@ public int getZoomLevel() {
public void setNumPages(int numPages) {
mNumPages = numPages;
}
+
+ @JavascriptInterface
+ public void onDocumentLoaded() { documentLoaded = true; invalidateOptionsMenu(); }
}
@Override
@@ -184,6 +188,12 @@ private void openDocument() {
startActivityForResult(intent, ACTION_OPEN_DOCUMENT_REQUEST_CODE);
}
+ private void renderDocument() {
+ documentLoaded = false;
+ invalidateOptionsMenu();
+ mWebView.evaluateJavascript("onRenderPage()", null);
+ }
+
private void closeDocument() {
if (mWebView != null) {
runOnUiThread(new Runnable() {
@@ -224,6 +234,18 @@ public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.pdf_viewer, menu);
+
+ if (documentLoaded) {
+ for (int itemId : new int[] { R.id.action_previous,
+ R.id.action_next,
+ R.id.action_close,
+ R.id.action_zoom_out,
+ R.id.action_zoom_in,
+ R.id.action_print }) {
+ menu.findItem(itemId).setVisible(true);
+ }
+ }
+
return true;
}
@@ -233,14 +255,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.action_previous:
if (mChannel.mPage > 1) {
mChannel.mPage--;
- mWebView.evaluateJavascript("onRenderPage()", null);
+ renderDocument();
}
return super.onOptionsItemSelected(item);
case R.id.action_next:
if (mChannel.mPage < mChannel.mNumPages) {
mChannel.mPage++;
- mWebView.evaluateJavascript("onRenderPage()", null);
+ renderDocument();
}
return super.onOptionsItemSelected(item);
@@ -256,14 +278,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.action_zoom_out:
if (mChannel.mZoomLevel > 0) {
mChannel.mZoomLevel--;
- mWebView.evaluateJavascript("onRenderPage()", null);
+ renderDocument();
}
return super.onOptionsItemSelected(item);
case R.id.action_zoom_in:
if (mChannel.mZoomLevel < MAX_ZOOM_LEVEL) {
mChannel.mZoomLevel++;
- mWebView.evaluateJavascript("onRenderPage()", null);
+ renderDocument();
}
return super.onOptionsItemSelected(item);
@@ -287,7 +309,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
int page = picker.getValue();
if (page >= 1 && page <= mChannel.mNumPages) {
mChannel.mPage = page;
- mWebView.evaluateJavascript("onRenderPage()", null);
+ renderDocument();
}
}
})
diff --git a/app/src/main/res/menu/pdf_viewer.xml b/app/src/main/res/menu/pdf_viewer.xml
index c90ca2a..db4dc6b 100644
--- a/app/src/main/res/menu/pdf_viewer.xml
+++ b/app/src/main/res/menu/pdf_viewer.xml
@@ -10,48 +10,55 @@
android:id="@+id/action_previous"
android:icon="@drawable/ic_navigate_before_white_24dp"
android:title="@string/action_previous"
+ android:visible="false"
android:showAsAction="ifRoom" />
+ android:id="@+id/action_open"
+ android:icon="@drawable/ic_insert_drive_file_white_24dp"
+ android:title="@string/action_open"
+ android:showAsAction="ifRoom" />
+ android:id="@+id/action_close"
+ android:icon="@android:drawable/ic_menu_close_clear_cancel"
+ android:title="@string/action_close"
+ android:visible="false"
+ android:showAsAction="ifRoom" />