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)