mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-12 17:08:59 -04:00
Fix app language preference for RTL languages.
Use radio button to show language preference.
This commit is contained in:
parent
149088ee0f
commit
8386a22ce5
@ -26,6 +26,7 @@ import android.content.SharedPreferences;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
|
import android.preference.ListPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
@ -46,12 +47,12 @@ import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
|||||||
import org.kiwix.kiwixmobile.database.RecentSearchDao;
|
import org.kiwix.kiwixmobile.database.RecentSearchDao;
|
||||||
import org.kiwix.kiwixmobile.utils.LanguageUtils;
|
import org.kiwix.kiwixmobile.utils.LanguageUtils;
|
||||||
import org.kiwix.kiwixmobile.utils.StyleUtils;
|
import org.kiwix.kiwixmobile.utils.StyleUtils;
|
||||||
import org.kiwix.kiwixmobile.views.LanguageSelectDialog;
|
|
||||||
import org.kiwix.kiwixmobile.views.SliderPreference;
|
import org.kiwix.kiwixmobile.views.SliderPreference;
|
||||||
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryUtils;
|
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import eu.mhutti1.utils.storage.StorageDevice;
|
import eu.mhutti1.utils.storage.StorageDevice;
|
||||||
@ -75,8 +76,6 @@ import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
|||||||
|
|
||||||
public class KiwixSettingsActivity extends AppCompatActivity {
|
public class KiwixSettingsActivity extends AppCompatActivity {
|
||||||
|
|
||||||
public static String zimFile;
|
|
||||||
|
|
||||||
public static boolean allHistoryCleared = false;
|
public static boolean allHistoryCleared = false;
|
||||||
|
|
||||||
private static final int DAWN_HOUR = 6;
|
private static final int DAWN_HOUR = 6;
|
||||||
@ -85,7 +84,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
if(nightMode(PreferenceManager.getDefaultSharedPreferences(this))){
|
if (nightMode(PreferenceManager.getDefaultSharedPreferences(this))) {
|
||||||
setTheme(R.style.AppTheme_Night);
|
setTheme(R.style.AppTheme_Night);
|
||||||
}
|
}
|
||||||
getWindow().setWindowAnimations(R.style.WindowAnimationTransition);
|
getWindow().setWindowAnimations(R.style.WindowAnimationTransition);
|
||||||
@ -124,13 +123,13 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean nightMode(SharedPreferences preferences){
|
public static boolean nightMode(SharedPreferences preferences) {
|
||||||
boolean autoNightMode = preferences.getBoolean(PREF_AUTONIGHTMODE, false);
|
boolean autoNightMode = preferences.getBoolean(PREF_AUTONIGHTMODE, false);
|
||||||
if(autoNightMode){
|
if (autoNightMode) {
|
||||||
Calendar cal = Calendar.getInstance();
|
Calendar cal = Calendar.getInstance();
|
||||||
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
||||||
return hour < DAWN_HOUR || hour > DUSK_HOUR;
|
return hour < DAWN_HOUR || hour > DUSK_HOUR;
|
||||||
} else{
|
} else {
|
||||||
return preferences.getBoolean(PREF_NIGHTMODE, false);
|
return preferences.getBoolean(PREF_NIGHTMODE, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -147,24 +146,24 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
addPreferencesFromResource(R.xml.preferences);
|
addPreferencesFromResource(R.xml.preferences);
|
||||||
|
|
||||||
boolean auto_night_mode = PreferenceManager.getDefaultSharedPreferences(getActivity())
|
boolean auto_night_mode = PreferenceManager.getDefaultSharedPreferences(getActivity())
|
||||||
.getBoolean(PREF_AUTONIGHTMODE, false);
|
.getBoolean(PREF_AUTONIGHTMODE, false);
|
||||||
|
|
||||||
if(auto_night_mode){
|
if (auto_night_mode) {
|
||||||
getPreferenceScreen().findPreference(PREF_NIGHTMODE).setEnabled(false);
|
getPreferenceScreen().findPreference(PREF_NIGHTMODE).setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BuildConfig.ENFORCED_LANG.equals("")) {
|
if (BuildConfig.ENFORCED_LANG.equals("")) {
|
||||||
setUpLanguageChooser(PREF_LANG);
|
setUpLanguageChooser(PREF_LANG);
|
||||||
} else {
|
} else {
|
||||||
getPreferenceScreen().removePreference(getPrefrence("pref_language"));
|
getPreferenceScreen().removePreference(findPreference("pref_language"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BuildConfig.IS_CUSTOM_APP) {
|
if (BuildConfig.IS_CUSTOM_APP) {
|
||||||
PreferenceCategory notificationsCategory = (PreferenceCategory) findPreference("pref_extras");
|
PreferenceCategory notificationsCategory = (PreferenceCategory) findPreference("pref_extras");
|
||||||
notificationsCategory.removePreference(getPrefrence("pref_wifi_only"));
|
notificationsCategory.removePreference(findPreference("pref_wifi_only"));
|
||||||
}
|
}
|
||||||
|
|
||||||
mSlider = (SliderPreference) getPrefrence(PREF_ZOOM);
|
mSlider = (SliderPreference) findPreference(PREF_ZOOM);
|
||||||
setSliderState();
|
setSliderState();
|
||||||
setStorage();
|
setStorage();
|
||||||
setUpSettings();
|
setUpSettings();
|
||||||
@ -177,18 +176,18 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
recentSearchDao.deleteSearchHistory();
|
recentSearchDao.deleteSearchHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setStorage(){
|
private void setStorage() {
|
||||||
if (BuildConfig.IS_CUSTOM_APP) {
|
if (BuildConfig.IS_CUSTOM_APP) {
|
||||||
getPreferenceScreen().removePreference(getPrefrence("pref_storage"));
|
getPreferenceScreen().removePreference(findPreference("pref_storage"));
|
||||||
} else {
|
} else {
|
||||||
if (Environment.isExternalStorageEmulated()) {
|
if (Environment.isExternalStorageEmulated()) {
|
||||||
getPrefrence(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
findPreference(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
||||||
.getString(PREF_STORAGE_TITLE, "Internal"));
|
.getString(PREF_STORAGE_TITLE, "Internal"));
|
||||||
} else {
|
} else {
|
||||||
getPrefrence(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
findPreference(PREF_STORAGE).setTitle(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
||||||
.getString(PREF_STORAGE_TITLE, "External"));
|
.getString(PREF_STORAGE_TITLE, "External"));
|
||||||
}
|
}
|
||||||
getPrefrence(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman( new File(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
findPreference(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman(new File(PreferenceManager.getDefaultSharedPreferences(getActivity())
|
||||||
.getString(PREF_STORAGE, Environment.getExternalStorageDirectory().getPath())).getFreeSpace()));
|
.getString(PREF_STORAGE, Environment.getExternalStorageDirectory().getPath())).getFreeSpace()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -222,11 +221,32 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setUpLanguageChooser(String preferenceId) {
|
private void setUpLanguageChooser(String preferenceId) {
|
||||||
Preference languagePref = getPrefrence(preferenceId);
|
ListPreference languagePref = (ListPreference) findPreference(preferenceId);
|
||||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
String selectedLang = sharedPreferences.getString(PREF_LANG, Locale.getDefault().toString());
|
String selectedLang = sharedPreferences.getString(PREF_LANG, Locale.getDefault().getLanguage());
|
||||||
|
List<String> languageCodeList = new LanguageUtils(getActivity()).getKeys();
|
||||||
|
selectedLang = languageCodeList.contains(selectedLang) ? selectedLang : "en";
|
||||||
|
String code[] = languageCodeList.toArray(new String[languageCodeList.size()]);
|
||||||
|
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.setTitle(new Locale(selectedLang).getDisplayLanguage());
|
||||||
|
languagePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
|
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();
|
||||||
|
restartActivity();
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restartActivity() {
|
private void restartActivity() {
|
||||||
@ -243,10 +263,6 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
versionPref.setSummary(version);
|
versionPref.setSummary(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Preference getPrefrence(String preferenceId) {
|
|
||||||
return PrefsFragment.this.findPreference(preferenceId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
|
||||||
@ -266,7 +282,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
if (key.equals(PREF_WIFI_ONLY)) {
|
if (key.equals(PREF_WIFI_ONLY)) {
|
||||||
KiwixMobileActivity.wifiOnly = sharedPreferences.getBoolean(PREF_WIFI_ONLY, true);
|
KiwixMobileActivity.wifiOnly = sharedPreferences.getBoolean(PREF_WIFI_ONLY, true);
|
||||||
}
|
}
|
||||||
if(key.equals(PREF_AUTONIGHTMODE)){
|
if (key.equals(PREF_AUTONIGHTMODE)) {
|
||||||
KiwixMobileActivity.refresh = true;
|
KiwixMobileActivity.refresh = true;
|
||||||
KiwixMobileActivity.nightMode = nightMode(sharedPreferences);
|
KiwixMobileActivity.nightMode = nightMode(sharedPreferences);
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
@ -292,7 +308,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openCredits(){
|
public void openCredits() {
|
||||||
WebView view = (WebView) LayoutInflater.from(getActivity()).inflate(R.layout.credits_webview, null);
|
WebView view = (WebView) LayoutInflater.from(getActivity()).inflate(R.layout.credits_webview, null);
|
||||||
view.loadUrl("file:///android_asset/credits.html");
|
view.loadUrl("file:///android_asset/credits.html");
|
||||||
new AlertDialog.Builder(getActivity(), dialogStyle())
|
new AlertDialog.Builder(getActivity(), dialogStyle())
|
||||||
@ -313,34 +329,10 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
if (preference.getKey().equalsIgnoreCase(PREF_STORAGE))
|
if (preference.getKey().equalsIgnoreCase(PREF_STORAGE))
|
||||||
openFolderSelect();
|
openFolderSelect();
|
||||||
|
|
||||||
if (preference.getKey().equalsIgnoreCase(PREF_LANG))
|
|
||||||
openLanguageSelect();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openLanguageSelect() {
|
public void openFolderSelect() {
|
||||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
|
||||||
LanguageUtils languageUtils = new LanguageUtils(getActivity());
|
|
||||||
String selectedLang = sharedPreferences.getString(PREF_LANG, Locale.getDefault().toString());
|
|
||||||
|
|
||||||
new LanguageSelectDialog.Builder(getActivity(), dialogStyle())
|
|
||||||
.setLanguages(languageUtils.getLanguageList())
|
|
||||||
.setSingleSelect(true)
|
|
||||||
.setSelectedLanguage(selectedLang)
|
|
||||||
.setOnLanguageSelectedListener((languageCode -> {
|
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
|
||||||
editor.putString(PREF_LANG, languageCode);
|
|
||||||
editor.apply();
|
|
||||||
|
|
||||||
LanguageUtils.handleLocaleChange(getActivity(), languageCode);
|
|
||||||
// Request a restart when the user returns to the Activity, that called this Activity
|
|
||||||
restartActivity();
|
|
||||||
}))
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openFolderSelect(){
|
|
||||||
FragmentManager fm = getFragmentManager();
|
FragmentManager fm = getFragmentManager();
|
||||||
StorageSelectDialog dialogFragment = new StorageSelectDialog();
|
StorageSelectDialog dialogFragment = new StorageSelectDialog();
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
@ -358,7 +350,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
|
|||||||
findPreference(PREF_STORAGE).setSummary(storageDevice.getSize());
|
findPreference(PREF_STORAGE).setSummary(storageDevice.getSize());
|
||||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
editor.putString(PREF_STORAGE,storageDevice.getName());
|
editor.putString(PREF_STORAGE, storageDevice.getName());
|
||||||
if (storageDevice.isInternal()) {
|
if (storageDevice.isInternal()) {
|
||||||
findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.internal_storage));
|
findPreference(PREF_STORAGE).setTitle(getResources().getString(R.string.internal_storage));
|
||||||
editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.internal_storage));
|
editor.putString(PREF_STORAGE_TITLE, getResources().getString(R.string.internal_storage));
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<item name="android:textColorPrimary">@color/primary</item>
|
<item name="android:textColorPrimary">@color/primary</item>
|
||||||
<item name="android:textColorSecondary">@color/primary</item>
|
<item name="android:textColorSecondary">@color/primary</item>
|
||||||
<item name="android:textColorTertiary">@color/primary</item>
|
<item name="android:textColorTertiary">@color/primary</item>
|
||||||
<item name="colorControlNormal">@color/white</item>
|
<item name="colorControlNormal">@color/accent</item>
|
||||||
<item name="android:windowTranslucentStatus">true</item>
|
<item name="android:windowTranslucentStatus">true</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
@ -26,7 +26,7 @@
|
|||||||
<item name="android:textColorSecondary">@color/primary</item>
|
<item name="android:textColorSecondary">@color/primary</item>
|
||||||
<item name="android:textColorTertiary">@color/primary</item>
|
<item name="android:textColorTertiary">@color/primary</item>
|
||||||
<item name="android:windowTranslucentStatus">true</item>
|
<item name="android:windowTranslucentStatus">true</item>
|
||||||
<item name="colorControlNormal">@color/white</item>
|
<item name="colorControlNormal">@color/accent</item>
|
||||||
<item name="android:progressBackgroundTint">@color/greyed_out_selected</item>
|
<item name="android:progressBackgroundTint">@color/greyed_out_selected</item>
|
||||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
<item name="android:textColorPrimary">@color/primary</item>
|
<item name="android:textColorPrimary">@color/primary</item>
|
||||||
<item name="android:textColorSecondary">@color/primary</item>
|
<item name="android:textColorSecondary">@color/primary</item>
|
||||||
<item name="android:textColorTertiary">@color/primary</item>
|
<item name="android:textColorTertiary">@color/primary</item>
|
||||||
<item name="colorControlNormal">@color/white</item>
|
<item name="colorControlNormal">@color/accent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.Night" parent="AppTheme.Base">
|
<style name="AppTheme.Night" parent="AppTheme.Base">
|
||||||
@ -43,7 +43,7 @@
|
|||||||
<item name="android:textColorPrimary">@color/primary_light</item>
|
<item name="android:textColorPrimary">@color/primary_light</item>
|
||||||
<item name="android:textColorSecondary">@color/primary_light</item>
|
<item name="android:textColorSecondary">@color/primary_light</item>
|
||||||
<item name="android:textColorTertiary">@color/primary_light</item>
|
<item name="android:textColorTertiary">@color/primary_light</item>
|
||||||
<item name="colorControlNormal">@color/white</item>
|
<item name="colorControlNormal">@color/accent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="WindowAnimationTransition">
|
<style name="WindowAnimationTransition">
|
||||||
|
@ -109,7 +109,7 @@
|
|||||||
android:key="pref_language"
|
android:key="pref_language"
|
||||||
android:title="@string/pref_language_title">
|
android:title="@string/pref_language_title">
|
||||||
|
|
||||||
<Preference
|
<ListPreference
|
||||||
android:key="pref_language_chooser"
|
android:key="pref_language_chooser"
|
||||||
android:summary="@string/pref_language_chooser"
|
android:summary="@string/pref_language_chooser"
|
||||||
android:title="@string/pref_language_title" />
|
android:title="@string/pref_language_title" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user