From e58c228480772378febfabd45d73f0cded0c6194 Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:29:45 +0200 Subject: [PATCH 1/2] Added the possibility to jump to a specific page --- .../com/gsnathan/pdfviewer/MainActivity.java | 51 +++++++++++++++++++ .../java/com/gsnathan/pdfviewer/Utils.java | 3 +- app/src/main/res/menu/menu.xml | 6 +++ app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ru-rRU/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 62 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java index 8b62c557..f464e6df 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java @@ -28,6 +28,7 @@ import android.app.ActivityManager; import android.app.Dialog; import android.content.ActivityNotFoundException; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; @@ -39,13 +40,17 @@ import android.preference.PreferenceManager; import android.print.PrintManager; import android.provider.OpenableColumns; +import android.text.InputType; import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; import android.view.WindowManager; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.Window; +import android.widget.EditText; import android.widget.Toast; import androidx.activity.result.ActivityResultLauncher; @@ -446,6 +451,49 @@ void navToSettings() { settingsLauncher.launch(new Intent(this, SettingsActivity.class)); } + private void goToPage(){ + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getResources().getString(R.string.go_to_page)); + + EditText input = new EditText(this); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setGravity(Gravity.CENTER); + + builder.setView(input); + + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + jumpToPage(Integer.parseInt(input.getText().toString())); + } + }); + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }); + + builder.setOnKeyListener((dialog, keyCode, event) -> { + if (keyCode == KeyEvent.KEYCODE_ENTER) { + dialog.cancel(); + jumpToPage(Integer.parseInt(input.getText().toString())); + return true; + } + return false; + }); + builder.show(); + } + + private void jumpToPage(int page){ + if(viewBinding.pdfView.getPageCount() == 0){ + return; + } + pageNumber = page - 1; + viewBinding.pdfView.jumpTo(pageNumber); + setCurrentPage(pageNumber, viewBinding.pdfView.getPageCount()); + } + private void setCurrentPage(int page, int pageCount) { pageNumber = page; setTitle(String.format("%s %s / %s", pdfFileName + " ", page + 1, pageCount)); @@ -521,6 +569,9 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.settings: navToSettings(); return true; + case R.id.go_to_page: + goToPage(); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/com/gsnathan/pdfviewer/Utils.java b/app/src/main/java/com/gsnathan/pdfviewer/Utils.java index c4228987..79f913ba 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/Utils.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/Utils.java @@ -52,7 +52,8 @@ static void showLog(AppCompatActivity context) { new WhatsNewItem("Full screen mode", "A new button has been added to the bottom bar to read PDFs in full screen!", R.drawable.star_icon), new WhatsNewItem("Keep the screen on while reading", "You can enable this feature in Settings.", R.drawable.star_icon), new WhatsNewItem("Sharing improvements and fixes", "Including better support for third-party share dialogs.", R.drawable.star_icon), - new WhatsNewItem("Bugs", "A bunch of bug fixes and robustness improvements.", R.drawable.star_icon) + new WhatsNewItem("Bugs", "A bunch of bug fixes and robustness improvements.", R.drawable.star_icon), + new WhatsNewItem("Jump to page", "You can now jump to a specific page", R.drawable.star_icon) ); log.setTitleColor(Color.BLACK); log.setTitleText(context.getResources().getString(R.string.appChangelog)); diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 9005768f..3169ecad 100755 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -26,6 +26,12 @@ + + Connessione sicura fallita. Il file è stato salvato nella cartella dei download. Non è stato possibile salvare il file nella cartella dei download. + Vai a pagina Informazioni su… Versione Ripeti l\'introduzione diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 767397dd..02f2b716 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -41,6 +41,7 @@ Перелистывание страниц + Перейти на страницу О приложении Информация о приложении Повтор введения diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32b3c5e4..2e58a43b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,6 +31,7 @@ Secure connection failed. File saved to Download folder. Couldn\'t save file to Download folder. + Go to page About Version Replay Intro From f3da6032be30b23d0732c523255ed809314662a9 Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Sat, 13 Aug 2022 00:11:22 +0200 Subject: [PATCH 2/2] UX bugfix Previously, if the "Page Snap" setting was on, when we jumped to a page the latter was not snapped (ceneterd). --- app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java index f464e6df..7184432c 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java @@ -491,6 +491,7 @@ private void jumpToPage(int page){ } pageNumber = page - 1; viewBinding.pdfView.jumpTo(pageNumber); + viewBinding.pdfView.performPageSnap(); setCurrentPage(pageNumber, viewBinding.pdfView.getPageCount()); }