/* * Copyright (C) 2014 AChep@xda <artemchep@gmail.com> * * 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 2 * 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package com.achep.acdisplay.ui.fragments.settings; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceGroup; import android.support.annotation.NonNull; import com.achep.acdisplay.Config; import com.achep.acdisplay.R; import com.achep.base.content.ConfigBase; import com.achep.base.utils.DateUtils; import com.achep.base.utils.ResUtils; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import static com.achep.base.Build.DEBUG; /** * Created by Artem on 09.02.14. */ public class MoreSettings extends BaseSettings implements ConfigBase.OnConfigChangedListener, Preference.OnPreferenceClickListener { private final ListPreferenceSetter mListPreferenceCornerActionSetter = new ListPreferenceSetter() { @Override public void updateSummary(@NonNull Preference preference, @NonNull Config.Option option, @NonNull Object value) { int pos = (int) value; ListPreference cbp = (ListPreference) preference; cbp.setSummary(cbp.getEntries()[pos]); } }; private Preference mInactiveHoursPreference; private Preference mTimeoutPreference; private Preference mDataRestoreDefaultsPreference; private Preference mDataBackupPreference; private Preference mDataRestorePreference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings_more_fragment); syncPreference(Config.KEY_PRIVACY, new MultiSelectListPreferenceSetter(getActivity(), 0, R.string.settings_privacy_mode_disabled)); syncPreference(Config.KEY_ONLY_WHILE_CHARGING); syncPreference(Config.KEY_FEEL_SCREEN_OFF_AFTER_LAST_NOTIFY); syncPreference(Config.KEY_DOUBLE_TAP_TO_SLEEP); syncPreference(Config.KEY_MEDIA_WIDGET); syncPreference(Config.KEY_FEEL_WIDGET_PINNABLE); syncPreference(Config.KEY_FEEL_WIDGET_READABLE); syncPreference(Config.KEY_CORNER_ACTION_LEFT_TOP, mListPreferenceCornerActionSetter); syncPreference(Config.KEY_CORNER_ACTION_LEFT_BOTTOM, mListPreferenceCornerActionSetter); syncPreference(Config.KEY_CORNER_ACTION_RIGHT_TOP, mListPreferenceCornerActionSetter); syncPreference(Config.KEY_CORNER_ACTION_RIGHT_BOTTOM, mListPreferenceCornerActionSetter); mInactiveHoursPreference = findPreference("inactive_hours"); mTimeoutPreference = findPreference("timeout"); // Back-up & restore mDataRestoreDefaultsPreference = findPreference("data_restore_defaults"); mDataBackupPreference = findPreference("data_backup"); mDataRestorePreference = findPreference("data_restore"); mDataRestoreDefaultsPreference.setOnPreferenceClickListener(this); mDataBackupPreference.setOnPreferenceClickListener(this); mDataRestorePreference.setOnPreferenceClickListener(this); if (!DEBUG) { PreferenceGroup pg = (PreferenceGroup) findPreference("data_category"); pg.removePreference(mDataBackupPreference); pg.removePreference(mDataRestorePreference); } } @Override public void onResume() { super.onResume(); Config config = getConfig(); config.registerListener(this); updateInactiveHoursSummary(config); updateTimeoutSummary(config); } @Override public void onPause() { super.onPause(); Config config = getConfig(); config.unregisterListener(this); } @Override public void onConfigChanged(@NonNull ConfigBase configBase, @NonNull String key, @NonNull Object value) { Config config = (Config) configBase; switch (key) { case Config.KEY_INACTIVE_TIME_ENABLED: case Config.KEY_INACTIVE_TIME_FROM: case Config.KEY_INACTIVE_TIME_TO: updateInactiveHoursSummary(config); break; case Config.KEY_TIMEOUT_NORMAL: case Config.KEY_TIMEOUT_SHORT: updateTimeoutSummary(config); break; } } private void updateInactiveHoursSummary(Config config) { if (config.isInactiveTimeEnabled()) { int from = config.getInactiveTimeFrom(); int to = config.getInactiveTimeTo(); mInactiveHoursPreference.setSummary(ResUtils.getString(getResources(), R.string.settings_inactive_hours_enabled, DateUtils.formatTime(getActivity(), from / 60, from % 60), DateUtils.formatTime(getActivity(), to / 60, to % 60))); } else { mInactiveHoursPreference.setSummary(getString(R.string.settings_inactive_hours_disabled)); } } private void updateTimeoutSummary(Config config) { mTimeoutPreference.setSummary(ResUtils.getString(getResources(), R.string.settings_timeout_summary, Float.toString(config.getTimeoutNormal() / 1000f), Float.toString(config.getTimeoutShort() / 1000f))); } /** * {@inheritDoc} */ @Override public boolean onPreferenceClick(Preference preference) { if (preference == mDataRestoreDefaultsPreference) { new MaterialDialog.Builder(getActivity()) .title(R.string.settings_restore_defaults_warning_title) .content(R.string.settings_restore_defaults_warning_message) .positiveText(android.R.string.ok) .negativeText(android.R.string.cancel) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { Config.getInstance().reset(getActivity()); } }) .build() .show(); } else if (preference == mDataBackupPreference) { // TODO: Back up all the things. } else if (preference == mDataRestorePreference) { // TODO: Restore all the things. } else return false; return true; } }