/* * Copyright (C) 2012-2016 The Android Money Manager Ex Project Team * * 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 com.money.manager.ex.settings; import android.content.Intent; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import com.afollestad.materialdialogs.MaterialDialog; import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.mikepenz.mmex_icon_font_typeface_library.MMXIconFont; import com.money.manager.ex.Constants; import com.money.manager.ex.DonateActivity; import com.money.manager.ex.R; import com.money.manager.ex.about.AboutActivity; import com.money.manager.ex.core.UIHelper; import timber.log.Timber; /** * Root preferences fragment. */ public class SettingsFragment extends PreferenceFragmentCompat { public static final int REQUEST_GENERAL_PREFERENCES = 1; private UIHelper uiHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); initGeneralSettings(); // Per-Database preferences Preference perDbPreference = findPreference(getString(R.string.pref_per_database)); if (perDbPreference != null) { perDbPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_settings_applications) .color(uiHelper.getSecondaryTextColor())); perDbPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(getActivity(), SettingsActivity.class); intent.putExtra(SettingsActivity.EXTRA_FRAGMENT, PerDatabaseFragment.class.getSimpleName()); startActivity(intent); return true; } }); } final Preference lookAndFeelPreference = findPreference(getString(PreferenceConstants.PREF_LOOK_FEEL)); if (lookAndFeelPreference != null) { lookAndFeelPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_wallpaper) .color(uiHelper.getSecondaryTextColor())); lookAndFeelPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), LookFeelSettingsActivity.class)); return true; } }); } final Preference behaviourPreference = findPreference(getString(R.string.pref_behaviour)); if (behaviourPreference != null) { behaviourPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_play_circle_outline) .color(uiHelper.getSecondaryTextColor())); behaviourPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), BehaviourSettingsActivity.class)); return true; } }); } final Preference investmentPreference = findPreference(getString(R.string.pref_investment)); if (investmentPreference != null) { investmentPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_trending_up) .color(uiHelper.getSecondaryTextColor())); investmentPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), InvestmentSettingsActivity.class)); return true; } }); } final Preference passcodePreference = findPreference(getString(PreferenceConstants.PREF_SECURITY)); if (passcodePreference != null) { passcodePreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_lock) .color(uiHelper.getSecondaryTextColor())); passcodePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), SecuritySettingsActivity.class)); return true; } }); } final Preference databasesPreference = findPreference(getString(PreferenceConstants.PREF_DATABASE)); if (databasesPreference != null) { databasesPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_storage) .color(uiHelper.getSecondaryTextColor())); databasesPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), DatabaseSettingsActivity.class)); return true; } }); } // Synchronisation final Preference syncPreference = findPreference(getString(R.string.pref_synchronization)); if (syncPreference != null) { syncPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_sync) .color(uiHelper.getSecondaryTextColor())); syncPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), SyncPreferencesActivity.class)); return true; } }); } //donate final Preference pDonate = findPreference(getString(PreferenceConstants.PREF_DONATE)); if (pDonate != null) { pDonate.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_card_giftcard) .color(uiHelper.getSecondaryTextColor())); pDonate.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), DonateActivity.class)); return false; } }); } final Preference infoPreference = findPreference(getString(PreferenceConstants.PREF_VERSION_NAME)); if (infoPreference != null) { infoPreference.setIcon(uiHelper.getIcon(GoogleMaterial.Icon.gmd_info_outline) .color(uiHelper.getSecondaryTextColor())); infoPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(getActivity(), AboutActivity.class)); return true; } }); } // manage intent if (getActivity().getIntent() != null) { if (!TextUtils.isEmpty(getActivity().getIntent() .getStringExtra(Constants.INTENT_REQUEST_PREFERENCES_SCREEN))) { try { PreferenceScreen screen = getPreferenceScreen(); Preference preference = findPreference(getActivity().getIntent() .getStringExtra(Constants.INTENT_REQUEST_PREFERENCES_SCREEN)); if (preference != null) { //screen.onItemClick(null, null, preference.getOrder(), 0); screen.performClick(); } } catch (Exception e) { Timber.e(e, "opening preferences screen"); } } } } @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Timber.d("creating preferences"); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_GENERAL_PREFERENCES: // always recreate activity when returning from general preferences, instead of // trying to figure out if something has changed. getActivity().recreate(); break; } } private UIHelper getUiHelper() { if (this.uiHelper == null) { uiHelper = new UIHelper(getActivity()); } return uiHelper; } private void initGeneralSettings() { // General Settings final Preference generalPreference = findPreference(getString(PreferenceConstants.PREF_GENERAL)); if (generalPreference == null) return; generalPreference.setIcon(getUiHelper().getIcon(GoogleMaterial.Icon.gmd_build) .color(uiHelper.getSecondaryTextColor())); generalPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(getActivity(), GeneralSettingsActivity.class); startActivityForResult(intent, REQUEST_GENERAL_PREFERENCES); return true; } }); } }