fedilab-Android-App/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java

174 lines
7.5 KiB
Java
Raw Normal View History

2019-11-06 14:09:38 +01:00
package app.fedilab.android.fragments;
2019-11-11 17:16:34 +01:00
import android.content.Context;
2019-11-06 15:52:39 +01:00
import android.content.DialogInterface;
import android.content.SharedPreferences;
2019-11-06 14:09:38 +01:00
import android.os.Bundle;
2019-11-12 19:08:05 +01:00
import android.util.Log;
2019-11-11 17:16:34 +01:00
2019-11-06 15:52:39 +01:00
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
2019-11-11 17:16:34 +01:00
import androidx.preference.ListPreference;
2019-11-06 15:52:39 +01:00
import androidx.preference.Preference;
2019-11-06 14:09:38 +01:00
import androidx.preference.PreferenceFragmentCompat;
2019-11-06 15:52:39 +01:00
import androidx.preference.PreferenceManager;
2019-11-12 19:36:18 +01:00
import androidx.preference.PreferenceScreen;
2019-11-06 14:09:38 +01:00
2019-11-10 19:20:44 +01:00
2019-11-11 17:16:34 +01:00
import com.jaredrummler.cyanea.Cyanea;
import com.jaredrummler.cyanea.prefs.CyaneaTheme;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
2019-11-10 19:20:44 +01:00
2019-11-06 14:09:38 +01:00
import app.fedilab.android.R;
2019-11-11 13:18:35 +01:00
import app.fedilab.android.activities.SettingsActivity;
2019-11-06 15:52:39 +01:00
import app.fedilab.android.helper.Helper;
2019-11-06 14:09:38 +01:00
2019-11-11 13:18:35 +01:00
public class ColorSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
2019-11-06 15:52:39 +01:00
2019-11-11 13:18:35 +01:00
2019-11-06 14:09:38 +01:00
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.fragment_settings_color);
2019-11-12 19:36:18 +01:00
createPref();
2019-11-12 19:44:56 +01:00
2019-11-12 19:36:18 +01:00
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SettingsActivity.needRestart = true;
if (key.equals("use_custom_theme")) {
createPref();
}
if( key.compareTo("pref_theme_picker") == 0){
String theme = sharedPreferences.getString("pref_theme_picker", null);
List<CyaneaTheme> list = CyaneaTheme.Companion.from(Objects.requireNonNull(getActivity()).getAssets(), "themes/cyanea_themes.json");
if( getActivity() != null && theme != null) {
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
int i = 0;
if( theme.compareTo("2") == 0 ) {
editor.putInt(Helper.SET_THEME, Helper.THEME_LIGHT);
}else if( theme.compareTo("1") == 0 ) {
editor.putInt(Helper.SET_THEME, Helper.THEME_DARK);
i = 1;
}else if( theme.compareTo("3") == 0 ) {
editor.putInt(Helper.SET_THEME, Helper.THEME_BLACK);
i = 2;
}
editor.commit();
list.get(i).apply(Cyanea.getInstance()).recreate(getActivity());
}
}
}
private void createPref(){
getPreferenceScreen().removeAll();
addPreferencesFromResource(R.xml.fragment_settings_color);
PreferenceScreen preferenceScreen = getPreferenceScreen();
2019-11-06 15:52:39 +01:00
FragmentActivity context = getActivity();
2019-11-11 15:19:02 +01:00
assert context != null;
2019-11-06 15:52:39 +01:00
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
2019-11-12 19:36:18 +01:00
ListPreference pref_theme_picker = (ListPreference) findPreference("pref_theme_picker");
Preference theme_link_color = findPreference("theme_link_color");
Preference theme_boost_header_color = findPreference("theme_boost_header_color");
Preference theme_statuses_color = findPreference("theme_statuses_color");
Preference theme_icons_color = findPreference("theme_icons_color");
Preference theme_text_color = findPreference("theme_text_color");
Preference theme_primary = findPreference("theme_primary");
Preference theme_accent = findPreference("theme_accent");
Preference pref_color_navigation_bar = findPreference("pref_color_navigation_bar");
Preference pref_color_background = findPreference("pref_color_background");
Preference reset_pref = findPreference("reset_pref");
if( !sharedpreferences.getBoolean("use_custom_theme", false)){
preferenceScreen.removePreference(theme_link_color);
preferenceScreen.removePreference(theme_boost_header_color);
preferenceScreen.removePreference(theme_statuses_color);
preferenceScreen.removePreference(theme_icons_color);
preferenceScreen.removePreference(theme_text_color);
preferenceScreen.removePreference(theme_primary);
preferenceScreen.removePreference(theme_accent);
preferenceScreen.removePreference(pref_color_navigation_bar);
preferenceScreen.removePreference(pref_color_background);
preferenceScreen.removePreference(reset_pref);
2019-11-11 13:18:35 +01:00
2019-11-12 19:36:18 +01:00
}
2019-11-11 17:16:34 +01:00
List<String> array = Arrays.asList(getResources().getStringArray(R.array.settings_theme));
CharSequence[] entries = array.toArray(new CharSequence[array.size()]);
CharSequence[] entryValues = new CharSequence[3];
final SharedPreferences sharedpref = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
int theme = sharedpref.getInt(Helper.SET_THEME, Helper.THEME_DARK);
entryValues[0] = String.valueOf(Helper.THEME_LIGHT);
entryValues[1] = String.valueOf(Helper.THEME_DARK);
entryValues[2] = String.valueOf(Helper.THEME_BLACK);
2019-11-12 19:36:18 +01:00
pref_theme_picker.setEntries(entries);
pref_theme_picker.setEntryValues(entryValues);
pref_theme_picker.setDefaultValue(String.valueOf(theme));
2019-11-11 17:16:34 +01:00
2019-11-12 19:36:18 +01:00
reset_pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
2019-11-06 15:52:39 +01:00
@Override
public boolean onPreferenceClick(Preference preference) {
2019-11-11 15:19:02 +01:00
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
2019-11-06 15:52:39 +01:00
dialogBuilder.setMessage(R.string.reset_color);
dialogBuilder.setPositiveButton(R.string.reset, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.remove("theme_boost_header_color");
editor.remove("theme_statuses_color");
editor.remove("theme_link_color");
2019-11-06 17:36:19 +01:00
editor.remove("theme_icons_color");
2019-11-10 19:20:44 +01:00
editor.remove("pref_color_background");
editor.remove("pref_color_navigation_bar");
editor.remove("theme_accent");
2019-11-11 15:19:02 +01:00
editor.remove("theme_text_color");
2019-11-10 19:20:44 +01:00
editor.remove("theme_primary");
2019-11-06 15:52:39 +01:00
editor.commit();
dialog.dismiss();
setPreferenceScreen(null);
addPreferencesFromResource(R.xml.fragment_settings_color);
2019-11-06 14:09:38 +01:00
2019-11-06 15:52:39 +01:00
}
});
2019-11-11 09:34:13 +01:00
dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
2019-11-06 15:52:39 +01:00
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.setCancelable(false);
alertDialog.show();
return true;
}
});
2019-11-06 14:09:38 +01:00
}
}