From c4e03f3183f8af77c94b72a8aeec21de913ba003 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Tue, 8 Sep 2020 11:59:26 +0100 Subject: [PATCH] #2256 External device mgmt is not robust and gives contradictory information - don't depend on isEmulated --- .../kiwixmobile/settings/KiwixPrefsFragment.kt | 17 +++++++++-------- .../zim_manager/library_view/LibraryFragment.kt | 6 ------ .../core/settings/CorePrefsFragment.java | 10 +++------- .../core/utils/SharedPreferenceUtil.java | 9 --------- 4 files changed, 12 insertions(+), 30 deletions(-) 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 226148190..576fe1356 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt @@ -19,8 +19,9 @@ package org.kiwix.kiwixmobile.settings import android.os.Bundle -import android.os.Environment +import androidx.core.content.ContextCompat import androidx.preference.Preference +import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.PREF_STORAGE @@ -33,13 +34,13 @@ class KiwixPrefsFragment : CorePrefsFragment() { } override fun setStorage() { - if (Environment.isExternalStorageEmulated()) { - findPreference(PREF_STORAGE)?.title = - sharedPreferenceUtil.getPrefStorageTitle("Internal") - } else { - findPreference(PREF_STORAGE)?.title = - sharedPreferenceUtil.getPrefStorageTitle("External") - } + findPreference(PREF_STORAGE)?.title = getString( + if (sharedPreferenceUtil.prefStorage == internalStorage()) R.string.internal_storage + else R.string.external_storage + ) findPreference(PREF_STORAGE)?.summary = storageCalculator.calculateAvailableSpace() } + + private fun internalStorage(): String? = + ContextCompat.getExternalFilesDirs(requireContext(), null).firstOrNull()?.path } 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 f9d77b20f..8771d7a89 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 @@ -177,12 +177,6 @@ open class LibraryFragment : BaseFragment() { private fun storeDeviceInPreferences(storageDevice: StorageDevice) { sharedPreferenceUtil.putPrefStorage(storageDevice.name) - sharedPreferenceUtil.putPrefStorageTitle( - getString( - if (storageDevice.isInternal) R.string.internal_storage - else R.string.external_storage - ) - ) } private fun onBookItemClick(item: BookItem) { 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 4c65d2405..1646be5f6 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 @@ -268,7 +268,7 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme public void openFolderSelect() { StorageSelectDialog dialogFragment = new StorageSelectDialog(); dialogFragment.setOnSelectAction(this::onStorageDeviceSelected); - dialogFragment.show(((AppCompatActivity) getActivity()).getSupportFragmentManager(), + dialogFragment.show(getActivity().getSupportFragmentManager(), getResources().getString(R.string.pref_storage)); } @@ -278,13 +278,9 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme ); sharedPreferenceUtil.putPrefStorage(storageDevice.getName()); if (storageDevice.isInternal()) { - findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.internal_storage)); - sharedPreferenceUtil.putPrefStorageTitle( - getResources().getString(R.string.internal_storage)); + findPreference(PREF_STORAGE).setTitle(getString(R.string.internal_storage)); } else { - findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.external_storage)); - sharedPreferenceUtil.putPrefStorageTitle( - getResources().getString(R.string.external_storage)); + findPreference(PREF_STORAGE).setTitle(getString(R.string.external_storage)); } return Unit.INSTANCE; } 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 894e46f3a..ee412a294 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 @@ -50,7 +50,6 @@ public class SharedPreferenceUtil { private static final String PREF_BACK_TO_TOP = "pref_backtotop"; private static final String PREF_FULLSCREEN = "pref_fullscreen"; private static final String PREF_NEW_TAB_BACKGROUND = "pref_newtab_background"; - private static final String PREF_STORAGE_TITLE = "pref_selected_title"; private static final String PREF_EXTERNAL_LINK_POPUP = "pref_external_link_popup"; private static final String PREF_IS_FIRST_RUN = "isFirstRun"; private static final String PREF_SHOW_BOOKMARKS_ALL_BOOKS = "show_bookmarks_current_book"; @@ -115,10 +114,6 @@ public class SharedPreferenceUtil { : CoreApp.getInstance().getFilesDir().getPath(); // workaround for emulators } - public String getPrefStorageTitle(String defaultTitle) { - return sharedPreferences.getString(PREF_STORAGE_TITLE, defaultTitle); - } - public void putPrefLanguage(String language) { sharedPreferences.edit().putString(PREF_LANG, language).apply(); } @@ -131,10 +126,6 @@ public class SharedPreferenceUtil { sharedPreferences.edit().putBoolean(PREF_WIFI_ONLY, wifiOnly).apply(); } - public void putPrefStorageTitle(String storageTitle) { - sharedPreferences.edit().putString(PREF_STORAGE_TITLE, storageTitle).apply(); - } - public void putPrefStorage(String storage) { sharedPreferences.edit().putString(PREF_STORAGE, storage).apply(); prefStorages.onNext(storage);