mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-24 05:04:50 -04:00
Merge pull request #1450 from kiwix/feature/macgills/#1383-cleanup-menu
#1383 remove rendundant menu items + reorganise items/constants + cle…
This commit is contained in:
commit
dd5d3c721d
@ -41,7 +41,7 @@ import static androidx.test.espresso.intent.Intents.intended;
|
||||
import static androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_SHOW_INTRO;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_SHOW_INTRO;
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
|
@ -33,7 +33,7 @@ import org.kiwix.kiwixmobile.downloader.DownloadService;
|
||||
import org.kiwix.kiwixmobile.language.LanguageActivity;
|
||||
import org.kiwix.kiwixmobile.main.KiwixWebView;
|
||||
import org.kiwix.kiwixmobile.search.AutoCompleteAdapter;
|
||||
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
|
||||
import org.kiwix.kiwixmobile.settings.PrefsFragment;
|
||||
import org.kiwix.kiwixmobile.zim_manager.DownloadNotificationClickedReceiver;
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity;
|
||||
|
||||
@ -66,7 +66,7 @@ public interface ApplicationComponent {
|
||||
|
||||
void inject(KiwixWebView kiwixWebView);
|
||||
|
||||
void inject(KiwixSettingsActivity.PrefsFragment prefsFragment);
|
||||
void inject(PrefsFragment prefsFragment);
|
||||
|
||||
void inject(AutoCompleteAdapter autoCompleteAdapter);
|
||||
|
||||
|
@ -35,12 +35,11 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
import org.kiwix.kiwixmobile.data.ZimContentProvider;
|
||||
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
|
||||
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.NOTES_DIRECTORY;
|
||||
|
||||
/**
|
||||
* Created by @author Aditya-Sood (21/05/19) as a part of GSoC 2019
|
||||
*
|
||||
@ -53,6 +52,8 @@ import static org.kiwix.kiwixmobile.utils.Constants.NOTES_DIRECTORY;
|
||||
public class AddNoteDialog extends DialogFragment
|
||||
implements ConfirmationAlertDialogFragment.UserClickListener {
|
||||
|
||||
public static final String NOTES_DIRECTORY =
|
||||
Environment.getExternalStorageDirectory() + "/Kiwix/Notes/";
|
||||
public static final String TAG = "AddNoteDialog";
|
||||
|
||||
private SharedPreferenceUtil sharedPreferenceUtil;
|
||||
@ -299,7 +300,7 @@ public class AddNoteDialog extends DialogFragment
|
||||
* "{External Storage}/Kiwix/Notes/ZimFileTitle/ArticleTitle.txt"
|
||||
* */
|
||||
|
||||
if (isExternalStorageWritable()) {
|
||||
if (KiwixApplication.getInstance().isExternalStorageWritable()) {
|
||||
|
||||
if (ContextCompat.checkSelfPermission(getContext(),
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||
@ -416,10 +417,6 @@ public class AddNoteDialog extends DialogFragment
|
||||
}
|
||||
}
|
||||
|
||||
static boolean isExternalStorageWritable() {
|
||||
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
|
||||
}
|
||||
|
||||
private void showToast(int stringResource, int duration) {
|
||||
Toast.makeText(getActivity(), stringResource, duration).show();
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ import android.appwidget.AppWidgetManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
@ -135,8 +134,6 @@ import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_LIBRARY;
|
||||
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.NOTES_DIRECTORY;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_KIWIX_MOBILE;
|
||||
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_HISTORY_ITEM_CHOSEN;
|
||||
@ -153,6 +150,7 @@ import static org.kiwix.kiwixmobile.utils.Constants.TAG_CURRENT_TAB;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX;
|
||||
import static org.kiwix.kiwixmobile.utils.LanguageUtils.getResourceString;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_KIWIX_MOBILE;
|
||||
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
||||
import static org.kiwix.kiwixmobile.utils.UpdateUtils.reformatProviderUrl;
|
||||
|
||||
@ -850,7 +848,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_new_tab:
|
||||
case android.R.id.home:
|
||||
if (tabSwitcherRoot.getVisibility() == View.VISIBLE) {
|
||||
hideTabSwitcher();
|
||||
@ -858,17 +855,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
newTab(HOME_URL);
|
||||
return true;
|
||||
|
||||
case R.id.menu_home:
|
||||
openMainPage();
|
||||
break;
|
||||
|
||||
case R.id.menu_searchintext:
|
||||
compatCallback.setActive();
|
||||
compatCallback.setWebView(getCurrentWebView());
|
||||
startSupportActionMode(compatCallback);
|
||||
compatCallback.showSoftInput();
|
||||
break;
|
||||
|
||||
case R.id.menu_add_note:
|
||||
if (requestExternalStorageWritePermissionForNotes()) {
|
||||
// Check permission since notes are stored in the public-external storage
|
||||
@ -876,12 +862,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
}
|
||||
break;
|
||||
|
||||
case R.id.menu_clear_notes:
|
||||
if (requestExternalStorageWritePermissionForNotes()) { // Check permission since notes are stored in the public-external storage
|
||||
showClearAllNotesDialog();
|
||||
}
|
||||
break;
|
||||
|
||||
case R.id.menu_bookmarks_list:
|
||||
goToBookmarks();
|
||||
break;
|
||||
@ -947,75 +927,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
/** Dialog to take user confirmation before deleting all notes */
|
||||
private void showClearAllNotesDialog() {
|
||||
|
||||
AlertDialog.Builder builder;
|
||||
if (sharedPreferenceUtil != null && sharedPreferenceUtil.nightMode()) { // Night Mode support
|
||||
builder = new AlertDialog.Builder(this, R.style.AppTheme_Dialog_Night);
|
||||
} else {
|
||||
builder = new AlertDialog.Builder(this);
|
||||
}
|
||||
|
||||
builder.setMessage(R.string.delete_notes_confirmation_msg)
|
||||
.setNegativeButton(android.R.string.cancel, null) // Do nothing for 'Cancel' button
|
||||
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
clearAllNotes();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
/** Method to delete all user notes */
|
||||
void clearAllNotes() {
|
||||
|
||||
boolean result = true; // Result of all delete() calls is &&-ed to this variable
|
||||
|
||||
if (AddNoteDialog.isExternalStorageWritable()) {
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
Log.d("MainActivity", "WRITE_EXTERNAL_STORAGE permission not granted");
|
||||
showToast(R.string.ext_storage_permission_not_granted, Toast.LENGTH_LONG);
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Replace below code with Kotlin's deleteRecursively() method
|
||||
|
||||
File notesDirectory = new File(NOTES_DIRECTORY);
|
||||
File[] filesInNotesDirectory = notesDirectory.listFiles();
|
||||
|
||||
if (filesInNotesDirectory == null) { // Notes folder doesn't exist
|
||||
showToast(R.string.notes_deletion_none_found, Toast.LENGTH_LONG);
|
||||
return;
|
||||
}
|
||||
|
||||
for (File wikiFileDirectory : filesInNotesDirectory) {
|
||||
if (wikiFileDirectory.isDirectory()) {
|
||||
File[] filesInWikiDirectory = wikiFileDirectory.listFiles();
|
||||
|
||||
for (File noteFile : filesInWikiDirectory) {
|
||||
if (noteFile.isFile()) {
|
||||
result = result && noteFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result = result && wikiFileDirectory.delete(); // Wiki specific notes directory deleted
|
||||
}
|
||||
|
||||
result =
|
||||
result && notesDirectory.delete(); // "{External Storage}/Kiwix/Notes" directory deleted
|
||||
}
|
||||
|
||||
if (result) {
|
||||
showToast(R.string.notes_deletion_successful, Toast.LENGTH_SHORT);
|
||||
} else {
|
||||
showToast(R.string.notes_deletion_unsuccessful, Toast.LENGTH_SHORT);
|
||||
}
|
||||
}
|
||||
|
||||
/** Creates the full screen AddNoteDialog, which is a DialogFragment */
|
||||
private void showAddNoteDialog() {
|
||||
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
|
||||
@ -1243,7 +1154,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
showAddNoteDialog();
|
||||
} else {
|
||||
Toast.makeText(getApplicationContext(),
|
||||
getString(R.string.ext_storage_write_permission_denied_add_note), Toast.LENGTH_LONG);
|
||||
getString(R.string.ext_storage_write_permission_denied_add_note), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
}
|
||||
|
||||
break;
|
||||
@ -1287,9 +1199,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
private void initAllMenuItems() {
|
||||
try {
|
||||
menu.findItem(R.id.menu_fullscreen).setVisible(true);
|
||||
menu.findItem(R.id.menu_home).setVisible(true);
|
||||
menu.findItem(R.id.menu_random_article).setVisible(true);
|
||||
menu.findItem(R.id.menu_searchintext).setVisible(true);
|
||||
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search);
|
||||
searchItem.setVisible(true);
|
||||
@ -1588,13 +1498,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
private void toggleActionItemsConfig() {
|
||||
if (menu != null) {
|
||||
MenuItem random = menu.findItem(R.id.menu_random_article);
|
||||
MenuItem home = menu.findItem(R.id.menu_home);
|
||||
if (getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE) {
|
||||
random.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
home.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
} else {
|
||||
random.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||
home.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1753,9 +1660,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
if (tabSwitcherRoot.getVisibility() == View.VISIBLE) {
|
||||
menu.findItem(R.id.menu_search).setVisible(false);
|
||||
menu.findItem(R.id.menu_fullscreen).setVisible(false);
|
||||
menu.findItem(R.id.menu_home).setVisible(false);
|
||||
menu.findItem(R.id.menu_random_article).setVisible(false);
|
||||
menu.findItem(R.id.menu_searchintext).setVisible(false);
|
||||
menu.findItem(R.id.menu_read_aloud).setVisible(false);
|
||||
} else {
|
||||
menu.findItem(R.id.menu_search).setVisible(true);
|
||||
@ -1763,15 +1668,11 @@ public class MainActivity extends BaseActivity implements WebViewCallback,
|
||||
if (getCurrentWebView().getUrl() == null ||
|
||||
getCurrentWebView().getUrl().equals(HOME_URL)) {
|
||||
menu.findItem(R.id.menu_read_aloud).setVisible(false);
|
||||
menu.findItem(R.id.menu_home).setVisible(false);
|
||||
menu.findItem(R.id.menu_random_article).setVisible(false);
|
||||
menu.findItem(R.id.menu_searchintext).setVisible(false);
|
||||
menu.findItem(R.id.menu_host_books).setVisible(true);
|
||||
} else {
|
||||
menu.findItem(R.id.menu_read_aloud).setVisible(true);
|
||||
menu.findItem(R.id.menu_home).setVisible(true);
|
||||
menu.findItem(R.id.menu_random_article).setVisible(true);
|
||||
menu.findItem(R.id.menu_searchintext).setVisible(true);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -20,52 +20,13 @@
|
||||
package org.kiwix.kiwixmobile.settings;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceCategory;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.view.LayoutInflater;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Toast;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import eu.mhutti1.utils.storage.StorageDevice;
|
||||
import eu.mhutti1.utils.storage.StorageSelectDialog;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import javax.inject.Inject;
|
||||
import kotlin.Unit;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
import org.kiwix.kiwixmobile.base.BaseActivity;
|
||||
import org.kiwix.kiwixmobile.main.MainActivity;
|
||||
import org.kiwix.kiwixmobile.utils.LanguageUtils;
|
||||
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
|
||||
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_WEBVIEWS_LIST;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_AUTONIGHTMODE;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_CLEAR_ALL_HISTORY;
|
||||
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_VERSION;
|
||||
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.RESULT_HISTORY_CLEARED;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.RESULT_RESTART;
|
||||
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
||||
|
||||
public class KiwixSettingsActivity extends BaseActivity {
|
||||
|
||||
@ -107,253 +68,4 @@ public class KiwixSettingsActivity extends BaseActivity {
|
||||
|
||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||
}
|
||||
|
||||
public static class PrefsFragment extends PreferenceFragment implements
|
||||
SettingsContract.View,
|
||||
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
@Inject
|
||||
SettingsPresenter presenter;
|
||||
@Inject
|
||||
SharedPreferenceUtil sharedPreferenceUtil;
|
||||
@Inject
|
||||
StorageCalculator storageCalculator;
|
||||
|
||||
private SliderPreference mSlider;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
KiwixApplication.getApplicationComponent().inject(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
|
||||
boolean auto_night_mode = sharedPreferenceUtil.getPrefAutoNightMode();
|
||||
|
||||
if (auto_night_mode) {
|
||||
getPreferenceScreen().findPreference(PREF_NIGHTMODE).setEnabled(false);
|
||||
}
|
||||
|
||||
if (BuildConfig.ENFORCED_LANG.equals("")) {
|
||||
setUpLanguageChooser(PREF_LANG);
|
||||
} else {
|
||||
getPreferenceScreen().removePreference(findPreference("pref_language"));
|
||||
}
|
||||
|
||||
if (BuildConfig.IS_CUSTOM_APP) {
|
||||
PreferenceCategory notificationsCategory =
|
||||
(PreferenceCategory) findPreference("pref_extras");
|
||||
notificationsCategory.removePreference(findPreference("pref_wifi_only"));
|
||||
}
|
||||
|
||||
mSlider = (SliderPreference) findPreference(PREF_ZOOM);
|
||||
setSliderState();
|
||||
setStorage();
|
||||
setUpSettings();
|
||||
new LanguageUtils(getActivity()).changeFont(getActivity().getLayoutInflater(),
|
||||
sharedPreferenceUtil);
|
||||
}
|
||||
|
||||
private void setStorage() {
|
||||
if (BuildConfig.IS_CUSTOM_APP) {
|
||||
getPreferenceScreen().removePreference(findPreference("pref_storage"));
|
||||
} else {
|
||||
if (Environment.isExternalStorageEmulated()) {
|
||||
findPreference(PREF_STORAGE).setTitle(
|
||||
sharedPreferenceUtil.getPrefStorageTitle("Internal"));
|
||||
} else {
|
||||
findPreference(PREF_STORAGE).setTitle(
|
||||
sharedPreferenceUtil.getPrefStorageTitle("External"));
|
||||
}
|
||||
findPreference(PREF_STORAGE).setSummary(
|
||||
storageCalculator.calculateAvailableSpace(new File(sharedPreferenceUtil.getPrefStorage()))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSliderState() {
|
||||
boolean enabled = getPreferenceManager().getSharedPreferences().getBoolean(
|
||||
PREF_ZOOM_ENABLED, false);
|
||||
if (enabled) {
|
||||
mSlider.setEnabled(true);
|
||||
} else {
|
||||
mSlider.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
public void setUpSettings() {
|
||||
setAppVersionNumber();
|
||||
}
|
||||
|
||||
private void setUpLanguageChooser(String preferenceId) {
|
||||
ListPreference languagePref = (ListPreference) findPreference(preferenceId);
|
||||
String selectedLang = sharedPreferenceUtil.getPrefLanguage(Locale.getDefault().toString());
|
||||
List<String> languageCodeList = new LanguageUtils(getActivity()).getKeys();
|
||||
selectedLang = languageCodeList.contains(selectedLang) ? selectedLang : "en";
|
||||
String code[] = languageCodeList.toArray(new String[0]);
|
||||
String[] entries = new String[code.length];
|
||||
for (int index = 0; index < code.length; index++) {
|
||||
Locale locale = new Locale(code[index]);
|
||||
entries[index] =
|
||||
locale.getDisplayLanguage() + " (" + locale.getDisplayLanguage(locale) + ") ";
|
||||
}
|
||||
languagePref.setEntries(entries);
|
||||
languagePref.setEntryValues(code);
|
||||
languagePref.setDefaultValue(selectedLang);
|
||||
languagePref.setValue(selectedLang);
|
||||
languagePref.setTitle(new Locale(selectedLang).getDisplayLanguage());
|
||||
languagePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String languageCode = (String) newValue;
|
||||
LanguageUtils.handleLocaleChange(getActivity(), languageCode);
|
||||
preference.setTitle(new Locale(languageCode).getLanguage());
|
||||
sharedPreferenceUtil.putPrefLanguage(languageCode);
|
||||
restartActivity();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void restartActivity() {
|
||||
getActivity().setResult(RESULT_RESTART);
|
||||
getActivity().finish();
|
||||
getActivity().startActivity(new Intent(getActivity(), getActivity().getClass()));
|
||||
}
|
||||
|
||||
private void setAppVersionNumber() {
|
||||
EditTextPreference versionPref = (EditTextPreference) findPreference(PREF_VERSION);
|
||||
versionPref.setSummary(BuildConfig.VERSION_NAME + " Build: " + getVersionCode());
|
||||
}
|
||||
|
||||
private int getVersionCode() {
|
||||
try {
|
||||
return getActivity().getPackageManager()
|
||||
.getPackageInfo(getActivity().getPackageName(), 0).versionCode;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
|
||||
if (key.equals(PREF_ZOOM_ENABLED)) {
|
||||
setSliderState();
|
||||
}
|
||||
if (key.equals(PREF_ZOOM)) {
|
||||
mSlider.setSummary(mSlider.getSummary());
|
||||
((BaseAdapter) getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
if (key.equals(PREF_NIGHTMODE)) {
|
||||
MainActivity.refresh = true;
|
||||
MainActivity.nightMode = sharedPreferenceUtil.nightMode();
|
||||
getActivity().finish();
|
||||
startActivity(new Intent(getActivity(), KiwixSettingsActivity.class));
|
||||
getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
|
||||
}
|
||||
if (key.equals(PREF_WIFI_ONLY)) {
|
||||
MainActivity.wifiOnly = sharedPreferences.getBoolean(PREF_WIFI_ONLY, true);
|
||||
}
|
||||
if (key.equals(PREF_AUTONIGHTMODE)) {
|
||||
MainActivity.refresh = true;
|
||||
MainActivity.nightMode = sharedPreferenceUtil.nightMode();
|
||||
getActivity().finish();
|
||||
startActivity(new Intent(getActivity(), KiwixSettingsActivity.class));
|
||||
getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearAllHistoryDialog() {
|
||||
int warningResId;
|
||||
if (sharedPreferenceUtil.nightMode()) {
|
||||
warningResId = R.drawable.ic_warning_white;
|
||||
} else {
|
||||
warningResId = R.drawable.ic_warning_black;
|
||||
}
|
||||
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, (dialog, which) -> {
|
||||
presenter.clearHistory();
|
||||
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
|
||||
})
|
||||
.setIcon(warningResId)
|
||||
.show();
|
||||
}
|
||||
|
||||
public void openCredits() {
|
||||
WebView view =
|
||||
(WebView) LayoutInflater.from(getActivity()).inflate(R.layout.credits_webview, null);
|
||||
view.loadUrl("file:///android_asset/credits.html");
|
||||
if (sharedPreferenceUtil.nightMode()) {
|
||||
view.getSettings().setJavaScriptEnabled(true);
|
||||
view.setBackgroundColor(0);
|
||||
}
|
||||
new AlertDialog.Builder(getActivity(), dialogStyle())
|
||||
.setView(view)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
|
||||
Preference preference) {
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_CLEAR_ALL_HISTORY)) {
|
||||
clearAllHistoryDialog();
|
||||
}
|
||||
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_CREDITS)) {
|
||||
openCredits();
|
||||
}
|
||||
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_STORAGE)) {
|
||||
openFolderSelect();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void openFolderSelect() {
|
||||
StorageSelectDialog dialogFragment = new StorageSelectDialog();
|
||||
dialogFragment.setOnSelectListener(storageDevice -> {
|
||||
selectionCallback(storageDevice);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
dialogFragment.show(((AppCompatActivity) getActivity()).getSupportFragmentManager(),
|
||||
getResources().getString(R.string.pref_storage));
|
||||
}
|
||||
|
||||
private void selectionCallback(StorageDevice storageDevice) {
|
||||
findPreference(PREF_STORAGE).setSummary(
|
||||
storageCalculator.calculateAvailableSpace(storageDevice.getFile())
|
||||
);
|
||||
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));
|
||||
} else {
|
||||
findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.external_storage));
|
||||
sharedPreferenceUtil.putPrefStorageTitle(
|
||||
getResources().getString(R.string.external_storage));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,337 @@
|
||||
package org.kiwix.kiwixmobile.settings;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceCategory;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.view.LayoutInflater;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Toast;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import eu.mhutti1.utils.storage.StorageDevice;
|
||||
import eu.mhutti1.utils.storage.StorageSelectDialog;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import javax.inject.Inject;
|
||||
import kotlin.Unit;
|
||||
import kotlin.io.FilesKt;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
import org.kiwix.kiwixmobile.extensions.ContextExtensionsKt;
|
||||
import org.kiwix.kiwixmobile.main.AddNoteDialog;
|
||||
import org.kiwix.kiwixmobile.main.MainActivity;
|
||||
import org.kiwix.kiwixmobile.utils.LanguageUtils;
|
||||
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
|
||||
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.RESULT_RESTART;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_AUTONIGHTMODE;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_LANG;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_NIGHTMODE;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_STORAGE;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_WIFI_ONLY;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_ZOOM;
|
||||
import static org.kiwix.kiwixmobile.utils.SharedPreferenceUtil.PREF_ZOOM_ENABLED;
|
||||
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
||||
|
||||
public class PrefsFragment extends PreferenceFragment implements
|
||||
SettingsContract.View,
|
||||
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
public static final String PREF_VERSION = "pref_version";
|
||||
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";
|
||||
@Inject
|
||||
SettingsPresenter presenter;
|
||||
@Inject
|
||||
SharedPreferenceUtil sharedPreferenceUtil;
|
||||
@Inject
|
||||
StorageCalculator storageCalculator;
|
||||
|
||||
private SliderPreference mSlider;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
KiwixApplication.getApplicationComponent().inject(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
|
||||
boolean auto_night_mode = sharedPreferenceUtil.getPrefAutoNightMode();
|
||||
|
||||
if (auto_night_mode) {
|
||||
getPreferenceScreen().findPreference(PREF_NIGHTMODE).setEnabled(false);
|
||||
}
|
||||
|
||||
if (BuildConfig.ENFORCED_LANG.equals("")) {
|
||||
setUpLanguageChooser(PREF_LANG);
|
||||
} else {
|
||||
getPreferenceScreen().removePreference(findPreference("pref_language"));
|
||||
}
|
||||
|
||||
if (BuildConfig.IS_CUSTOM_APP) {
|
||||
PreferenceCategory notificationsCategory =
|
||||
(PreferenceCategory) findPreference("pref_extras");
|
||||
notificationsCategory.removePreference(findPreference("pref_wifi_only"));
|
||||
}
|
||||
|
||||
mSlider = (SliderPreference) findPreference(PREF_ZOOM);
|
||||
setSliderState();
|
||||
setStorage();
|
||||
setUpSettings();
|
||||
new LanguageUtils(getActivity()).changeFont(getActivity().getLayoutInflater(),
|
||||
sharedPreferenceUtil);
|
||||
}
|
||||
|
||||
private void setStorage() {
|
||||
if (BuildConfig.IS_CUSTOM_APP) {
|
||||
getPreferenceScreen().removePreference(findPreference("pref_storage"));
|
||||
} else {
|
||||
if (Environment.isExternalStorageEmulated()) {
|
||||
findPreference(PREF_STORAGE).setTitle(
|
||||
sharedPreferenceUtil.getPrefStorageTitle("Internal"));
|
||||
} else {
|
||||
findPreference(PREF_STORAGE).setTitle(
|
||||
sharedPreferenceUtil.getPrefStorageTitle("External"));
|
||||
}
|
||||
findPreference(PREF_STORAGE).setSummary(
|
||||
storageCalculator.calculateAvailableSpace(new File(sharedPreferenceUtil.getPrefStorage()))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSliderState() {
|
||||
boolean enabled = getPreferenceManager().getSharedPreferences().getBoolean(
|
||||
PREF_ZOOM_ENABLED, false);
|
||||
if (enabled) {
|
||||
mSlider.setEnabled(true);
|
||||
} else {
|
||||
mSlider.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
public void setUpSettings() {
|
||||
setAppVersionNumber();
|
||||
}
|
||||
|
||||
private void setUpLanguageChooser(String preferenceId) {
|
||||
ListPreference languagePref = (ListPreference) findPreference(preferenceId);
|
||||
String selectedLang = sharedPreferenceUtil.getPrefLanguage(Locale.getDefault().toString());
|
||||
List<String> languageCodeList = new LanguageUtils(getActivity()).getKeys();
|
||||
selectedLang = languageCodeList.contains(selectedLang) ? selectedLang : "en";
|
||||
String code[] = languageCodeList.toArray(new String[0]);
|
||||
String[] entries = new String[code.length];
|
||||
for (int index = 0; index < code.length; index++) {
|
||||
Locale locale = new Locale(code[index]);
|
||||
entries[index] =
|
||||
locale.getDisplayLanguage() + " (" + locale.getDisplayLanguage(locale) + ") ";
|
||||
}
|
||||
languagePref.setEntries(entries);
|
||||
languagePref.setEntryValues(code);
|
||||
languagePref.setDefaultValue(selectedLang);
|
||||
languagePref.setValue(selectedLang);
|
||||
languagePref.setTitle(new Locale(selectedLang).getDisplayLanguage());
|
||||
languagePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String languageCode = (String) newValue;
|
||||
LanguageUtils.handleLocaleChange(getActivity(), languageCode);
|
||||
preference.setTitle(new Locale(languageCode).getLanguage());
|
||||
sharedPreferenceUtil.putPrefLanguage(languageCode);
|
||||
restartActivity();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void restartActivity() {
|
||||
getActivity().setResult(RESULT_RESTART);
|
||||
getActivity().finish();
|
||||
getActivity().startActivity(new Intent(getActivity(), getActivity().getClass()));
|
||||
}
|
||||
|
||||
private void setAppVersionNumber() {
|
||||
EditTextPreference versionPref = (EditTextPreference) findPreference(PREF_VERSION);
|
||||
versionPref.setSummary(BuildConfig.VERSION_NAME + " Build: " + getVersionCode());
|
||||
}
|
||||
|
||||
private int getVersionCode() {
|
||||
try {
|
||||
return getActivity().getPackageManager()
|
||||
.getPackageInfo(getActivity().getPackageName(), 0).versionCode;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
|
||||
if (key.equals(PREF_ZOOM_ENABLED)) {
|
||||
setSliderState();
|
||||
}
|
||||
if (key.equals(PREF_ZOOM)) {
|
||||
mSlider.setSummary(mSlider.getSummary());
|
||||
((BaseAdapter) getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
if (key.equals(PREF_NIGHTMODE)) {
|
||||
MainActivity.refresh = true;
|
||||
MainActivity.nightMode = sharedPreferenceUtil.nightMode();
|
||||
getActivity().finish();
|
||||
startActivity(new Intent(getActivity(), KiwixSettingsActivity.class));
|
||||
getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
|
||||
}
|
||||
if (key.equals(PREF_WIFI_ONLY)) {
|
||||
MainActivity.wifiOnly = sharedPreferences.getBoolean(PREF_WIFI_ONLY, true);
|
||||
}
|
||||
if (key.equals(PREF_AUTONIGHTMODE)) {
|
||||
MainActivity.refresh = true;
|
||||
MainActivity.nightMode = sharedPreferenceUtil.nightMode();
|
||||
getActivity().finish();
|
||||
startActivity(new Intent(getActivity(), KiwixSettingsActivity.class));
|
||||
getActivity().overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearAllHistoryDialog() {
|
||||
int warningResId;
|
||||
if (sharedPreferenceUtil.nightMode()) {
|
||||
warningResId = R.drawable.ic_warning_white;
|
||||
} else {
|
||||
warningResId = R.drawable.ic_warning_black;
|
||||
}
|
||||
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, (dialog, which) -> {
|
||||
presenter.clearHistory();
|
||||
KiwixSettingsActivity.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
|
||||
})
|
||||
.setIcon(warningResId)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void showClearAllNotesDialog() {
|
||||
AlertDialog.Builder builder;
|
||||
if (sharedPreferenceUtil.nightMode()) { // Night Mode support
|
||||
builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_Dialog_Night);
|
||||
} else {
|
||||
builder = new AlertDialog.Builder(getActivity());
|
||||
}
|
||||
|
||||
builder.setMessage(R.string.delete_notes_confirmation_msg)
|
||||
.setNegativeButton(android.R.string.cancel, null) // Do nothing for 'Cancel' button
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> clearAllNotes())
|
||||
.show();
|
||||
}
|
||||
|
||||
private void clearAllNotes() {
|
||||
if (KiwixApplication.getInstance().isExternalStorageWritable()) {
|
||||
if (ContextCompat.checkSelfPermission(getActivity(),
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
ContextExtensionsKt.toast(getActivity(), R.string.ext_storage_permission_not_granted,
|
||||
Toast.LENGTH_LONG);
|
||||
return;
|
||||
}
|
||||
|
||||
if (FilesKt.deleteRecursively(new File(AddNoteDialog.NOTES_DIRECTORY))) {
|
||||
ContextExtensionsKt.toast(getActivity(), R.string.notes_deletion_successful,
|
||||
Toast.LENGTH_SHORT);
|
||||
return;
|
||||
}
|
||||
}
|
||||
ContextExtensionsKt.toast(getActivity(), R.string.notes_deletion_unsuccessful,
|
||||
Toast.LENGTH_SHORT);
|
||||
}
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
public void openCredits() {
|
||||
WebView view =
|
||||
(WebView) LayoutInflater.from(getActivity()).inflate(R.layout.credits_webview, null);
|
||||
view.loadUrl("file:///android_asset/credits.html");
|
||||
if (sharedPreferenceUtil.nightMode()) {
|
||||
view.getSettings().setJavaScriptEnabled(true);
|
||||
view.setBackgroundColor(0);
|
||||
}
|
||||
new AlertDialog.Builder(getActivity(), dialogStyle())
|
||||
.setView(view)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
|
||||
Preference preference) {
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_CLEAR_ALL_HISTORY)) {
|
||||
clearAllHistoryDialog();
|
||||
}
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_CLEAR_ALL_NOTES)) {
|
||||
showClearAllNotesDialog();
|
||||
}
|
||||
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_CREDITS)) {
|
||||
openCredits();
|
||||
}
|
||||
|
||||
if (preference.getKey().equalsIgnoreCase(PREF_STORAGE)) {
|
||||
openFolderSelect();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void openFolderSelect() {
|
||||
StorageSelectDialog dialogFragment = new StorageSelectDialog();
|
||||
dialogFragment.setOnSelectListener(this::onStorageDeviceSelected);
|
||||
dialogFragment.show(((AppCompatActivity) getActivity()).getSupportFragmentManager(),
|
||||
getResources().getString(R.string.pref_storage));
|
||||
}
|
||||
|
||||
private Unit onStorageDeviceSelected(StorageDevice storageDevice) {
|
||||
findPreference(PREF_STORAGE).setSummary(
|
||||
storageCalculator.calculateAvailableSpace(storageDevice.getFile())
|
||||
);
|
||||
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));
|
||||
} else {
|
||||
findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.external_storage));
|
||||
sharedPreferenceUtil.putPrefStorageTitle(
|
||||
getResources().getString(R.string.external_storage));
|
||||
}
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
}
|
@ -17,7 +17,6 @@
|
||||
*/
|
||||
package org.kiwix.kiwixmobile.utils;
|
||||
|
||||
import android.os.Environment;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
|
||||
public final class Constants {
|
||||
@ -48,47 +47,6 @@ public final class Constants {
|
||||
|
||||
public static final int RESULT_HISTORY_CLEARED = 1239;
|
||||
|
||||
// Prefs
|
||||
public static final String PREF_LANG = "pref_language_chooser";
|
||||
|
||||
public static final String PREF_VERSION = "pref_version";
|
||||
|
||||
public static final String PREF_CLEAR_ALL_HISTORY = "pref_clear_all_history";
|
||||
|
||||
public static final String PREF_CREDITS = "pref_credits";
|
||||
|
||||
public static final String PREF_STORAGE = "pref_select_folder";
|
||||
|
||||
public static final String PREF_AUTONIGHTMODE = "pref_auto_nightmode";
|
||||
|
||||
public static final String PREF_NIGHTMODE = "pref_nightmode";
|
||||
|
||||
public static final String PREF_WIFI_ONLY = "pref_wifi_only";
|
||||
|
||||
public static final String PREF_KIWIX_MOBILE = "kiwix-mobile";
|
||||
|
||||
public static final String PREF_BACK_TO_TOP = "pref_backtotop";
|
||||
|
||||
public static final String PREF_HIDE_TOOLBAR = "pref_hidetoolbar";
|
||||
|
||||
public static final String PREF_ZOOM = "pref_zoom_slider";
|
||||
|
||||
public static final String PREF_ZOOM_ENABLED = "pref_zoom_enabled";
|
||||
|
||||
public static final String PREF_FULLSCREEN = "pref_fullscreen";
|
||||
|
||||
public static final String PREF_NEW_TAB_BACKGROUND = "pref_newtab_background";
|
||||
|
||||
public static final String PREF_FULL_TEXT_SEARCH = "pref_full_text_search";
|
||||
|
||||
public static final String PREF_STORAGE_TITLE = "pref_selected_title";
|
||||
|
||||
public static final String PREF_EXTERNAL_LINK_POPUP = "pref_external_link_popup";
|
||||
|
||||
public static final String PREF_IS_FIRST_RUN = "isFirstRun";
|
||||
|
||||
public static final String PREF_SHOW_INTRO = "showIntro";
|
||||
|
||||
// Tags
|
||||
public static final String TAG_FILE_SEARCHED = "searchedarticle";
|
||||
|
||||
@ -137,8 +95,4 @@ public final class Constants {
|
||||
public static final String OLD_PROVIDER_DOMAIN = "org.kiwix.zim.base";
|
||||
|
||||
public static final String NEW_PROVIDER_DOMAIN = BuildConfig.APPLICATION_ID + ".zim.base";
|
||||
|
||||
// Path Constants
|
||||
public static final String NOTES_DIRECTORY =
|
||||
Environment.getExternalStorageDirectory() + "/Kiwix/Notes/";
|
||||
}
|
||||
|
@ -10,28 +10,30 @@ import java.util.Calendar;
|
||||
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_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_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_SHOW_INTRO;
|
||||
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 {
|
||||
// Prefs
|
||||
public static final String PREF_LANG = "pref_language_chooser";
|
||||
public static final String PREF_STORAGE = "pref_select_folder";
|
||||
public static final String PREF_AUTONIGHTMODE = "pref_auto_nightmode";
|
||||
public static final String PREF_NIGHTMODE = "pref_nightmode";
|
||||
public static final String PREF_WIFI_ONLY = "pref_wifi_only";
|
||||
public static final String PREF_KIWIX_MOBILE = "kiwix-mobile";
|
||||
public static final String PREF_BACK_TO_TOP = "pref_backtotop";
|
||||
public static final String PREF_HIDE_TOOLBAR = "pref_hidetoolbar";
|
||||
public static final String PREF_ZOOM = "pref_zoom_slider";
|
||||
public static final String PREF_ZOOM_ENABLED = "pref_zoom_enabled";
|
||||
public static final String PREF_FULLSCREEN = "pref_fullscreen";
|
||||
public static final String PREF_NEW_TAB_BACKGROUND = "pref_newtab_background";
|
||||
public static final String PREF_FULL_TEXT_SEARCH = "pref_full_text_search";
|
||||
public static final String PREF_STORAGE_TITLE = "pref_selected_title";
|
||||
public static final String PREF_EXTERNAL_LINK_POPUP = "pref_external_link_popup";
|
||||
public static final String PREF_IS_FIRST_RUN = "isFirstRun";
|
||||
public static final String PREF_SHOW_INTRO = "showIntro";
|
||||
private static final String PREF_SHOW_BOOKMARKS_CURRENT_BOOK = "show_bookmarks_current_book";
|
||||
private static final String PREF_SHOW_HISTORY_CURRENT_BOOK = "show_history_current_book";
|
||||
private SharedPreferences sharedPreferences;
|
||||
|
@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M15,16h4v2h-4zM15,8h7v2h-7zM15,12h6v2h-6zM3,18c0,1.1 0.9,2 2,2h6c1.1,0 2,-0.9 2,-2L13,8L3,8v10zM14,5h-3l-1,-1L6,4L5,5L2,5v2h12z" />
|
||||
</vector>
|
@ -1,11 +1,13 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_search"
|
||||
android:icon="@drawable/action_search"
|
||||
android:title="@string/menu_search"
|
||||
android:visible="false"
|
||||
tools:visible="true"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<item
|
||||
@ -14,23 +16,6 @@
|
||||
app:actionLayout="@layout/ic_tab_switcher"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_add_note"
|
||||
android:title="@string/add_note"
|
||||
android:icon="@drawable/ic_add_note"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_clear_notes"
|
||||
android:title="@string/clear_all_notes"
|
||||
android:icon="@drawable/ic_baseline_delete_sweep_24px"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_new_tab"
|
||||
android:title="@string/new_tab"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_bookmarks_list"
|
||||
android:title="@string/menu_bookmarks_list"
|
||||
@ -41,20 +26,6 @@
|
||||
android:title="@string/history"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_home"
|
||||
android:icon="@drawable/action_home"
|
||||
android:title="@string/menu_home"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_random_article"
|
||||
android:icon="@drawable/action_randomarticle"
|
||||
android:title="@string/menu_random_article"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_openfile"
|
||||
android:icon="@drawable/action_open_file"
|
||||
@ -62,21 +33,32 @@
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_searchintext"
|
||||
android:title="@string/menu_search_in_text"
|
||||
android:id="@+id/menu_add_note"
|
||||
android:icon="@drawable/ic_add_note"
|
||||
android:title="@string/note"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_random_article"
|
||||
android:icon="@drawable/action_randomarticle"
|
||||
android:title="@string/menu_random_article"
|
||||
android:visible="false"
|
||||
tools:visible="true"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_fullscreen"
|
||||
android:title="@string/menu_full_screen"
|
||||
android:visible="false"
|
||||
tools:visible="true"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_read_aloud"
|
||||
android:title="@string/menu_read_aloud"
|
||||
android:visible="false"
|
||||
tools:visible="true"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="kiwi">Kiwi</string>
|
||||
<string name="menu_zim_manager">Get Content</string>
|
||||
<string name="menu_zim_manager">Library</string>
|
||||
<string name="menu_help">Help</string>
|
||||
<string name="menu_home">Home</string>
|
||||
<string name="menu_settings">Settings</string>
|
||||
@ -237,7 +237,6 @@
|
||||
</string-array>
|
||||
<string name="bookmarks_from_current_book">Bookmarks from current book</string>
|
||||
<string name="search_bookmarks">Search bookmarks</string>
|
||||
<string name="new_tab">New tab</string>
|
||||
<string name="switch_tabs">Switch tabs</string>
|
||||
<string name="smiling_face">:D</string>
|
||||
<string name="close_all_tabs">Close all tabs</string>
|
||||
@ -260,7 +259,6 @@
|
||||
<string name="failed_unhandled_http_code">Unknown HTTP code received</string>
|
||||
<string name="failed_unknown">Unknown</string>
|
||||
<string name="failed_http_code">HTTP code %s</string>
|
||||
<string name="add_note">Add Note</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="note">Note</string>
|
||||
<string name="wiki_article_title">Wiki Article Title</string>
|
||||
@ -272,10 +270,8 @@
|
||||
<string name="note_share_error_file_missing">Note file doesn\'t exist</string>
|
||||
<string name="note_share_app_chooser_title">Share note file with:</string>
|
||||
<string name="confirmation_alert_dialog_message">Discard unsaved changes?</string>
|
||||
<string name="clear_all_notes">Clear All Notes</string>
|
||||
<string name="delete_notes_confirmation_msg">Delete all notes?</string>
|
||||
<string name="ext_storage_permission_not_granted">Error: Storage permissions not granted</string>
|
||||
<string name="notes_deletion_none_found">No notes found for deletion</string>
|
||||
<string name="notes_deletion_successful">Entire notes folder deleted</string>
|
||||
<string name="notes_deletion_unsuccessful">Some files not deleted</string>
|
||||
<plurals name="books_count">
|
||||
@ -308,4 +304,6 @@
|
||||
<string name="performing_handshake">Performing handshake....</string>
|
||||
<string name="local_zim_sharing">Local ZIM Sharing</string>
|
||||
<string name="status">Status</string>
|
||||
<string name="pref_clear_all_notes_summary">Clears all notes on all articles</string>
|
||||
<string name="pref_clear_all_notes_title">Clear all notes</string>
|
||||
</resources>
|
||||
|
@ -101,6 +101,16 @@
|
||||
android:summary="@string/pref_clear_all_history_summary"
|
||||
android:title="@string/pref_clear_all_history_title" />
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:key="pref_notes"
|
||||
android:title="Notes">
|
||||
|
||||
<Preference
|
||||
android:key="pref_clear_all_notes"
|
||||
android:summary="@string/pref_clear_all_notes_summary"
|
||||
android:title="@string/pref_clear_all_notes_title" />
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:key="pref_language"
|
||||
|
Loading…
x
Reference in New Issue
Block a user