/* * Kontalk Android client * Copyright (C) 2017 Kontalk Devteam <devteam@kontalk.org> * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kontalk.ui.prefs; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceManager; import android.view.MenuItem; import org.kontalk.BuildConfig; import org.kontalk.Kontalk; import org.kontalk.R; /** * Preferences overview fragment. * @author Daniele Ricci * @author Andrea Cappelli */ public final class PreferencesFragment extends RootPreferenceFragment { static final String TAG = Kontalk.TAG; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // upgrade from old version: pref_text_enter becomes string SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); try { prefs.getString("pref_text_enter", null); } catch (ClassCastException e) { // legacy mode prefs.edit() .putString("pref_text_enter", prefs.getBoolean("pref_text_enter", false) ? "newline" : "default") .commit(); } addPreferencesFromResource(R.xml.preferences); // remove reporting preference in debug builds if (BuildConfig.DEBUG) { Preference prefReporting = findPreference("pref_reporting"); if (prefReporting != null) getPreferenceScreen().removePreference(prefReporting); } } @Override public void onResume() { super.onResume(); ((PreferencesActivity) getActivity()).getSupportActionBar() .setTitle(R.string.menu_settings); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // don't use up navigation here getActivity().finish(); return true; } return super.onOptionsItemSelected(item); } @Override protected void setupPreferences() { setupPreferences("pref_network_settings", R.xml.preferences_network); setupPreferences("pref_messaging_settings", R.xml.preferences_messaging); setupPreferences("pref_appearance_settings", R.xml.preferences_appearance); setupPreferences("pref_media_settings", R.xml.preferences_media); setupPreferences("pref_notification_settings", R.xml.preferences_notification); setupPreferences("pref_maintenance_settings", R.xml.preferences_maintenance); } private void setupPreferences(String pref, final int xml) { final Preference preference = findPreference(pref); preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { invokeCallback(xml); return true; } }); } }