com.money.manager.ex.settings.LookFeelPreferenceFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.money.manager.ex.settings.LookFeelPreferenceFragment.java

Source

/*
 * 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.os.Bundle;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceManager;
import android.support.v7.preference.SwitchPreferenceCompat;

import com.money.manager.ex.core.DefinedDateRange;
import com.money.manager.ex.core.DefinedDateRangeName;
import com.money.manager.ex.core.DefinedDateRanges;
import com.money.manager.ex.R;
import com.money.manager.ex.home.MainActivity;
import com.money.manager.ex.view.RobotoView;

import org.apache.commons.lang3.math.NumberUtils;

import timber.log.Timber;

/**
 * Look & feel preferences.
 */
public class LookFeelPreferenceFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preferences_look_and_feel);

        PreferenceManager.getDefaultSharedPreferences(getActivity());

        final LookAndFeelSettings settings = new AppSettings(getActivity()).getLookAndFeelSettings();

        // Show Open accounts

        final CheckBoxPreference chkAccountOpen = (CheckBoxPreference) findPreference(
                getString(R.string.pref_account_open_visible));
        if (chkAccountOpen != null) {
            // set initial value
            Boolean showOpenAccounts = settings.getViewOpenAccounts();
            chkAccountOpen.setChecked(showOpenAccounts);

            chkAccountOpen.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    settings.setViewOpenAccounts((Boolean) newValue);
                    MainActivity.setRestartActivity(true);
                    return true;
                }
            });
        }

        // Show Favourite accounts

        final CheckBoxPreference chkAccountFav = (CheckBoxPreference) findPreference(
                getString(R.string.pref_account_fav_visible));
        if (chkAccountFav != null) {
            // set initial value
            Boolean showOpenAccounts = settings.getViewFavouriteAccounts();
            chkAccountFav.setChecked(showOpenAccounts);

            chkAccountFav.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    settings.setViewFavouriteAccounts((Boolean) newValue);
                    MainActivity.setRestartActivity(true);
                    return true;
                }
            });
        }

        // Hide reconciled amounts setting.

        final SwitchPreferenceCompat chkHideReconciled = (SwitchPreferenceCompat) findPreference(
                getString(R.string.pref_transaction_hide_reconciled_amounts));

        Preference.OnPreferenceChangeListener listener = new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                MainActivity.setRestartActivity(true);
                return true;
            }
        };
        // Set the main activity to restart on change of any of the following preferences.
        chkHideReconciled.setOnPreferenceChangeListener(listener);

        // Show Transactions, period

        final ListPreference lstShow = (ListPreference) findPreference(getString(R.string.pref_show_transaction));
        if (lstShow != null) {
            // set the available values for selection.

            final DefinedDateRanges ranges = new DefinedDateRanges(getActivity());
            lstShow.setEntries(ranges.getLocalizedNames());
            lstShow.setEntryValues(ranges.getValueNames());

            // Show current value.

            final DefinedDateRangeName rangeName = new AppSettings(getActivity()).getLookAndFeelSettings()
                    .getShowTransactions();
            DefinedDateRange range = ranges.get(rangeName);

            lstShow.setSummary(range.getLocalizedName(getActivity()));
            lstShow.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    String newRangeKey = newValue.toString();
                    DefinedDateRange range = ranges.getByName(newRangeKey);

                    lstShow.setSummary(range.getLocalizedName(getActivity()));
                    return true;
                }
            });
        }

        // Font type

        final ListPreference lstFont = (ListPreference) findPreference(
                getString(PreferenceConstants.PREF_APPLICATION_FONT));
        if (lstFont != null) {
            lstFont.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    if (newValue instanceof String && NumberUtils.isNumber(newValue.toString())) {
                        Timber.d("Preference set: font = %s", newValue.toString());

                        RobotoView.setUserFont(Integer.parseInt(newValue.toString()));
                        return true;
                    }
                    return false;
                }
            });
        }

        // Font size

        final ListPreference lstFontSize = (ListPreference) findPreference(
                getString(PreferenceConstants.PREF_APPLICATION_FONT_SIZE));
        if (lstFontSize != null) {
            lstFontSize.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    Timber.d("Preference set: font = %s", newValue.toString());

                    RobotoView.setUserFontSize(getActivity().getApplicationContext(), newValue.toString());
                    return true;
                }
            });
        }
    }

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        //        Timber.d("creating");
    }
}