package org.softeg.slartus.forpdaplus.prefs;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import org.softeg.slartus.forpdacommon.ExtPreferences;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.R;
/*
* Created by Артём on 01.05.14.
*/
public class ForumTopicsPreferencesFragment extends PreferenceFragment {
@Override
public void onActivityCreated(android.os.Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
assert getActivity() != null;
Bundle args = getArguments();
SharedPreferences preferences = App.getInstance().getPreferences();
if (args != null) {
String listName = args.getString("listname");
assert listName != null;
assert !"".equals(listName);
setKey(preferences, "sort_key", listName);
setKey(preferences, "sort_by", listName);
setKey(preferences, "prune_day", listName);
setKey(preferences, "topicfilter", listName);
setKey(preferences, "unread_in_top", listName);
}
PreferenceManager.setDefaultValues(getActivity(), R.xml.forum_topics_list_prefs, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.forum_topics_list_prefs);
}
@SuppressWarnings("ConstantConditions")
private void setKey(SharedPreferences preferences, String prefsKey, String listName) {
Preference pref = findPreference(prefsKey);
String newKey = listName + "." + prefsKey;
Object defValue = ExtPreferences.getPreferenceDefaultValue(pref);
if (pref instanceof ListPreference) {
if (preferences.getString(newKey, null) == null) {
String defSValue = defValue == null ? null : defValue.toString();
preferences.edit().putString(newKey, defSValue).apply();
}
} else if (pref instanceof CheckBoxPreference) {
Boolean defSValue = Boolean.parseBoolean(defValue.toString());
((CheckBoxPreference) pref).setChecked(preferences.getBoolean(newKey, defSValue));
}
pref.setKey(newKey);
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
getActivity().setResult(ForumTopicsPreferencesActivity.RESULT_OK);
return true;
}
});
}
}