From 2066877a8f4f50672eebbdd2afbb70e8480c0f40 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 10 Jun 2020 12:46:02 +0100 Subject: [PATCH 1/8] #2110 Zoom controls disappeared in v3.3.1 - upgrade preferences to androidx - add text zoom preference - observe preference in WebView --- .../settings/KiwixPrefsFragment.kt | 18 ++-- buildSrc/src/main/kotlin/Libs.kt | 29 +++--- buildSrc/src/main/kotlin/Versions.kt | 53 +++++------ .../kotlin/plugin/AllProjectConfigurer.kt | 1 + .../kiwixmobile/core/main/KiwixWebView.java | 17 +++- .../core/settings/CorePrefsFragment.java | 45 ++++++--- .../core/settings/CoreSettingsActivity.java | 4 +- .../core/settings/CustomSwitchPreference.java | 91 ------------------- .../core/utils/SharedPreferenceUtil.java | 15 +++ core/src/main/res/values/strings.xml | 2 + core/src/main/res/xml/preferences.xml | 78 +++++++++++----- .../custom/settings/CustomPrefsFragment.kt | 12 +-- 12 files changed, 173 insertions(+), 192 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/settings/CustomSwitchPreference.java diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt index f745636d2..226148190 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt @@ -20,22 +20,26 @@ package org.kiwix.kiwixmobile.settings import android.os.Bundle import android.os.Environment +import androidx.preference.Preference import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment -import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_LANG +import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_STORAGE class KiwixPrefsFragment : CorePrefsFragment() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setUpLanguageChooser(PREF_LANG) + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + super.onCreatePreferences(savedInstanceState, rootKey) + setUpLanguageChooser(SharedPreferenceUtil.PREF_LANG) } override fun setStorage() { if (Environment.isExternalStorageEmulated()) { - findPreference(PREF_STORAGE).title = sharedPreferenceUtil.getPrefStorageTitle("Internal") + findPreference(PREF_STORAGE)?.title = + sharedPreferenceUtil.getPrefStorageTitle("Internal") } else { - findPreference(PREF_STORAGE).title = sharedPreferenceUtil.getPrefStorageTitle("External") + findPreference(PREF_STORAGE)?.title = + sharedPreferenceUtil.getPrefStorageTitle("External") } - findPreference(PREF_STORAGE).summary = storageCalculator.calculateAvailableSpace() + findPreference(PREF_STORAGE)?.summary = storageCalculator.calculateAvailableSpace() } } diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index e7a09093c..62393d036 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -1,3 +1,5 @@ +import kotlin.String + /** * Generated by https://github.com/jmfayard/buildSrcVersions * @@ -30,19 +32,19 @@ object Libs { Versions.androidx_test_espresso /** - * https://github.com/square/retrofit/ + * https://github.com/square/retrofit */ const val adapter_rxjava2: String = "com.squareup.retrofit2:adapter-rxjava2:" + Versions.com_squareup_retrofit2 /** - * https://github.com/square/retrofit/ + * https://github.com/square/retrofit */ const val converter_simplexml: String = "com.squareup.retrofit2:converter-simplexml:" + Versions.com_squareup_retrofit2 /** - * https://github.com/square/retrofit/ + * https://github.com/square/retrofit */ const val retrofit: String = "com.squareup.retrofit2:retrofit:" + Versions.com_squareup_retrofit2 @@ -165,7 +167,7 @@ object Libs { Versions.io_objectbox /** - * http://objectbox.io + * https://objectbox.io */ const val objectbox_kotlin: String = "io.objectbox:objectbox-kotlin:" + Versions.io_objectbox @@ -176,7 +178,7 @@ object Libs { Versions.io_objectbox /** - * http://objectbox.io + * https://objectbox.io */ const val objectbox_rxjava: String = "io.objectbox:objectbox-rxjava:" + Versions.io_objectbox @@ -228,9 +230,6 @@ object Libs { const val multidex_instrumentation: String = "androidx.multidex:multidex-instrumentation:" + Versions.multidex_instrumentation - const val detekt_gradle_plugin: String = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:" + - Versions.detekt_gradle_plugin - /** * http://jcp.org/en/jsr/detail?id=250 */ @@ -238,7 +237,7 @@ object Libs { Versions.javax_annotation_api /** - * https://github.com/square/okhttp + * https://square.github.io/okhttp/ */ const val logging_interceptor: String = "com.squareup.okhttp3:logging-interceptor:" + Versions.logging_interceptor @@ -263,18 +262,18 @@ object Libs { */ const val collection_ktx: String = "androidx.collection:collection-ktx:" + Versions.collection_ktx - const val jacoco_android: String = "com.hiya:jacoco-android:" + - Versions.jacoco_android + /** + * https://developer.android.com/jetpack/androidx + */ + const val preference_ktx: String = "androidx.preference:preference-ktx:" + Versions.preference_ktx /** * https://junit.org/junit5/ */ const val junit_jupiter: String = "org.junit.jupiter:junit-jupiter:" + Versions.junit_jupiter - const val ktlint_gradle: String = "org.jlleitschuh.gradle:ktlint-gradle:" + Versions.ktlint_gradle - /** - * https://github.com/square/okhttp + * https://square.github.io/okhttp/ */ const val mockwebserver: String = "com.squareup.okhttp3:mockwebserver:" + Versions.mockwebserver @@ -368,7 +367,7 @@ object Libs { const val ktlint: String = "com.pinterest:ktlint:" + Versions.ktlint /** - * https://github.com/square/okhttp + * https://square.github.io/okhttp/ */ const val okhttp: String = "com.squareup.okhttp3:okhttp:" + Versions.okhttp diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index d81bf6297..9b5f66a52 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,3 +1,4 @@ +import kotlin.String import org.gradle.plugin.use.PluginDependenciesSpec import org.gradle.plugin.use.PluginDependencySpec @@ -13,11 +14,11 @@ import org.gradle.plugin.use.PluginDependencySpec object Versions { const val androidx_test_espresso: String = "3.1.1" // available: "3.2.0" - const val com_squareup_retrofit2: String = "2.5.0" // available: "2.7.1" + const val com_squareup_retrofit2: String = "2.5.0" // available: "2.9.0" const val org_jetbrains_kotlin: String = "1.3.72" - const val com_google_dagger: String = "2.26" + const val com_google_dagger: String = "2.26" // available: "2.28" const val com_yahoo_squidb: String = "2.0.0" // available: "3.2.3" @@ -25,57 +26,53 @@ object Versions { const val androidx_test: String = "1.2.0" - const val io_objectbox: String = "2.3.4" // available: "2.5.1" + const val io_objectbox: String = "2.3.4" // available: "2.6.0" const val org_jacoco: String = "0.7.9" - const val io_mockk: String = "1.9.2" + const val io_mockk: String = "1.9.2" // available: "1.10.0" const val android_arch_lifecycle_extensions: String = "1.1.1" - const val com_android_tools_build_gradle: String = "3.5.3" + const val com_android_tools_build_gradle: String = "3.5.3" // available: "4.0.0" const val de_fayard_buildsrcversions_gradle_plugin: String = "0.7.0" - const val com_github_triplet_play_gradle_plugin: String = "2.6.2" + const val com_github_triplet_play_gradle_plugin: String = "2.6.2" // available: "2.8.0" const val multidex_instrumentation: String = "2.0.0" - const val detekt_gradle_plugin: String = "1.5.1" - const val javax_annotation_api: String = "1.3.2" - const val logging_interceptor: String = "3.12.1" // available: "4.3.1" + const val logging_interceptor: String = "3.12.1" // available: "4.7.2" const val ink_page_indicator: String = "1.3.0" - const val leakcanary_android: String = "2.2" + const val leakcanary_android: String = "2.2" // available: "2.3" const val constraintlayout: String = "1.1.3" const val collection_ktx: String = "1.1.0" - const val jacoco_android: String = "0.2" + const val preference_ktx: String = "1.1.1" - const val junit_jupiter: String = "5.4.2" // available: "5.6.0" + const val junit_jupiter: String = "5.4.2" // available: "5.6.2" - const val ktlint_gradle: String = "9.2.1" - - const val mockwebserver: String = "3.6.0" // available: "4.3.1" + const val mockwebserver: String = "3.6.0" // available: "4.7.2" const val xfetch2okhttp: String = "3.1.4" - const val assertj_core: String = "3.11.1" // available: "3.15.0" + const val assertj_core: String = "3.11.1" // available: "3.16.1" const val core_testing: String = "2.1.0" - const val fragment_ktx: String = "1.2.1" + const val fragment_ktx: String = "1.2.1" // available: "1.2.4" - const val lint_gradle: String = "26.5.3" + const val lint_gradle: String = "27.0.0" - const val testing_ktx: String = "1.1.1" + const val testing_ktx: String = "1.1.1" // available: "1.1.2" - const val threetenabp: String = "1.1.1" // available: "1.2.2" + const val threetenabp: String = "1.1.1" // available: "1.2.4" const val uiautomator: String = "2.2.0" @@ -87,7 +84,7 @@ object Versions { const val rxandroid: String = "2.1.0" // available: "2.1.1" - const val core_ktx: String = "1.2.0" + const val core_ktx: String = "1.2.0" // available: "1.3.0" const val kiwixlib: String = "9.1.2" @@ -95,19 +92,19 @@ object Versions { const val multidex: String = "2.0.1" - const val barista: String = "2.7.1" // available: "3.2.0" + const val barista: String = "2.7.1" // available: "3.5.0" const val xfetch2: String = "3.1.4" const val jsr305: String = "3.0.2" - const val ktlint: String = "0.36.0" + const val ktlint: String = "0.36.0" // available: "0.37.1" - const val okhttp: String = "3.12.1" // available: "4.3.1" + const val okhttp: String = "3.12.1" // available: "4.7.2" - const val rxjava: String = "2.2.5" // available: "2.2.17" + const val rxjava: String = "2.2.5" // available: "2.2.19" - const val aapt2: String = "3.5.2-5435860" // available: "3.5.3-5435860" + const val aapt2: String = "4.0.0-6051327" const val junit: String = "1.1.1" @@ -116,7 +113,7 @@ object Versions { * See issue 19: How to update Gradle itself? * https://github.com/jmfayard/buildSrcVersions/issues/19 */ - const val gradleLatestVersion: String = "6.1.1" + const val gradleLatestVersion: String = "6.5" } /** @@ -125,4 +122,4 @@ object Versions { */ val PluginDependenciesSpec.buildSrcVersions: PluginDependencySpec inline get() = - id("de.fayard.buildSrcVersions").version(Versions.de_fayard_buildsrcversions_gradle_plugin) + id("de.fayard.buildSrcVersions").version(Versions.de_fayard_buildsrcversions_gradle_plugin) diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index 8673403d6..58c822f62 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -181,6 +181,7 @@ class AllProjectConfigurer { implementation(Libs.xfetch2okhttp) implementation(Libs.rxandroid) implementation(Libs.rxjava) + implementation(Libs.preference_ktx) } } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.java index ac18783c3..3f0bfa48d 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.java @@ -34,6 +34,7 @@ import android.view.ViewGroup; import android.webkit.WebSettings; import android.widget.Toast; import com.cprcrack.videowebview.VideoEnabledWebView; +import io.reactivex.disposables.CompositeDisposable; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -55,18 +56,17 @@ public class KiwixWebView extends VideoEnabledWebView { 0, 0, -1.0f, 0, 255, // blue 0, 0, 0, 1.0f, 0 // alpha }; - private final ViewGroup videoView; @Inject SharedPreferenceUtil sharedPreferenceUtil; @Inject ZimReaderContainer zimReaderContainer; private final WebViewCallback callback; + private CompositeDisposable compositeDisposable = new CompositeDisposable(); @SuppressLint("SetJavaScriptEnabled") public KiwixWebView(Context context, WebViewCallback callback, AttributeSet attrs, ViewGroup nonVideoView, ViewGroup videoView, CoreWebViewClient webViewClient) { super(context, attrs); - this.videoView = videoView; if (BuildConfig.DEBUG == true && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setWebContentsDebuggingEnabled(true); } @@ -123,6 +123,19 @@ public class KiwixWebView extends VideoEnabledWebView { } } + @Override protected void onAttachedToWindow() { + super.onAttachedToWindow(); + compositeDisposable.add( + sharedPreferenceUtil.getTextZooms() + .subscribe(textZoom -> getSettings().setTextZoom(textZoom)) + ); + } + + @Override protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + compositeDisposable.clear(); + } + @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java index 1e1a8e70a..2beb09112 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java @@ -24,15 +24,14 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; -import android.preference.EditTextPreference; -import android.preference.ListPreference; -import android.preference.Preference; -import android.preference.PreferenceFragment; -import android.preference.PreferenceScreen; import android.view.LayoutInflater; import android.webkit.WebView; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; +import androidx.preference.EditTextPreference; +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceFragmentCompat; import com.google.android.material.snackbar.Snackbar; import eu.mhutti1.utils.storage.StorageDevice; import eu.mhutti1.utils.storage.StorageSelectDialog; @@ -56,7 +55,7 @@ import static org.kiwix.kiwixmobile.core.utils.ConstantsKt.RESULT_RESTART; import static org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_NIGHT_MODE; import static org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_STORAGE; -public abstract class CorePrefsFragment extends PreferenceFragment implements +public abstract class CorePrefsFragment extends PreferenceFragmentCompat implements SettingsContract.View, SharedPreferences.OnSharedPreferenceChangeListener { @@ -64,6 +63,9 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements public static final String PREF_CLEAR_ALL_HISTORY = "pref_clear_all_history"; public static final String PREF_CLEAR_ALL_NOTES = "pref_clear_all_notes"; public static final String PREF_CREDITS = "pref_credits"; + private static final int ZOOM_OFFSET = 2; + private static final int ZOOM_SCALE = 25; + private static final String INTERNAL_TEXT_ZOOM = "text_zoom"; @Inject SettingsPresenter presenter; @Inject @@ -76,21 +78,35 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements protected DialogShower alertDialogShower; @Override - public void onCreate(Bundle savedInstanceState) { + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { CoreApp.getCoreComponent() .activityComponentBuilder() .activity(getActivity()) .build() .inject(this); - super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); - setStorage(); setUpSettings(); + setupZoom(); new LanguageUtils(getActivity()).changeFont(getActivity().getLayoutInflater(), sharedPreferenceUtil); } + private void setupZoom() { + final Preference textZoom = findPreference(INTERNAL_TEXT_ZOOM); + textZoom.setOnPreferenceChangeListener( + (preference, newValue) -> { + sharedPreferenceUtil.setTextZoom((((Integer) newValue) + ZOOM_OFFSET) * ZOOM_SCALE); + updateTextZoomSummary(textZoom); + return true; + }); + updateTextZoomSummary(textZoom); + } + + private void updateTextZoomSummary(Preference textZoom) { + textZoom.setSummary(getString(R.string.percentage, sharedPreferenceUtil.getTextZoom())); + } + protected abstract void setStorage(); @Override @@ -112,7 +128,7 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements } protected void setUpLanguageChooser(String preferenceId) { - ListPreference languagePref = (ListPreference) findPreference(preferenceId); + ListPreference languagePref = findPreference(preferenceId); List languageCodeList = new LanguageUtils(getActivity()).getKeys(); languageCodeList.add(0, Locale.ROOT.getLanguage()); final String selectedLang = @@ -154,7 +170,7 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements } private void setAppVersionNumber() { - EditTextPreference versionPref = (EditTextPreference) findPreference(PREF_VERSION); + EditTextPreference versionPref = findPreference(PREF_VERSION); versionPref.setSummary(getVersionName() + " Build: " + getVersionCode()); } @@ -205,7 +221,8 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - Snackbar.make(getView(), R.string.ext_storage_permission_not_granted, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(getView(), R.string.ext_storage_permission_not_granted, Snackbar.LENGTH_SHORT) + .show(); return; } @@ -229,9 +246,7 @@ public abstract class CorePrefsFragment extends PreferenceFragment implements alertDialogShower.show(new KiwixDialog.OpenCredits(() -> view)); } - @Override - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, - Preference preference) { + @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference.getKey().equalsIgnoreCase(PREF_CLEAR_ALL_HISTORY)) { clearAllHistoryDialog(); } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java index e3fb22ccd..6f24aa55d 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java @@ -18,10 +18,10 @@ package org.kiwix.kiwixmobile.core.settings; -import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; import org.kiwix.kiwixmobile.core.R; import org.kiwix.kiwixmobile.core.base.BaseActivity; @@ -39,7 +39,7 @@ public abstract class CoreSettingsActivity extends BaseActivity { allHistoryCleared = false; - getFragmentManager() + getSupportFragmentManager() .beginTransaction(). replace(R.id.content_frame, createPreferenceFragment()) .commit(); diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CustomSwitchPreference.java b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CustomSwitchPreference.java deleted file mode 100644 index 903de7908..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CustomSwitchPreference.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.kiwix.kiwixmobile.core.settings; - -import android.content.Context; -import android.preference.SwitchPreference; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Switch; - -public class CustomSwitchPreference extends SwitchPreference { - - /** - * Construct a new SwitchPreference with the given style options. - * - * @param context The Context that will style this preference - * @param attrs Style attributes that differ from the default - * @param defStyle Theme attribute defining the default style options - */ - public CustomSwitchPreference(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - /** - * Construct a new SwitchPreference with the given style options. - * - * @param context The Context that will style this preference - * @param attrs Style attributes that differ from the default - */ - public CustomSwitchPreference(Context context, AttributeSet attrs) { - super(context, attrs); - } - - /** - * Construct a new SwitchPreference with default style options. - * - * @param context The Context that will style this preference - */ - public CustomSwitchPreference(Context context) { - super(context, null); - } - - @Override - protected void onBindView(View view) { - // Clean listener before invoke SwitchPreference.onBindView - ViewGroup viewGroup = (ViewGroup) view; - clearListenerInViewGroup(viewGroup); - super.onBindView(view); - } - - /** - * Clear listener in Switch for specify ViewGroup. - * - * @param viewGroup The ViewGroup that will need to clear the listener. - */ - private void clearListenerInViewGroup(ViewGroup viewGroup) { - if (null == viewGroup) { - return; - } - - int count = viewGroup.getChildCount(); - for (int n = 0; n < count; ++n) { - View childView = viewGroup.getChildAt(n); - if (childView instanceof Switch) { - final Switch switchView = (Switch) childView; - switchView.setOnCheckedChangeListener(null); - return; - } else if (childView instanceof ViewGroup) { - ViewGroup childGroup = (ViewGroup) childView; - clearListenerInViewGroup(childGroup); - } - } - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.java b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.java index fb2729369..e919817eb 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.java @@ -58,8 +58,10 @@ public class SharedPreferenceUtil { private static final String PREF_SHOW_HISTORY_CURRENT_BOOK = "show_history_current_book"; private static final String PREF_HOSTED_BOOKS = "hosted_books"; public static final String PREF_NIGHT_MODE = "pref_night_mode"; + private static final String TEXT_ZOOM = "true_text_zoom"; private SharedPreferences sharedPreferences; private final PublishProcessor prefStorages = PublishProcessor.create(); + private final PublishProcessor textZooms = PublishProcessor.create(); private final PublishProcessor nightModes = PublishProcessor.create(); @Inject @@ -217,4 +219,17 @@ public class SharedPreferenceUtil { .putStringSet(PREF_HOSTED_BOOKS, hostedBooks) .apply(); } + + public void setTextZoom(int textZoom) { + sharedPreferences.edit().putInt(TEXT_ZOOM, textZoom).apply(); + textZooms.offer(textZoom); + } + + public int getTextZoom() { + return sharedPreferences.getInt(TEXT_ZOOM, 100); + } + + public Flowable getTextZooms() { + return textZooms.startWith(getTextZoom()); + } } diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index d86b0cc8f..a9d025c69 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -273,6 +273,8 @@ File System Details Diagnostic Report Please send all the following details so we can diagnose the problem + %d%% + Text Zoom @string/on @string/off diff --git a/core/src/main/res/xml/preferences.xml b/core/src/main/res/xml/preferences.xml index be4782654..df5a70319 100644 --- a/core/src/main/res/xml/preferences.xml +++ b/core/src/main/res/xml/preferences.xml @@ -1,7 +1,10 @@ - + + android:title="@string/pref_display_title" + app:iconSpaceReserved="false"> + android:title="@string/pref_night_mode" + app:iconSpaceReserved="false" /> - + android:title="@string/pref_back_to_top" + app:iconSpaceReserved="false" /> - + android:title="@string/pref_hide_toolbar" + app:iconSpaceReserved="false" /> + + android:title="@string/pref_extras" + app:iconSpaceReserved="false"> - + android:title="@string/pref_newtab_background_title" + app:iconSpaceReserved="false" /> - + android:title="@string/pref_external_link_popup_title" + app:iconSpaceReserved="false" /> - + android:title="@string/pref_wifi_only" + app:iconSpaceReserved="false" /> + android:title="@string/pref_storage" + app:iconSpaceReserved="false"> + android:title="@string/pref_current_folder" + app:iconSpaceReserved="false" /> + android:title="History" + app:iconSpaceReserved="false"> + android:title="@string/pref_clear_all_history_title" + app:iconSpaceReserved="false" /> + android:title="Notes" + app:iconSpaceReserved="false"> + android:title="@string/pref_clear_all_notes_title" + app:iconSpaceReserved="false" /> + android:title="@string/pref_language_title" + app:iconSpaceReserved="false"> + android:title="@string/pref_language_title" + app:iconSpaceReserved="false" /> + android:title="@string/pref_info_title" + app:iconSpaceReserved="false"> + android:title="@string/pref_info_version" + app:iconSpaceReserved="false" /> + android:title="@string/pref_credits_title" + app:iconSpaceReserved="false" /> diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomPrefsFragment.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomPrefsFragment.kt index c4e140194..c5714c009 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomPrefsFragment.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomPrefsFragment.kt @@ -19,22 +19,20 @@ package org.kiwix.kiwixmobile.custom.settings import android.os.Bundle -import android.preference.PreferenceCategory import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_LANG +import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_WIFI_ONLY import org.kiwix.kiwixmobile.custom.BuildConfig class CustomPrefsFragment : CorePrefsFragment() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (BuildConfig.ENFORCED_LANG == "") { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + super.onCreatePreferences(savedInstanceState, rootKey) + if (BuildConfig.ENFORCED_LANG.isEmpty()) { setUpLanguageChooser(PREF_LANG) } else { preferenceScreen.removePreference(findPreference("pref_language")) } - - val notificationsCategory = findPreference("pref_extras") as PreferenceCategory - notificationsCategory.removePreference(findPreference("pref_wifi_only")) + preferenceScreen.removePreference(findPreference(PREF_WIFI_ONLY)) } override fun setStorage() { From ae63cd29ee44e4b7b328e2a4c9d9dd0a4e77c81c Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 10 Jun 2020 13:34:26 +0100 Subject: [PATCH 2/8] #2110 Zoom controls disappeared in v3.3.1 - fix static analysis --- .../fileselect_view/ZimFileSelectFragment.kt | 10 +++++----- .../zim_manager/library_view/LibraryFragment.kt | 6 +++--- .../src/main/kotlin/plugin/AllProjectConfigurer.kt | 1 + .../eu/mhutti1/utils/storage/StorageSelectDialog.kt | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt index d2b58e904..3d28df345 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.kt @@ -65,7 +65,7 @@ class ZimFileSelectFragment : BaseFragment() { private val disposable = CompositeDisposable() private val zimManageViewModel by lazy { - activity!!.viewModel(viewModelFactory) + requireActivity().viewModel(viewModelFactory) } private val bookDelegate: BookDelegate by lazy { BookDelegate(sharedPreferenceUtil, @@ -87,8 +87,8 @@ class ZimFileSelectFragment : BaseFragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { - LanguageUtils(activity!!) - .changeFont(activity!!.layoutInflater, sharedPreferenceUtil) + LanguageUtils(requireActivity()) + .changeFont(requireActivity().layoutInflater, sharedPreferenceUtil) return inflater.inflate(R.layout.zim_list, container, false) } @@ -121,7 +121,7 @@ class ZimFileSelectFragment : BaseFragment() { private fun sideEffects() = zimManageViewModel.sideEffects.subscribe( { - val effectResult = it.invokeWith(activity!! as AppCompatActivity) + val effectResult = it.invokeWith(requireActivity() as AppCompatActivity) if (effectResult is ActionMode) { actionMode = effectResult } @@ -159,7 +159,7 @@ class ZimFileSelectFragment : BaseFragment() { private fun checkPermissions() { if (ContextCompat.checkSelfPermission( - activity!!, + requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.kt index 6707954ef..f08e53015 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.kt @@ -72,7 +72,7 @@ class LibraryFragment : BaseFragment() { @Inject lateinit var availableSpaceCalculator: AvailableSpaceCalculator private val zimManageViewModel by lazy { - activity!!.viewModel(viewModelFactory) + requireActivity().viewModel(viewModelFactory) } private val libraryAdapter: LibraryAdapter by lazy { @@ -86,7 +86,7 @@ class LibraryFragment : BaseFragment() { } private val noWifiWithWifiOnlyPreferenceSet - get() = sharedPreferenceUtil.prefWifiOnly && !NetworkUtils.isWiFi(context!!) + get() = sharedPreferenceUtil.prefWifiOnly && !NetworkUtils.isWiFi(requireContext()) private val isNotConnected get() = conMan.activeNetworkInfo?.isConnected == false @@ -216,5 +216,5 @@ class LibraryFragment : BaseFragment() { .apply { onSelectAction = ::storeDeviceInPreferences } - .show(fragmentManager!!, getString(R.string.pref_storage)) + .show(requireFragmentManager(), getString(R.string.pref_storage)) } diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index 58c822f62..7d208c6e2 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -98,6 +98,7 @@ class AllProjectConfigurer { ignore( "SyntheticAccessor", "GoogleAppIndexingApiWarning", + "LockedOrientationActivity", //TODO stop ignoring below this "CheckResult", "LabelFor", diff --git a/core/src/main/java/eu/mhutti1/utils/storage/StorageSelectDialog.kt b/core/src/main/java/eu/mhutti1/utils/storage/StorageSelectDialog.kt index 1884c3d57..3bef9daf8 100644 --- a/core/src/main/java/eu/mhutti1/utils/storage/StorageSelectDialog.kt +++ b/core/src/main/java/eu/mhutti1/utils/storage/StorageSelectDialog.kt @@ -70,7 +70,7 @@ class StorageSelectDialog : DialogFragment() { layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false) setHasFixedSize(true) } - Flowable.fromCallable { StorageDeviceUtils.getWritableStorage(activity!!) } + Flowable.fromCallable { StorageDeviceUtils.getWritableStorage(requireActivity()) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( From e7d2d58b150447a6f71fdddfe0ed7bfd9db5ec3a Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 10 Jun 2020 13:47:28 +0100 Subject: [PATCH 3/8] #2110 Zoom controls disappeared in v3.3.1 - fix static analysis --- buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index 7d208c6e2..58c822f62 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -98,7 +98,6 @@ class AllProjectConfigurer { ignore( "SyntheticAccessor", "GoogleAppIndexingApiWarning", - "LockedOrientationActivity", //TODO stop ignoring below this "CheckResult", "LabelFor", From 693d43f0b8eba4e12192972a0a0cb87a878d3c95 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 10 Jun 2020 14:31:10 +0100 Subject: [PATCH 4/8] #2110 Zoom controls disappeared in v3.3.1 - fix instrumentation error code --- contrib/instrumentation.sh | 2 +- contrib/instrumentation_nightly.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/instrumentation.sh b/contrib/instrumentation.sh index 3812b7612..bb40a6f22 100644 --- a/contrib/instrumentation.sh +++ b/contrib/instrumentation.sh @@ -6,5 +6,5 @@ if ./gradlew jacocoInstrumentationTestReport; then echo "jacocoInstrumentationTestReport succeeded" >&2 else adb exec-out screencap -p >screencap.png - echo "jacocoInstrumentationTestReport failed" >&2 + exit 1 fi diff --git a/contrib/instrumentation_nightly.sh b/contrib/instrumentation_nightly.sh index 8b2552f00..f04e569da 100644 --- a/contrib/instrumentation_nightly.sh +++ b/contrib/instrumentation_nightly.sh @@ -6,5 +6,5 @@ if ./gradlew connectedDebugAndroidTest; then echo "connectedDebugAndroidTest succeeded" >&2 else adb exec-out screencap -p >screencap.png - echo "connectedDebugAndroidTest failed" >&2 + exit 1 fi From 15b77429a16923075485d78f7b0231f8506c443d Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 11 Jun 2020 09:50:57 +0100 Subject: [PATCH 5/8] #2110 Zoom controls disappeared in v3.3.1 - fix KiwixSettingsActivityTests --- .../settings/KiwixSettingsActivityTest.java | 87 +++++-------------- 1 file changed, 23 insertions(+), 64 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index 8c39ce23b..0bd14baff 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -18,104 +18,63 @@ package org.kiwix.kiwixmobile.settings; -import android.preference.Preference; +import androidx.annotation.StringRes; +import androidx.recyclerview.widget.RecyclerView; import androidx.test.rule.ActivityTestRule; import org.jetbrains.annotations.NotNull; import org.junit.Rule; import org.junit.Test; import org.kiwix.kiwixmobile.core.R; -import org.kiwix.kiwixmobile.main.KiwixMainActivity; -import static androidx.test.espresso.Espresso.onData; +import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.matcher.PreferenceMatchers.withKey; +import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem; +import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; +import static androidx.test.espresso.matcher.ViewMatchers.withClassName; +import static androidx.test.espresso.matcher.ViewMatchers.withText; import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; -import static org.hamcrest.Matchers.allOf; -import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -import static org.kiwix.kiwixmobile.utils.StandardActions.enterSettings; public class KiwixSettingsActivityTest { @Rule - public ActivityTestRule activityTestRule = - new ActivityTestRule<>(KiwixMainActivity.class); + public ActivityTestRule activityTestRule = + new ActivityTestRule<>(KiwixSettingsActivity.class); @Test public void testToggle() { - enterSettings(); + clickOn(R.string.pref_back_to_top); + clickOn(R.string.pref_hide_toolbar); + clickOn(R.string.pref_newtab_background_title); + clickOn(R.string.pref_external_link_popup_title); + clickOn(R.string.pref_wifi_only); + } - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_backtotop"))) - .perform(click()); - - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_hidetoolbar"))) - .perform(click()); - - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_newtab_background"))) - .perform(click()); - - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_external_link_popup"))) - .perform(click()); - - /*onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_full_text_search"))) - .perform(click());*/ - - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_wifi_only"))) - .perform(click()); + private void clickOn(@StringRes int stringId) { + onView(withClassName(is(RecyclerView.class.getName()))) + .perform(actionOnItem(hasDescendant(withText(stringId)), click())); } @Test public void testLanguageDialog() { - enterSettings(); - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_language_chooser"))) - .perform(click()); - + clickOn(R.string.device_default); assertDisplayed(R.string.pref_language_title); } @Test public void testStorageDialog() { - enterSettings(); - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_select_folder"))) - .perform(click()); - - assertDisplayed(R.string.pref_storage); + clickOn(R.string.internal_storage); + assertDisplayed(R.string.internal_storage); } @Test public void testHistoryDialog() { - enterSettings(); - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_clear_all_history"))) - .perform(click()); - + clickOn(R.string.pref_clear_all_history_title); assertDisplayed(R.string.clear_all_history_dialog_title); } @Test public void testNightModeDialog() { - enterSettings(); - onData(allOf( - is(instanceOf(Preference.class)), - withKey("pref_night_mode"))) - .perform(click()); - + clickOn(R.string.pref_night_mode); for (String nightModeString : nightModeStrings()) { assertDisplayed(nightModeString); } From fcb17f320e53e78908094000a82269015f19fca8 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 11 Jun 2020 10:33:36 +0100 Subject: [PATCH 6/8] #2110 Zoom controls disappeared in v3.3.1 - fix KiwixSettingsActivityTests for emulator --- .../kiwixmobile/settings/KiwixSettingsActivityTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index 0bd14baff..b5b4d15ad 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -60,9 +60,12 @@ public class KiwixSettingsActivityTest { assertDisplayed(R.string.pref_language_title); } + /* + * This will fail locally but needs these values to pass on CI emulators + * */ @Test public void testStorageDialog() { - clickOn(R.string.internal_storage); + clickOn(R.string.external_storage); assertDisplayed(R.string.internal_storage); } From 0435d73f64b17daea48779db90e421c8c5a7be86 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 11 Jun 2020 10:53:45 +0100 Subject: [PATCH 7/8] #2110 Zoom controls disappeared in v3.3.1 - add summary for storage pref to have reliabe clickable element --- .../kiwixmobile/settings/KiwixSettingsActivityTest.java | 5 +---- core/src/main/res/values/strings.xml | 1 + core/src/main/res/xml/preferences.xml | 1 + 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index b5b4d15ad..3223aec8b 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -60,12 +60,9 @@ public class KiwixSettingsActivityTest { assertDisplayed(R.string.pref_language_title); } - /* - * This will fail locally but needs these values to pass on CI emulators - * */ @Test public void testStorageDialog() { - clickOn(R.string.external_storage); + clickOn(R.string.pref_storage_summary); assertDisplayed(R.string.internal_storage); } diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index a9d025c69..0e5002912 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -275,6 +275,7 @@ Please send all the following details so we can diagnose the problem %d%% Text Zoom + Choose where files get saved to @string/on @string/off diff --git a/core/src/main/res/xml/preferences.xml b/core/src/main/res/xml/preferences.xml index df5a70319..b4c7825ce 100644 --- a/core/src/main/res/xml/preferences.xml +++ b/core/src/main/res/xml/preferences.xml @@ -69,6 +69,7 @@ Date: Thu, 11 Jun 2020 11:22:42 +0100 Subject: [PATCH 8/8] #2026 Migrate Zim prefix away from "content://" - allow test to click on either text --- .../settings/KiwixSettingsActivityTest.java | 15 +++++++++++---- core/src/main/res/values/strings.xml | 1 - core/src/main/res/xml/preferences.xml | 3 +-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index 3223aec8b..d8ee27729 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -18,9 +18,11 @@ package org.kiwix.kiwixmobile.settings; +import android.view.View; import androidx.annotation.StringRes; import androidx.recyclerview.widget.RecyclerView; import androidx.test.rule.ActivityTestRule; +import org.hamcrest.Matcher; import org.jetbrains.annotations.NotNull; import org.junit.Rule; import org.junit.Test; @@ -33,6 +35,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; import static androidx.test.espresso.matcher.ViewMatchers.withClassName; import static androidx.test.espresso.matcher.ViewMatchers.withText; import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; +import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; public class KiwixSettingsActivityTest { @@ -49,9 +52,13 @@ public class KiwixSettingsActivityTest { clickOn(R.string.pref_wifi_only); } - private void clickOn(@StringRes int stringId) { + private void clickOn(@StringRes int... stringIds) { + Matcher[] matchers= new Matcher[stringIds.length]; + for (int i = 0; i < stringIds.length; i++) { + matchers[i]= withText(stringIds[i]); + } onView(withClassName(is(RecyclerView.class.getName()))) - .perform(actionOnItem(hasDescendant(withText(stringId)), click())); + .perform(actionOnItem(hasDescendant(anyOf(matchers)), click())); } @Test @@ -62,8 +69,8 @@ public class KiwixSettingsActivityTest { @Test public void testStorageDialog() { - clickOn(R.string.pref_storage_summary); - assertDisplayed(R.string.internal_storage); + clickOn(R.string.internal_storage, R.string.external_storage); + assertDisplayed(R.string.pref_storage); } @Test diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 0e5002912..a9d025c69 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -275,7 +275,6 @@ Please send all the following details so we can diagnose the problem %d%% Text Zoom - Choose where files get saved to @string/on @string/off diff --git a/core/src/main/res/xml/preferences.xml b/core/src/main/res/xml/preferences.xml index b4c7825ce..e72d5b73d 100644 --- a/core/src/main/res/xml/preferences.xml +++ b/core/src/main/res/xml/preferences.xml @@ -68,8 +68,7 @@