diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index c13fd3d9b..c4ef80b15 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -36,7 +36,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; @@ -91,6 +90,7 @@ import org.kiwix.kiwixmobile.utils.KiwixTextToSpeech; import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.RateAppCounter; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StyleUtils; import org.kiwix.kiwixmobile.utils.files.FileReader; import org.kiwix.kiwixmobile.utils.files.FileUtils; @@ -131,17 +131,7 @@ import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_NOTIFICATION_ID; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_ZIM_FILE; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_ZIM_FILE_2; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_BACK_TO_TOP; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_BOTTOM_TOOLBAR; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_EXTERNAL_LINK_POPUP; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_FULLSCREEN; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_HIDE_TOOLBAR; import static org.kiwix.kiwixmobile.utils.Constants.PREF_KIWIX_MOBILE; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_LANG; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_NEW_TAB_BACKGROUND; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_ZOOM; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_ZOOM_ENABLED; import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_FILE_SEARCH; import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_FILE_SELECT; import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_PREFERENCES; @@ -222,8 +212,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private boolean isFirstRun; - private SharedPreferences settings; - private BookmarksDao bookmarksDao; @BindView(R.id.toolbar) Toolbar toolbar; @@ -270,6 +258,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback @Inject OkHttpClient okHttpClient; + @Inject SharedPreferenceUtil sharedPreferenceUtil; @Override public void onActionModeStarted(ActionMode mode) { @@ -362,13 +351,12 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback public void onCreate(Bundle savedInstanceState) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - wifiOnly = sharedPreferences.getBoolean(PREF_WIFI_ONLY, true); - nightMode = KiwixSettingsActivity.nightMode(sharedPreferences); + super.onCreate(savedInstanceState); + wifiOnly = sharedPreferenceUtil.getPrefWifiOnly(); + nightMode = KiwixSettingsActivity.nightMode(sharedPreferenceUtil); if (nightMode) { setTheme(R.style.AppTheme_Night); } - super.onCreate(savedInstanceState); handleLocaleCheck(); setContentView(R.layout.main); ButterKnife.bind(this); @@ -383,7 +371,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback snackbarLayout.setFitsSystemWindows(true); } - isHideToolbar = sharedPreferences.getBoolean(PREF_HIDE_TOOLBAR, true); + isHideToolbar = sharedPreferenceUtil.getPrefHideToolbar(); FileReader fileReader = new FileReader(); documentParserJs = fileReader.readFile("js/documentParser.js", this); @@ -531,8 +519,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback } private void checkForRateDialog() { - settings = PreferenceManager.getDefaultSharedPreferences(this); - isFirstRun = settings.getBoolean("isFirstRun", true); + isFirstRun = sharedPreferenceUtil.getPrefIsFirstRun(); visitCounterPref = new RateAppCounter(this); tempVisitCount = visitCounterPref.getCount(); ++tempVisitCount; @@ -660,8 +647,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback // Reset the Locale and change the font of all TextViews and its subclasses, if necessary private void handleLocaleCheck() { - LanguageUtils.handleLocaleChange(this); - new LanguageUtils(this).changeFont(getLayoutInflater()); + LanguageUtils.handleLocaleChange(this, sharedPreferenceUtil); + new LanguageUtils(this).changeFont(getLayoutInflater(), sharedPreferenceUtil); } @Override @@ -904,10 +891,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; getWindow().addFlags(fullScreenFlag); getWindow().clearFlags(classicScreenFlag); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean(PREF_FULLSCREEN, true); - editor.apply(); + sharedPreferenceUtil.putPrefFullScreen(true); expandDrawers(); isFullscreenOpened = true; getCurrentWebView().requestLayout(); @@ -919,7 +903,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private void closeFullScreen() { toolbarContainer.setVisibility(View.VISIBLE); - if (settings.getBoolean(PREF_BOTTOM_TOOLBAR, false)) { + if (sharedPreferenceUtil.getPrefBottomToolbar()) { pageBottomTabLayout.setVisibility(View.VISIBLE); menuBookmarks.setVisible(false); } @@ -929,10 +913,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; getWindow().clearFlags(fullScreenFlag); getWindow().addFlags(classicScreenFlag); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean(PREF_FULLSCREEN, false); - editor.apply(); + sharedPreferenceUtil.putPrefFullScreen(false); shrinkDrawers(); isFullscreenOpened = false; getCurrentWebView().requestLayout(); @@ -981,11 +962,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback // do nothing }) .setNeutralButton(R.string.do_not_ask_anymore, (dialogInterface, i) -> { - PreferenceManager - .getDefaultSharedPreferences(KiwixMobileActivity.this) - .edit() - .putBoolean(PREF_EXTERNAL_LINK_POPUP, false) - .apply(); + sharedPreferenceUtil.putPrefExternalLinkPopup(false); isExternalLinkPopup = false; startActivity(intent); @@ -1242,7 +1219,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback mWebViews.get(currentWebViewIndex).findViewById(R.id.get_content_card).setEnabled(true); } - if (settings.getBoolean(PREF_BOTTOM_TOOLBAR, false)) { + if (sharedPreferenceUtil.getPrefBottomToolbar()) { pageBottomTabLayout.setVisibility(View.VISIBLE); if (menuBookmarks != null) { menuBookmarks.setVisible(false); @@ -1543,9 +1520,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback openFullScreen(); } - if (PreferenceManager - .getDefaultSharedPreferences(getApplicationContext()) - .getBoolean(PREF_BOTTOM_TOOLBAR, false)) { + if (sharedPreferenceUtil.getPrefBottomToolbar()) { menu.findItem(R.id.menu_bookmarks).setVisible(false); } @@ -1632,17 +1607,16 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback public void loadPrefs() { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - nightMode = KiwixSettingsActivity.nightMode(sharedPreferences); - isBackToTopEnabled = sharedPreferences.getBoolean(PREF_BACK_TO_TOP, false); - isHideToolbar = sharedPreferences.getBoolean(PREF_HIDE_TOOLBAR, true); - isFullscreenOpened = sharedPreferences.getBoolean(PREF_FULLSCREEN, false); - boolean isZoomEnabled = sharedPreferences.getBoolean(PREF_ZOOM_ENABLED, false); - isOpenNewTabInBackground = sharedPreferences.getBoolean(PREF_NEW_TAB_BACKGROUND, false); - isExternalLinkPopup = sharedPreferences.getBoolean(PREF_EXTERNAL_LINK_POPUP, true); + nightMode = KiwixSettingsActivity.nightMode(sharedPreferenceUtil); + isBackToTopEnabled = sharedPreferenceUtil.getPrefBackToTop(); + isHideToolbar = sharedPreferenceUtil.getPrefHideToolbar(); + isFullscreenOpened = sharedPreferenceUtil.getPrefFullScreen(); + boolean isZoomEnabled = sharedPreferenceUtil.getPrefZoomEnabled(); + isOpenNewTabInBackground = sharedPreferenceUtil.getPrefNewTabBackground(); + isExternalLinkPopup = sharedPreferenceUtil.getPrefExternalLinkPopup(); if (isZoomEnabled) { - int zoomScale = (int) sharedPreferences.getFloat(PREF_ZOOM, 100.0f); + int zoomScale = (int) sharedPreferenceUtil.getPrefZoom(); getCurrentWebView().setInitialScale(zoomScale); } else { getCurrentWebView().setInitialScale(0); @@ -1771,11 +1745,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback LanguageUtils.handleLocaleChange(this, BuildConfig.ENFORCED_LANG); // save new locale into preferences for next startup - SharedPreferences sharedPreferences = - PreferenceManager.getDefaultSharedPreferences(this); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(PREF_LANG, BuildConfig.ENFORCED_LANG); - editor.apply(); + sharedPreferenceUtil.putPrefLanguage(BuildConfig.ENFORCED_LANG); // restart activity for new locale to take effect this.setResult(1236); @@ -1841,10 +1811,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback @Override public void webViewUrlLoading() { if (isFirstRun && !BuildConfig.DEBUG) { contentsDrawerHint(); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean("isFirstRun", false); // It is no longer the first run + sharedPreferenceUtil.putPrefIsFirstRun(false);// It is no longer the first run isFirstRun = false; - editor.apply(); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java index 660a3e287..43eb52578 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java @@ -49,6 +49,7 @@ import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.di.components.ApplicationComponent; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import java.util.ArrayList; import java.util.List; @@ -76,15 +77,16 @@ public class BookmarksActivity extends BaseActivity LinearLayout noBookmarksLayout; @Inject BookmarksPresenter presenter; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; private ActionModeListener actionModeListener; @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - if (KiwixSettingsActivity.nightMode(sharedPreferences)) { + super.onCreate(savedInstanceState); + if (KiwixSettingsActivity.nightMode(sharedPreferenceUtil)) { setTheme(R.style.AppTheme_Night); } - super.onCreate(savedInstanceState); setContentView(R.layout.activity_bookmarks); ButterKnife.bind(this); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java b/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java index 6783c62e9..0cc883124 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java @@ -6,9 +6,12 @@ import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity; import org.kiwix.kiwixmobile.di.modules.ApplicationModule; import org.kiwix.kiwixmobile.di.modules.JNIModule; import org.kiwix.kiwixmobile.di.modules.NetworkModule; +import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.search.SearchActivity; +import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; +import org.kiwix.kiwixmobile.views.web.KiwixWebView; import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; @@ -41,4 +44,12 @@ public interface ApplicationComponent { void inject(SearchActivity searchActivity); void inject(ZimManageActivity zimManageActivity); + + void inject(KiwixWebView kiwixWebView); + + void inject(KiwixSettingsActivity kiwixSettingsActivity); + + void inject(KiwixSettingsActivity.PrefsFragment prefsFragment); + + void inject(DownloadFragment downloadFragment); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java index 3c8899428..e6555fa54 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java @@ -32,6 +32,7 @@ import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.utils.NetworkUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.files.FileUtils; import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment; @@ -40,6 +41,8 @@ import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import java.util.Arrays; import java.util.LinkedHashMap; +import javax.inject.Inject; + import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; @@ -56,8 +59,15 @@ public class DownloadFragment extends Fragment { private Activity faActivity; private boolean hasArtificiallyPaused; + @Inject static SharedPreferenceUtil sharedPreferenceUtil; + + private void setupDagger() { + KiwixApplication.getInstance().getApplicationComponent().inject(this); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setupDagger(); faActivity = super.getActivity(); relLayout = (RelativeLayout) inflater.inflate(R.layout.download_management, container, false); @@ -100,10 +110,7 @@ public class DownloadFragment extends Fragment { .setTitle(R.string.wifi_only_title) .setMessage(R.string.wifi_only_msg) .setPositiveButton(R.string.yes, (dialog, i) -> { - PreferenceManager.getDefaultSharedPreferences(context) - .edit() - .putBoolean(PREF_WIFI_ONLY, false) - .apply(); + sharedPreferenceUtil.putPrefWifiOnly(false); KiwixMobileActivity.wifiOnly = false; yesAction.run(); }) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java index ace049822..b5e4b4d9d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java @@ -26,6 +26,7 @@ import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.network.KiwixService; import org.kiwix.kiwixmobile.utils.NetworkUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StorageUtils; import org.kiwix.kiwixmobile.utils.TestingUtils; import org.kiwix.kiwixmobile.utils.files.FileUtils; @@ -85,6 +86,9 @@ public class DownloadService extends Service { private static DownloadFragment downloadFragment; Handler handler = new Handler(Looper.getMainLooper()); + @Inject + SharedPreferenceUtil sharedPreferenceUtil; + public static void setDownloadFragment(DownloadFragment dFragment) { downloadFragment = dFragment; } @@ -98,8 +102,7 @@ public class DownloadService extends Service { public void onCreate() { setupDagger(); - SD_CARD = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) - .getString(PREF_STORAGE,Environment.getExternalStorageDirectory().getPath()); + SD_CARD = sharedPreferenceUtil.getPrefStorage(); KIWIX_ROOT = SD_CARD + "/Kiwix/"; KIWIX_ROOT = checkWritable(KIWIX_ROOT); @@ -134,8 +137,7 @@ public class DownloadService extends Service { } - SD_CARD = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) - .getString(PREF_STORAGE,Environment.getExternalStorageDirectory().getPath()); + SD_CARD = sharedPreferenceUtil.getPrefStorage(); KIWIX_ROOT = SD_CARD + "/Kiwix/"; KIWIX_ROOT = checkWritable(KIWIX_ROOT); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java index 0d9dce5f0..63632e9f8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java @@ -2,9 +2,7 @@ package org.kiwix.kiwixmobile.search; import android.content.ActivityNotFoundException; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.provider.Settings; import android.speech.RecognizerIntent; import android.support.v4.view.MenuItemCompat; @@ -25,6 +23,7 @@ import android.widget.Toast; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.views.AutoCompleteAdapter; import java.util.ArrayList; @@ -35,7 +34,6 @@ import javax.inject.Inject; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_IS_WIDGET_VOICE; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_NIGHTMODE; import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; @@ -50,6 +48,8 @@ public class SearchActivity extends AppCompatActivity @Inject SearchPresenter searchPresenter; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; private void setupDagger() { KiwixApplication.getInstance().getApplicationComponent().inject(this); @@ -57,8 +57,7 @@ public class SearchActivity extends AppCompatActivity @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - if (sharedPreferences.getBoolean(PREF_NIGHTMODE, false)) { + if (sharedPreferenceUtil.getPrefNightMode()) { setTheme(R.style.AppTheme_Night); } setupDagger(); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java index 88d2a6377..9d243405d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java @@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.settings; import android.app.FragmentManager; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -30,7 +29,6 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; -import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; @@ -41,12 +39,15 @@ import android.widget.BaseAdapter; import android.widget.Toast; import org.kiwix.kiwixmobile.BuildConfig; +import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.RecentSearchDao; import org.kiwix.kiwixmobile.utils.LanguageUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StyleUtils; +import org.kiwix.kiwixmobile.views.LanguageSelectDialog; import org.kiwix.kiwixmobile.views.SliderPreference; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryUtils; @@ -55,6 +56,8 @@ import java.util.Calendar; import java.util.List; import java.util.Locale; +import javax.inject.Inject; + import eu.mhutti1.utils.storage.StorageDevice; import eu.mhutti1.utils.storage.StorageSelectDialog; @@ -65,7 +68,6 @@ import static org.kiwix.kiwixmobile.utils.Constants.PREF_CREDITS; import static org.kiwix.kiwixmobile.utils.Constants.PREF_LANG; import static org.kiwix.kiwixmobile.utils.Constants.PREF_NIGHTMODE; import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE_TITLE; import static org.kiwix.kiwixmobile.utils.Constants.PREF_VERSION; import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY; import static org.kiwix.kiwixmobile.utils.Constants.PREF_ZOOM; @@ -81,10 +83,17 @@ public class KiwixSettingsActivity extends AppCompatActivity { private static final int DAWN_HOUR = 6; private static final int DUSK_HOUR = 18; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; + + private void setupDagger() { + KiwixApplication.getInstance().getApplicationComponent().inject(this); + } + @Override public void onCreate(Bundle savedInstanceState) { - - if (nightMode(PreferenceManager.getDefaultSharedPreferences(this))) { + setupDagger(); + if(nightMode(sharedPreferenceUtil)){ setTheme(R.style.AppTheme_Night); } getWindow().setWindowAnimations(R.style.WindowAnimationTransition); @@ -123,14 +132,14 @@ public class KiwixSettingsActivity extends AppCompatActivity { toolbar.setNavigationOnClickListener(v -> onBackPressed()); } - public static boolean nightMode(SharedPreferences preferences) { - boolean autoNightMode = preferences.getBoolean(PREF_AUTONIGHTMODE, false); - if (autoNightMode) { + public static boolean nightMode(SharedPreferenceUtil sharedPreferenceUtil){ + boolean autoNightMode = sharedPreferenceUtil.getPrefAutoNightMode(); + if(autoNightMode){ Calendar cal = Calendar.getInstance(); int hour = cal.get(Calendar.HOUR_OF_DAY); return hour < DAWN_HOUR || hour > DUSK_HOUR; - } else { - return preferences.getBoolean(PREF_NIGHTMODE, false); + } else{ + return sharedPreferenceUtil.getPrefNightMode(); } } @@ -140,13 +149,19 @@ public class KiwixSettingsActivity extends AppCompatActivity { private SliderPreference mSlider; private RecentSearchDao recentSearchDao; + @Inject SharedPreferenceUtil sharedPreferenceUtil; + + void setupDagger() { + KiwixApplication.getInstance().getApplicationComponent().inject(this); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setupDagger(); addPreferencesFromResource(R.xml.preferences); - boolean auto_night_mode = PreferenceManager.getDefaultSharedPreferences(getActivity()) - .getBoolean(PREF_AUTONIGHTMODE, false); + boolean auto_night_mode = sharedPreferenceUtil.getPrefAutoNightMode(); if (auto_night_mode) { getPreferenceScreen().findPreference(PREF_NIGHTMODE).setEnabled(false); @@ -167,7 +182,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { setSliderState(); setStorage(); setUpSettings(); - new LanguageUtils(getActivity()).changeFont(getActivity().getLayoutInflater()); + new LanguageUtils(getActivity()).changeFont(getActivity().getLayoutInflater(), sharedPreferenceUtil); recentSearchDao = new RecentSearchDao(KiwixDatabase.getInstance(getActivity())); } @@ -181,14 +196,11 @@ public class KiwixSettingsActivity extends AppCompatActivity { getPreferenceScreen().removePreference(findPreference("pref_storage")); } else { if (Environment.isExternalStorageEmulated()) { - findPreference(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity()) - .getString(PREF_STORAGE_TITLE, "Internal")); + findPreference(PREF_STORAGE).setTitle(sharedPreferenceUtil.getPrefStorageTitle("Internal")); } else { - findPreference(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity()) - .getString(PREF_STORAGE_TITLE, "External")); + findPreference(PREF_STORAGE).setTitle(sharedPreferenceUtil.getPrefStorageTitle("External")); } - findPreference(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman(new File(PreferenceManager.getDefaultSharedPreferences(getActivity()) - .getString(PREF_STORAGE, Environment.getExternalStorageDirectory().getPath())).getFreeSpace())); + findPreference(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman( new File(sharedPreferenceUtil.getPrefStorage()).getFreeSpace())); } } @@ -222,8 +234,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { private void setUpLanguageChooser(String preferenceId) { ListPreference languagePref = (ListPreference) findPreference(preferenceId); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); - String selectedLang = sharedPreferences.getString(PREF_LANG, Locale.getDefault().getLanguage()); + String selectedLang = sharedPreferenceUtil.getPrefLanguage(Locale.getDefault().toString()); List languageCodeList = new LanguageUtils(getActivity()).getKeys(); selectedLang = languageCodeList.contains(selectedLang) ? selectedLang : "en"; String code[] = languageCodeList.toArray(new String[languageCodeList.size()]); @@ -241,9 +252,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { String languageCode = (String) newValue; LanguageUtils.handleLocaleChange(getActivity(), languageCode); preference.setTitle(new Locale(languageCode).getLanguage()); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(PREF_LANG, languageCode); - editor.apply(); + sharedPreferenceUtil.putPrefLanguage(languageCode); restartActivity(); return true; }); @@ -275,7 +284,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { } if (key.equals(PREF_NIGHTMODE)) { KiwixMobileActivity.refresh = true; - KiwixMobileActivity.nightMode = nightMode(sharedPreferences); + KiwixMobileActivity.nightMode = nightMode(sharedPreferenceUtil); getActivity().finish(); startActivity(new Intent(getActivity(), KiwixSettingsActivity.class)); } @@ -284,7 +293,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { } if (key.equals(PREF_AUTONIGHTMODE)) { KiwixMobileActivity.refresh = true; - KiwixMobileActivity.nightMode = nightMode(sharedPreferences); + KiwixMobileActivity.nightMode = nightMode(sharedPreferenceUtil); getActivity().finish(); startActivity(new Intent(getActivity(), KiwixSettingsActivity.class)); } @@ -294,12 +303,10 @@ public class KiwixSettingsActivity extends AppCompatActivity { new AlertDialog.Builder(getActivity(), dialogStyle()) .setTitle(getResources().getString(R.string.clear_all_history_dialog_title)) .setMessage(getResources().getString(R.string.clear_recent_and_tabs_history_dialog)) - .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - deleteSearchHistoryFromDb(); - allHistoryCleared = true; - Toast.makeText(getActivity(), getResources().getString(R.string.all_history_cleared_toast), Toast.LENGTH_SHORT).show(); - } + .setPositiveButton(android.R.string.yes, (dialog, which) -> { + deleteSearchHistoryFromDb(); + allHistoryCleared = true; + Toast.makeText(getActivity(), getResources().getString(R.string.all_history_cleared_toast), Toast.LENGTH_SHORT).show(); }) .setNegativeButton(android.R.string.no, (dialog, which) -> { // do nothing @@ -332,7 +339,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { return true; } - public void openFolderSelect() { + public void openFolderSelect(){ FragmentManager fm = getFragmentManager(); StorageSelectDialog dialogFragment = new StorageSelectDialog(); Bundle b = new Bundle(); @@ -342,23 +349,19 @@ public class KiwixSettingsActivity extends AppCompatActivity { dialogFragment.setArguments(b); dialogFragment.setOnSelectListener(this); dialogFragment.show(fm, getResources().getString(R.string.pref_storage)); - } @Override public void selectionCallback(StorageDevice storageDevice) { findPreference(PREF_STORAGE).setSummary(storageDevice.getSize()); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(PREF_STORAGE, storageDevice.getName()); + sharedPreferenceUtil.putPrefStorage(storageDevice.getName()); if (storageDevice.isInternal()) { findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.internal_storage)); - editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.internal_storage)); + sharedPreferenceUtil.putPrefStorageTitle(getResources().getString(R.string.internal_storage)); } else { findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.external_storage)); - editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.external_storage)); + sharedPreferenceUtil.putPrefStorageTitle(getResources().getString(R.string.external_storage)); } - editor.apply(); } } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java index f9baca53e..0b9d54ea5 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java @@ -61,6 +61,8 @@ public final class Constants { public static final String PREF_EXTERNAL_LINK_POPUP = "pref_external_link_popup"; + public static final String PREF_IS_FIRST_RUN = "isFirstRun"; + // Tags public static final String TAG_FILE_SEARCHED = "searchedarticle"; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/LanguageUtils.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/LanguageUtils.java index d67ce6980..3ad6c06cc 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/utils/LanguageUtils.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/LanguageUtils.java @@ -21,12 +21,10 @@ package org.kiwix.kiwixmobile.utils; import android.annotation.TargetApi; import android.content.Context; -import android.content.SharedPreferences; import android.content.res.Configuration; import android.graphics.Typeface; import android.os.Build; import android.os.Handler; -import android.preference.PreferenceManager; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; @@ -66,10 +64,8 @@ public class LanguageUtils { sortLanguageList(context.getResources().getConfiguration().locale); } - public static void handleLocaleChange(Context context) { - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - String language = prefs.getString(PREF_LANG, ""); + public static void handleLocaleChange(Context context, SharedPreferenceUtil sharedPreferenceUtil) { + String language = sharedPreferenceUtil.getPrefLanguage(""); if (language.isEmpty()) { return; @@ -189,7 +185,7 @@ public class LanguageUtils { // Check, if the selected Locale is supported and weather we actually need to change our font. // We do this by checking, if our Locale is available in the List, that Locale.getAvailableLocales() returns. - private boolean haveToChangeFont() { + private boolean haveToChangeFont(SharedPreferenceUtil sharedPreferenceUtil) { for (Locale s : Locale.getAvailableLocales()) { if (s.getLanguage().equals(Locale.getDefault().toString())) { @@ -197,8 +193,7 @@ public class LanguageUtils { } // Don't change the language, if the options hasn't been set - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); - String language = prefs.getString(PREF_LANG, ""); + String language = sharedPreferenceUtil.getPrefLanguage(""); if (language.isEmpty()) { return false; @@ -215,9 +210,9 @@ public class LanguageUtils { // which also sets a Factory on the LayoutInflator, we have to access the private field of the // LayoutInflater, that handles this restriction via Java's reflection API // and make it accessible set it to false again. - public void changeFont(LayoutInflater layoutInflater) { + public void changeFont(LayoutInflater layoutInflater, SharedPreferenceUtil sharedPreferenceUtil) { - if (!haveToChangeFont()) { + if (!haveToChangeFont(sharedPreferenceUtil)) { return; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/SharedPreferenceUtil.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/SharedPreferenceUtil.java new file mode 100644 index 000000000..b062474d5 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/SharedPreferenceUtil.java @@ -0,0 +1,143 @@ +package org.kiwix.kiwixmobile.utils; + +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Environment; +import android.preference.PreferenceManager; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import static org.kiwix.kiwixmobile.utils.Constants.PREF_AUTONIGHTMODE; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_BACK_TO_TOP; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_BOTTOM_TOOLBAR; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_EXTERNAL_LINK_POPUP; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_FULLSCREEN; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_FULL_TEXT_SEARCH; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_HIDE_TOOLBAR; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_IS_FIRST_RUN; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_LANG; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_NEW_TAB_BACKGROUND; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_NIGHTMODE; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE_TITLE; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_ZOOM; +import static org.kiwix.kiwixmobile.utils.Constants.PREF_ZOOM_ENABLED; + +/** + * Manager for the Default Shared Preferences of the application. + */ + +@Singleton +public class SharedPreferenceUtil { + private SharedPreferences sharedPreferences; + private SharedPreferences.Editor editor; + + @Inject + public SharedPreferenceUtil(Context context) { + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); + editor = sharedPreferences.edit(); + } + + public void remove(String key) { + editor.remove(key).apply(); + } + + //Getters + + public boolean getPrefWifiOnly() { + return sharedPreferences.getBoolean(PREF_WIFI_ONLY, true); + } + + public boolean getPrefHideToolbar() { + return sharedPreferences.getBoolean(PREF_HIDE_TOOLBAR, true); + } + + public boolean getPrefIsFirstRun() { + return sharedPreferences.getBoolean(PREF_IS_FIRST_RUN, true); + } + + public boolean getPrefFullScreen() { + return sharedPreferences.getBoolean(PREF_FULLSCREEN, false); + } + + public boolean getPrefBottomToolbar() { + return sharedPreferences.getBoolean(PREF_BOTTOM_TOOLBAR, false); + } + + public boolean getPrefBackToTop() { + return sharedPreferences.getBoolean(PREF_BACK_TO_TOP, false); + } + + public boolean getPrefZoomEnabled() { + return sharedPreferences.getBoolean(PREF_ZOOM_ENABLED, false); + } + + public boolean getPrefNewTabBackground() { + return sharedPreferences.getBoolean(PREF_NEW_TAB_BACKGROUND, false); + } + + public boolean getPrefExternalLinkPopup() { + return sharedPreferences.getBoolean(PREF_EXTERNAL_LINK_POPUP, true); + } + + public float getPrefZoom() { + return sharedPreferences.getFloat(PREF_ZOOM, 100.0f); + } + + public String getPrefLanguage(String defaultLanguage) { + return sharedPreferences.getString(PREF_LANG, defaultLanguage); + } + + public String getPrefStorage() { + return sharedPreferences.getString(PREF_STORAGE, Environment.getExternalStorageDirectory().getPath()); + } + + public boolean getPrefNightMode() { + return sharedPreferences.getBoolean(PREF_NIGHTMODE, false); + } + + public boolean getPrefAutoNightMode() { + return sharedPreferences.getBoolean(PREF_AUTONIGHTMODE, false); + } + + public String getPrefStorageTitle(String defaultTitle) { + return sharedPreferences.getString(PREF_STORAGE_TITLE, defaultTitle); + } + + public boolean getPrefFullTextSearch() { + return sharedPreferences.getBoolean(PREF_FULL_TEXT_SEARCH, false); + } + + // Setters + + public void putPrefLanguage(String language) { + editor.putString(PREF_LANG, language).apply(); + } + + public void putPrefIsFirstRun(boolean isFirstRun) { + editor.putBoolean(PREF_IS_FIRST_RUN, isFirstRun); + } + + public void putPrefWifiOnly(boolean wifiOnly) { + editor.putBoolean(PREF_WIFI_ONLY, wifiOnly).apply(); + } + + public void putPrefStorageTitle(String storageTitle) { + editor.putString(PREF_STORAGE_TITLE, storageTitle).apply(); + } + + public void putPrefStorage(String storage) { + editor.putString(PREF_STORAGE, storage).apply(); + } + + public void putPrefFullScreen(boolean fullScreen) { + editor.putBoolean(PREF_FULLSCREEN, fullScreen).apply(); + } + + public void putPrefExternalLinkPopup(boolean externalLinkPopup) { + editor.putBoolean(PREF_EXTERNAL_LINK_POPUP, externalLinkPopup).apply(); + } + +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/views/AutoCompleteAdapter.java b/app/src/main/java/org/kiwix/kiwixmobile/views/AutoCompleteAdapter.java index 98f9376b7..7b41dfc10 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/views/AutoCompleteAdapter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/views/AutoCompleteAdapter.java @@ -1,9 +1,6 @@ package org.kiwix.kiwixmobile.views; import android.content.Context; -import android.content.SharedPreferences; -import android.os.ResultReceiver; -import android.preference.PreferenceManager; import android.text.Html; import android.view.View; import android.view.ViewGroup; @@ -14,16 +11,14 @@ import android.widget.TextView; import org.kiwix.kiwixlib.JNIKiwix; import org.kiwix.kiwixlib.JNIKiwixSearcher; -import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.ZimContentProvider; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_FULL_TEXT_SEARCH; - public class AutoCompleteAdapter extends ArrayAdapter implements Filterable { private List mData; @@ -33,6 +28,8 @@ public class AutoCompleteAdapter extends ArrayAdapter implements Filtera private Context context; @Inject JNIKiwix currentJNIReader; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; public AutoCompleteAdapter(Context context) { super(context, android.R.layout.simple_list_item_1); @@ -85,8 +82,7 @@ public class AutoCompleteAdapter extends ArrayAdapter implements Filtera final String query = constraint.toString(); /* Fulltext search */ - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); - if (sharedPreferences.getBoolean(PREF_FULL_TEXT_SEARCH, false)) { + if (sharedPreferenceUtil.getPrefFullTextSearch()) { ZimContentProvider.jniSearcher.search(query, 200); JNIKiwixSearcher.Result result = ZimContentProvider.jniSearcher.getNextResult(); while (result != null) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/views/web/KiwixWebView.java b/app/src/main/java/org/kiwix/kiwixmobile/views/web/KiwixWebView.java index 03ef26689..b82a9363b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/views/web/KiwixWebView.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/views/web/KiwixWebView.java @@ -20,14 +20,12 @@ package org.kiwix.kiwixmobile.views.web; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.net.Uri; import android.os.Environment; import android.os.Handler; import android.os.Message; -import android.preference.PreferenceManager; import android.util.AttributeSet; import android.util.Log; import android.view.ContextMenu; @@ -36,12 +34,14 @@ import android.view.View; import android.webkit.WebView; import android.widget.Toast; +import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixWebChromeClient; import org.kiwix.kiwixmobile.KiwixWebViewClient; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.WebViewCallback; import org.kiwix.kiwixmobile.utils.LanguageUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import java.io.File; import java.io.FileOutputStream; @@ -49,6 +49,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import javax.inject.Inject; + public class KiwixWebView extends WebView { private static final String PREF_ZOOM = "pref_zoom_slider"; @@ -62,6 +64,7 @@ public class KiwixWebView extends WebView { 0, 0, 0, 1.0f, 0 // alpha }; private WebViewCallback callback; + @Inject SharedPreferenceUtil sharedPreferenceUtil; private Handler saveHandler = new Handler() { @@ -121,6 +124,7 @@ public class KiwixWebView extends WebView { public KiwixWebView(Context context, WebViewCallback callback, AttributeSet attrs) { super(context, attrs); this.callback = callback; + setupDagger(); // Set the user agent to the current locale so it can be read with navigator.userAgent getSettings().setUserAgentString(LanguageUtils.getCurrentLocale(context).toString()); setWebViewClient(new KiwixWebViewClient(callback)); @@ -128,15 +132,17 @@ public class KiwixWebView extends WebView { getSettings().setDomStorageEnabled(true); } + private void setupDagger() { + KiwixApplication.getInstance().getApplicationComponent().inject(this); + } + public void loadPrefs() { disableZoomControls(); - SharedPreferences sharedPreferences = - PreferenceManager.getDefaultSharedPreferences(getContext()); - boolean zoomEnabled = sharedPreferences.getBoolean(PREF_ZOOM_ENABLED, false); + boolean zoomEnabled = sharedPreferenceUtil.getPrefZoomEnabled(); if (zoomEnabled) { - int zoomScale = (int) sharedPreferences.getFloat(PREF_ZOOM, 100.0f); + int zoomScale = (int) sharedPreferenceUtil.getPrefZoom(); setInitialScale(zoomScale); } else { setInitialScale(0); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java index f33054b4a..e916caf66 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java @@ -1,16 +1,13 @@ package org.kiwix.kiwixmobile.zim_manager; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.TabLayout; import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; @@ -18,13 +15,13 @@ import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import android.widget.Toast; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.views.LanguageSelectDialog; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; @@ -64,6 +61,8 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie @Inject ZimManagePresenter zimManagePresenter; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; private void setupDagger() { KiwixApplication.getInstance().getApplicationComponent().inject(this); @@ -71,13 +70,12 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - if (KiwixSettingsActivity.nightMode(sharedPreferences)) { + setupDagger(); + if (KiwixSettingsActivity.nightMode(sharedPreferenceUtil)) { setTheme(R.style.AppTheme_Night); } super.onCreate(savedInstanceState); setContentView(R.layout.zim_manager); - setupDagger(); setUpToolbar(); zimManagePresenter.attachView(this); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java index 62906921e..d67022f86 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java @@ -27,15 +27,12 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.Environment; -import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -48,7 +45,6 @@ import android.widget.TextView; import android.widget.Toast; import org.kiwix.kiwixmobile.KiwixApplication; -import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.ZimContentProvider; import org.kiwix.kiwixmobile.database.BookDao; @@ -57,6 +53,7 @@ import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.utils.BookUtils; import org.kiwix.kiwixmobile.utils.LanguageUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.TestingUtils; import org.kiwix.kiwixmobile.utils.files.FileSearch; import org.kiwix.kiwixmobile.utils.files.FileUtils; @@ -70,7 +67,6 @@ import java.util.List; import javax.inject.Inject; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE; import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_STORAGE_PERMISSION; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.NetworkUtils.parseURL; @@ -93,6 +89,7 @@ public class ZimFileSelectFragment extends Fragment @Inject ZimFileSelectPresenter presenter; @Inject BookUtils bookUtils; + @Inject SharedPreferenceUtil sharedPreferenceUtil; private void setupDagger() { KiwixApplication.getInstance().getApplicationComponent().inject(this); @@ -105,7 +102,7 @@ public class ZimFileSelectFragment extends Fragment presenter.attachView(this); // Replace LinearLayout by the type of the root element of the layout you're trying to load llLayout = (RelativeLayout) inflater.inflate(R.layout.zim_list, container, false); - new LanguageUtils(super.getActivity()).changeFont(super.getActivity().getLayoutInflater()); + new LanguageUtils(super.getActivity()).changeFont(super.getActivity().getLayoutInflater(), sharedPreferenceUtil); mFileMessage = llLayout.findViewById(R.id.file_management_no_files); mZimFileList = llLayout.findViewById(R.id.zimfilelist); @@ -269,8 +266,7 @@ public class ZimFileSelectFragment extends Fragment swipeRefreshLayout.setRefreshing(false); }); } - }).scan(PreferenceManager.getDefaultSharedPreferences(context) - .getString(PREF_STORAGE, Environment.getExternalStorageDirectory().getPath())); + }).scan(sharedPreferenceUtil.getPrefStorage()); } @Override diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java index 78a7e1382..94220a41f 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java @@ -3,23 +3,18 @@ package org.kiwix.kiwixmobile.zim_manager.library_view; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; -import android.content.SharedPreferences; import android.graphics.Color; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; -import android.os.Environment; import android.os.IBinder; -import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -28,7 +23,6 @@ import android.widget.AdapterView; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; -import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -41,6 +35,7 @@ import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.network.KiwixService; import org.kiwix.kiwixmobile.utils.NetworkUtils; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StorageUtils; import org.kiwix.kiwixmobile.utils.StyleUtils; import org.kiwix.kiwixmobile.utils.TestingUtils; @@ -62,9 +57,6 @@ import static android.view.View.GONE; import static org.kiwix.kiwixmobile.downloader.DownloadService.KIWIX_ROOT; import static org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity.Book; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_BOOK; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_STORAGE_TITLE; -import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; public class LibraryFragment extends Fragment implements AdapterView.OnItemClickListener, StorageSelectDialog.OnSelectListener, LibraryViewCallback { @@ -109,6 +101,9 @@ public class LibraryFragment extends Fragment @Inject LibraryPresenter presenter; + @Inject + SharedPreferenceUtil sharedPreferenceUtil; + private void setupDagger() { KiwixApplication.getInstance().getApplicationComponent().inject(this); } @@ -318,23 +313,17 @@ public class LibraryFragment extends Fragment } public long getSpaceAvailable() { - return new File(PreferenceManager.getDefaultSharedPreferences(super.getActivity()) - .getString(PREF_STORAGE, Environment.getExternalStorageDirectory() - .getPath())).getFreeSpace(); + return new File(sharedPreferenceUtil.getPrefStorage()).getFreeSpace(); } @Override public void selectionCallback(StorageDevice storageDevice) { - SharedPreferences sharedPreferences = - PreferenceManager.getDefaultSharedPreferences(getActivity()); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(PREF_STORAGE, storageDevice.getName()); + sharedPreferenceUtil.putPrefStorage(storageDevice.getName()); if (storageDevice.isInternal()) { - editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.internal_storage)); + sharedPreferenceUtil.putPrefStorageTitle(getResources().getString(R.string.internal_storage)); } else { - editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.external_storage)); + sharedPreferenceUtil.putPrefStorageTitle(getResources().getString(R.string.external_storage)); } - editor.apply(); } public class DownloadServiceConnection {