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
|
|
|
}
|
|
|
|
}
|