package com.kuxhausen.huemore;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import com.kuxhausen.huemore.persistence.Definitions.InternalArguments;
public class SettingsFragment extends PreferenceFragmentCompat implements
SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.settings);
if (Helpers.isDebugVersion()) {
Context ctx = getPreferenceManager().getContext();
Preference preference = new Preference(ctx);
preference.setKey(getString(R.string.preference_developer_options));
preference.setTitle(R.string.developer_options_title);
this.getPreferenceScreen().addPreference(preference);
}
// Hide the doze option if the phone doesn't support doze.
if (!DisableDozeDialogFragment.systemSupportsDoze()) {
Preference ignoreDoze = getPreferenceScreen().findPreference(getString(R.string.preference_ignore_doze));
if (ignoreDoze != null) {
ignoreDoze.setVisible(false);
}
}
showSelectedLanguage();
Preference buildVersion = getPreferenceScreen().findPreference(
getString(R.string.preference_build_version));
buildVersion.setSummary(BuildConfig.VERSION_NAME);
}
public void showSelectedLanguage() {
String
userSelectedLangCode =
getPreferenceManager().getSharedPreferences()
.getString(getString(R.string.preference_user_selected_locale_lang), null);
String[] langCodes = getResources().getStringArray(R.array.language_codes);
String[] langNames = getResources().getStringArray(R.array.language_names);
Preference userSelectedLang = getPreferenceScreen().findPreference(
getString(R.string.preference_user_selected_locale_lang));
for (int i = 0; i < langCodes.length; i++) {
if (langCodes[i].equals(userSelectedLangCode)) {
userSelectedLang.setSummary(langNames[i]);
return;
}
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
String key = preference.getKey();
if (getString(R.string.preference_social_links).equals(key)) {
CommunityDialogFragment communities = new CommunityDialogFragment();
communities.show(getActivity().getSupportFragmentManager(),
InternalArguments.FRAG_MANAGER_DIALOG_TAG);
return true;
} else if (getString(R.string.preference_developer_options).equals(key)) {
DebugDialogFragment debug = new DebugDialogFragment();
debug.show(getActivity().getSupportFragmentManager(),
InternalArguments.FRAG_MANAGER_DIALOG_TAG);
return true;
}
return super.onPreferenceTreeClick(preference);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (getString(R.string.preference_user_selected_locale_lang).equals(key)) {
//now reload the page with the new language (doesn't work on Gingerbread)
getActivity().recreate();
}
}
}