From f6ab3a36707741b27da4fa3a59a2b1b2b46172f3 Mon Sep 17 00:00:00 2001 From: Lesik Date: Thu, 28 Dec 2017 21:43:24 +0100 Subject: [PATCH 1/4] Add document loaded callback, toggle print menu item --- app/src/main/assets/viewer.js | 1 + .../co/copperhead/pdfviewer/PdfViewer.java | 24 +++++++++++++++---- app/src/main/res/menu/pdf_viewer.xml | 1 + 3 files changed, 21 insertions(+), 5 deletions(-) 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..578af13 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,11 @@ private void openDocument() { startActivityForResult(intent, ACTION_OPEN_DOCUMENT_REQUEST_CODE); } + private void renderDocument() { + documentLoaded = false; + mWebView.evaluateJavascript("onRenderPage()", null); + } + private void closeDocument() { if (mWebView != null) { runOnUiThread(new Runnable() { @@ -224,6 +233,11 @@ public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.pdf_viewer, menu); + + if (documentLoaded) { + menu.findItem(R.id.action_print).setVisible(true); + } + return true; } @@ -233,14 +247,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 +270,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 +301,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..847f820 100644 --- a/app/src/main/res/menu/pdf_viewer.xml +++ b/app/src/main/res/menu/pdf_viewer.xml @@ -52,6 +52,7 @@ android:id="@+id/action_print" android:icon="@drawable/ic_print_white_24dp" android:title="@string/action_print" + android:visible="false" android:showAsAction="ifRoom" /> From 97e564ef05428d82eed4544c9eb4ac09a3cc1ddd Mon Sep 17 00:00:00 2001 From: Lesik Date: Thu, 28 Dec 2017 21:43:45 +0100 Subject: [PATCH 2/4] Bump targetSdkVersion to 26 --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" /> From d1d1c6099566f90cb0653b2562deba5b7e431692 Mon Sep 17 00:00:00 2001 From: Lesik Date: Thu, 28 Dec 2017 22:55:28 +0100 Subject: [PATCH 3/4] Hide all useless menu items until needed --- .../main/java/co/copperhead/pdfviewer/PdfViewer.java | 10 +++++++++- app/src/main/res/menu/pdf_viewer.xml | 12 ++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java b/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java index 578af13..fda5a5b 100644 --- a/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java +++ b/app/src/main/java/co/copperhead/pdfviewer/PdfViewer.java @@ -190,6 +190,7 @@ private void openDocument() { private void renderDocument() { documentLoaded = false; + invalidateOptionsMenu(); mWebView.evaluateJavascript("onRenderPage()", null); } @@ -235,7 +236,14 @@ public boolean onCreateOptionsMenu(Menu menu) { inflater.inflate(R.menu.pdf_viewer, menu); if (documentLoaded) { - menu.findItem(R.id.action_print).setVisible(true); + 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; diff --git a/app/src/main/res/menu/pdf_viewer.xml b/app/src/main/res/menu/pdf_viewer.xml index 847f820..0893f7c 100644 --- a/app/src/main/res/menu/pdf_viewer.xml +++ b/app/src/main/res/menu/pdf_viewer.xml @@ -25,27 +25,31 @@ 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" /> Date: Thu, 28 Dec 2017 23:16:16 +0100 Subject: [PATCH 4/4] Hide action_previous and action_next --- app/src/main/res/menu/pdf_viewer.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/menu/pdf_viewer.xml b/app/src/main/res/menu/pdf_viewer.xml index 0893f7c..db4dc6b 100644 --- a/app/src/main/res/menu/pdf_viewer.xml +++ b/app/src/main/res/menu/pdf_viewer.xml @@ -10,19 +10,21 @@ 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" />