deltachat/src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java
2024-08-16 23:11:50 +02:00

94 lines
3.6 KiB
Java

package org.thoughtcrime.securesms.preferences;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import org.thoughtcrime.securesms.ApplicationPreferencesActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.Prefs;
import java.util.Arrays;
import java.util.Locale;
public class AppearancePreferenceFragment extends ListSummaryPreferenceFragment {
@Override
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
this.findPreference(Prefs.THEME_PREF).setOnPreferenceChangeListener(new ListSummaryListener());
initializeListSummary((ListPreference)findPreference(Prefs.THEME_PREF));
this.findPreference(Prefs.BACKGROUND_PREF).setOnPreferenceClickListener(new BackgroundClickListener());
this.findPreference(Prefs.MESSAGE_BODY_TEXT_SIZE_PREF).setOnPreferenceChangeListener(new ListSummaryListener());
initializeListSummary((ListPreference) findPreference(Prefs.MESSAGE_BODY_TEXT_SIZE_PREF));
}
@Override
public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences_appearance);
}
@Override
public void onStart() {
super.onStart();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener((ApplicationPreferencesActivity)getActivity());
}
@Override
public void onResume() {
super.onResume();
((ApplicationPreferencesActivity) getActivity()).getSupportActionBar().setTitle(R.string.pref_appearance);
String imagePath = Prefs.getBackgroundImagePath(getContext(), dcContext.getAccountId());
String backgroundString;
if(imagePath.isEmpty()){
backgroundString = this.getString(R.string.def);
}
else{
backgroundString = this.getString(R.string.custom);
}
this.findPreference(Prefs.BACKGROUND_PREF).setSummary(backgroundString);
}
@Override
public void onStop() {
super.onStop();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener((ApplicationPreferencesActivity) getActivity());
}
public static CharSequence getSummary(Context context) {
String[] themeEntries = context.getResources().getStringArray(R.array.pref_theme_entries);
String[] themeEntryValues = context.getResources().getStringArray(R.array.pref_theme_values);
int themeIndex = Arrays.asList(themeEntryValues).indexOf(Prefs.getTheme(context));
if (themeIndex == -1) themeIndex = 0;
String imagePath = Prefs.getBackgroundImagePath(context, DcHelper.getContext(context).getAccountId());
String backgroundString;
if(imagePath.isEmpty()){
backgroundString = context.getString(R.string.def);
}
else{
backgroundString = context.getString(R.string.custom);
}
// adding combined strings as "Read receipt: %1$s, Screen lock: %1$s, "
// makes things inflexible on changes and/or adds lot of additional works to programmers.
// however, if needed, we can refine this later.
return themeEntries[themeIndex] + ", "
+ context.getString(R.string.pref_background) + " " + backgroundString;
}
private class BackgroundClickListener implements Preference.OnPreferenceClickListener {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(getContext(), ChatBackgroundActivity.class);
getActivity().startActivity(intent);
return true;
}
}
}