From c6b39422f59b15a661b9ffc42425b2718521c27a Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:47:48 +0200 Subject: [PATCH 1/4] Added the possibility to customize the allowed maximum zoom This has been brought up by issue #174 in the base repo --- app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java | 2 +- app/src/main/java/com/gsnathan/pdfviewer/Utils.java | 3 ++- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 6 ++++++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java index 8b62c55..f3bb6ae 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java @@ -262,7 +262,7 @@ void configurePdfViewAndLoad(PDFView.Configurator viewConfigurator) { viewBinding.pdfView.useBestQuality(prefManager.getBoolean("quality_pref", false)); viewBinding.pdfView.setMinZoom(0.5f); viewBinding.pdfView.setMidZoom(2.0f); - viewBinding.pdfView.setMaxZoom(5.0f); + viewBinding.pdfView.setMaxZoom(Float.parseFloat(prefManager.getString("maximum_zoom_pref", "5"))); viewConfigurator .defaultPage(pageNumber) .onPageChange(this::setCurrentPage) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/Utils.java b/app/src/main/java/com/gsnathan/pdfviewer/Utils.java index c422898..298e044 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("Custom maximum zoom", "You can now set the maximum zoom.", R.drawable.star_icon) ); log.setTitleColor(Color.BLACK); log.setTitleText(context.getResources().getString(R.string.appChangelog)); diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 4a0e451..9f8c8ac 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -73,5 +73,6 @@ Password errata. Modalità scura per il PDF Mantieni lo schermo acceso + Zoom massimo Questa app non raccoglie alcun dato.\nI seguenti permessi sono richiesti per fornire specifiche funzionalità dell\'applicazione:\n- Internet: aprire i PDF tramite link\n- Archiviazione: aprire file dalla memoria interna, salvare i PDF aperti tramite link \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32b3c5e..6f1a41c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -121,5 +121,6 @@ Dark theme for PDF Keep the screen on + Maximum zoom This app does not collect any data.\nThe following permissions are required to provide specific features in the app:\n- Internet: open PDFs through links\n- Storage: open files from storage, save PDFs opened through links \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index fa19ec7..e1a1a53 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -26,6 +26,12 @@ android:defaultValue="false" android:title="@string/keep_screen_on" android:key="screen_on_pref"/> + + Date: Fri, 12 Aug 2022 19:03:25 +0200 Subject: [PATCH 2/4] fix zoom bug The Library "barteksc - AndroidPdfViewer" had a zoom limit of 10x (variable MAXIMUM_ZOOM in class "Pinch.java" in said Library) which did not allow to pinch over that value (methid "onScale" in class "DragPinchManager.java"). Nonethless, it was possible to double-tap-to-zoom to any value, even above 10x, causing a poor UX. For this reason, the maximum zoom has been set at 10x with a SeekBar, instead of using an EditText which allowed any value. --- .../java/com/gsnathan/pdfviewer/MainActivity.java | 2 +- .../com/gsnathan/pdfviewer/SettingsActivity.java | 15 +++++++++++++++ app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- app/src/main/res/xml/preferences.xml | 12 ++++++------ 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java index f3bb6ae..04e067e 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java @@ -262,7 +262,7 @@ void configurePdfViewAndLoad(PDFView.Configurator viewConfigurator) { viewBinding.pdfView.useBestQuality(prefManager.getBoolean("quality_pref", false)); viewBinding.pdfView.setMinZoom(0.5f); viewBinding.pdfView.setMidZoom(2.0f); - viewBinding.pdfView.setMaxZoom(Float.parseFloat(prefManager.getString("maximum_zoom_pref", "5"))); + viewBinding.pdfView.setMaxZoom((float)prefManager.getInt("max_zoom_pref", 4) + 1); viewConfigurator .defaultPage(pageNumber) .onPageChange(this::setCurrentPage) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/SettingsActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/SettingsActivity.java index 2a004c5..d8414de 100644 --- a/app/src/main/java/com/gsnathan/pdfviewer/SettingsActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/SettingsActivity.java @@ -6,6 +6,7 @@ import android.os.Build; import android.os.Bundle; import android.preference.Preference; +import android.preference.PreferenceManager; import android.util.Log; import android.util.TypedValue; import android.view.MenuItem; @@ -13,6 +14,7 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.Toolbar; +import androidx.preference.SeekBarPreference; import com.jaredrummler.cyanea.app.CyaneaPreferenceActivity; @@ -51,6 +53,19 @@ private void setupShowInLauncherPreference() { } }); } + + Preference seekBar = (Preference)findPreference("max_zoom_pref"); + int current_value = PreferenceManager.getDefaultSharedPreferences(this).getInt("max_zoom_pref",5); + String seekBarTitle = getResources().getString(R.string.maximum_zoom) + " " + String.valueOf(++current_value); + seekBar.setTitle(seekBarTitle); + seekBar.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object o) { + final int progress = Integer.valueOf(String.valueOf(o)) + 1; + preference.setTitle(getResources().getString(R.string.maximum_zoom) + " " + progress); + return true; + } + }); } private void setOptionsListTopMargin() { diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9f8c8ac..2e16ccd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -73,6 +73,6 @@ Password errata. Modalità scura per il PDF Mantieni lo schermo acceso - Zoom massimo + Zoom massimo: Questa app non raccoglie alcun dato.\nI seguenti permessi sono richiesti per fornire specifiche funzionalità dell\'applicazione:\n- Internet: aprire i PDF tramite link\n- Archiviazione: aprire file dalla memoria interna, salvare i PDF aperti tramite link \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f1a41c..a451703 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -121,6 +121,6 @@ Dark theme for PDF Keep the screen on - Maximum zoom + Maximum zoom: This app does not collect any data.\nThe following permissions are required to provide specific features in the app:\n- Internet: open PDFs through links\n- Storage: open files from storage, save PDFs opened through links \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index e1a1a53..94a9ca4 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,6 +1,6 @@ - + - + android:title="@string/maximum_zoom" android:key="max_zoom_pref" + android:max="9" + app:showSeekBarValue="true" /> From 1c964edb77f3b027dcf6b9f276449d69644bb7e3 Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Fri, 12 Aug 2022 19:23:05 +0200 Subject: [PATCH 3/4] Allow default zoom at 5x just like the base repo. The seekbar has values from 0 to 9 to which 1 is added in the PDF's max zoom properties. Hence the default value 4 will produce a 5x maximum zoom. --- app/src/main/res/xml/preferences.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 94a9ca4..443b48e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -27,10 +27,10 @@ android:title="@string/keep_screen_on" android:key="screen_on_pref"/> + app:showSeekBarValue="true"/> From af151dc6c939f7eb01c063d9ea1a50c4d767bd5d Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Fri, 12 Aug 2022 19:32:46 +0200 Subject: [PATCH 4/4] bugfix Fixed a bug which allowed to have a medium zoon greater than the maximum zoom. --- app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java index 04e067e..8b32b14 100755 --- a/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java +++ b/app/src/main/java/com/gsnathan/pdfviewer/MainActivity.java @@ -259,10 +259,12 @@ void configurePdfViewAndLoad(PDFView.Configurator viewConfigurator) { } else { viewBinding.pdfView.setBackgroundColor(0xFF212121); } + float maxZoom = (float)(prefManager.getInt("max_zoom_pref", 4) + 1); + float midZoom = Math.min(2.0f, maxZoom); viewBinding.pdfView.useBestQuality(prefManager.getBoolean("quality_pref", false)); viewBinding.pdfView.setMinZoom(0.5f); - viewBinding.pdfView.setMidZoom(2.0f); - viewBinding.pdfView.setMaxZoom((float)prefManager.getInt("max_zoom_pref", 4) + 1); + viewBinding.pdfView.setMidZoom(midZoom); + viewBinding.pdfView.setMaxZoom(maxZoom); viewConfigurator .defaultPage(pageNumber) .onPageChange(this::setCurrentPage)