new preference category

This commit is contained in:
Adith 2024-10-14 04:34:39 +11:00
parent b851712370
commit 4fc2bbd786
4 changed files with 56 additions and 1 deletions

View file

@ -8,6 +8,8 @@ public class Prefs {
public static final String UPLOADS_SHOWING = "uploadsshowing";
public static final String MANAGED_EXIF_TAGS = "managed_exif_tags";
public static final String DESCRIPTION_LANGUAGE = "languageDescription";
public static final String SECONDARY_LANGUAGE = "languageSecondary";
public static final String APP_UI_LANGUAGE = "appUiLanguage";
public static final String KEY_THEME_VALUE = "appThemePref";

View file

@ -79,6 +79,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
private ListPreference themeListPreference;
private Preference descriptionLanguageListPreference;
private Preference descriptionSecondaryLanguageListPreference;
private Preference appUiLanguageListPreference;
private String keyLanguageListPreference;
private TextView recentLanguagesTextView;
@ -152,6 +153,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
appUiLanguageListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
System.out.println("Clicked appui");
prepareAppLanguages(appUiLanguageListPreference.getKey());
return true;
}
@ -178,6 +180,28 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}
});
descriptionSecondaryLanguageListPreference = findPreference("descriptionSecondaryLanguagePref");
assert descriptionSecondaryLanguageListPreference != null;
keyLanguageListPreference = descriptionSecondaryLanguageListPreference.getKey();
languageCode = getCurrentLanguageCode(keyLanguageListPreference);
assert languageCode != null;
if (languageCode.equals("")) {
// If current language code is empty, means none selected by user yet so use phone local
descriptionSecondaryLanguageListPreference.setSummary(Locale.getDefault().getDisplayLanguage());
} else {
// If any language is selected by user previously, use it
Locale defLocale = createLocale(languageCode);
descriptionSecondaryLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
}
descriptionSecondaryLanguageListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
System.out.println("clickedseco");
prepareAppLanguages(descriptionSecondaryLanguageListPreference.getKey());
return true;
}
});
Preference betaTesterPreference = findPreference("becomeBetaTester");
betaTesterPreference.setOnPreferenceClickListener(preference -> {
Utils.handleWebUrl(getActivity(), Uri.parse(getResources().getString(R.string.beta_opt_in_link)));
@ -205,6 +229,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
findPreference("useAuthorName").setEnabled(false);
findPreference("displayNearbyCardView").setEnabled(false);
findPreference("descriptionDefaultLanguagePref").setEnabled(false);
findPreference("descriptionSecondaryLanguagePref").setEnabled(false);
findPreference("displayLocationPermissionForCardView").setEnabled(false);
findPreference(CampaignView.CAMPAIGNS_DEFAULT_PREFERENCE).setEnabled(false);
findPreference("managed_exif_tags").setEnabled(false);
@ -278,6 +303,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
*/
private void prepareAppLanguages(final String keyListPreference) {
System.out.println("gets to prepare app languages");
// Gets current language code from shared preferences
final String languageCode = getCurrentLanguageCode(keyListPreference);
final List<Language> recentLanguages = recentLanguagesDao.getRecentLanguages();
@ -300,7 +327,16 @@ public class SettingsFragment extends PreferenceFragmentCompat {
} else {
selectedLanguages.put(0, languageCode);
}
} else if (keyListPreference.equals("descriptionSecondaryLanguagePref")) {
assert languageCode != null;
if (languageCode.equals("")) {
selectedLanguages.put(0, Locale.getDefault().getLanguage());
} else {
selectedLanguages.put(0, languageCode);
}
}
LanguagesAdapter languagesAdapter = new LanguagesAdapter(
getActivity(),
@ -368,9 +404,12 @@ public class SettingsFragment extends PreferenceFragmentCompat {
getActivity().recreate();
final Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
}else {
}else if(keyListPreference.equals("descriptionDefaultLanguagePref")){
descriptionLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
}
else{
descriptionSecondaryLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
}
dialog.dismiss();
}
});
@ -496,6 +535,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
defaultKvStore.putString(Prefs.APP_UI_LANGUAGE, userSelectedValue);
} else if (preferenceKey.equals("descriptionDefaultLanguagePref")) {
defaultKvStore.putString(Prefs.DESCRIPTION_LANGUAGE, userSelectedValue);
} else if (preferenceKey.equals("descriptionSecondaryLanguagePref")) {
defaultKvStore.putString(Prefs.SECONDARY_LANGUAGE, userSelectedValue);
}
}
@ -511,6 +552,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
if (preferenceKey.equals("descriptionDefaultLanguagePref")) {
return defaultKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, "");
}
if (preferenceKey.equals("descriptionSecondaryLanguagePref")) {
return defaultKvStore.getString(Prefs.SECONDARY_LANGUAGE, "");
}
return null;
}

View file

@ -544,6 +544,7 @@ Upload your first media by tapping on the add button.</string>
<string name="dialog_box_text_nomination">Why should %1$s be deleted?</string>
<string name="review_is_uploaded_by">%1$s is uploaded by: %2$s</string>
<string name="default_description_language">Default description language</string>
<string name="secondary_description_language">Secondary Description Language</string>
<string name="delete_helper_show_deletion_title">Nominating for deletion</string>
<string name="delete_helper_show_deletion_title_success">Success</string>
<string name="delete_helper_show_deletion_message_if">Nominated %1$s for deletion.</string>

View file

@ -25,12 +25,20 @@
app:singleLineTitle="false"
android:title="@string/app_ui_language" />
<Preference
android:key="descriptionDefaultLanguagePref"
app:useSimpleSummaryProvider="true"
app:singleLineTitle="false"
android:title="@string/default_description_language" />
<!-- New Secondary Language Picker -->
<Preference
android:key="descriptionSecondaryLanguagePref"
app:useSimpleSummaryProvider="true"
app:singleLineTitle="false"
android:title="@string/secondary_description_language" />
<SwitchPreference
android:defaultValue="true"
android:key="displayNearbyCardView"