/* * Copyright (C) 2015 Jorge Ruesga * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ruesga.android.wallpapers.photophase.preferences; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; import android.util.Log; import com.ruesga.android.wallpapers.photophase.R; import com.ruesga.android.wallpapers.photophase.preferences.PreferencesProvider.Preferences; /** * A fragment class with all the media settings */ public class MediaPreferenceFragment extends PreferenceFragment { private static final String TAG = "MediaPreferenceFragment"; private static final boolean DEBUG = false; private ListPreference mRefreshInterval; private SwitchPreference mRememberLastMediaShown; private boolean mMediaIntevalChangedFlag; private boolean mEmptyTextureQueueFlag; private final OnPreferenceChangeListener mOnChangeListener = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(final Preference preference, Object newValue) { String key = preference.getKey(); if (DEBUG) Log.d(TAG, "Preference changed: " + key + "=" + newValue); if (key.compareTo("ui_media_refresh_interval") == 0) { setRefreshIntervalSummary(Integer.valueOf(String.valueOf(newValue))); mMediaIntevalChangedFlag = true; } else if (key.compareTo("ui_media_random") == 0) { mEmptyTextureQueueFlag = true; boolean random = (Boolean) newValue; if (random) { mRememberLastMediaShown.setChecked(false); } mRememberLastMediaShown.setEnabled(!random); } return true; } }; /** * {@inheritDoc} */ @Override public void onDestroy() { super.onDestroy(); // Notify that the settings was changed Intent intent = new Intent(PreferencesProvider.ACTION_SETTINGS_CHANGED); if (mMediaIntevalChangedFlag) { intent.putExtra(PreferencesProvider.EXTRA_FLAG_MEDIA_INTERVAL_CHANGED, Boolean.TRUE); } if (mEmptyTextureQueueFlag) { intent.putExtra(PreferencesProvider.EXTRA_FLAG_EMPTY_TEXTURE_QUEUE, Boolean.TRUE); } getActivity().sendBroadcast(intent); } /** * {@inheritDoc} */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Change the preference manager getPreferenceManager().setSharedPreferencesName(PreferencesProvider.PREFERENCES_FILE); getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE); // Add the preferences addPreferencesFromResource(R.xml.preferences_media); mRefreshInterval = (ListPreference)findPreference("ui_media_refresh_interval"); setRefreshIntervalSummary(Preferences.Media.getRefreshFrequency(getActivity())); mRefreshInterval.setOnPreferenceChangeListener(mOnChangeListener); Preference refreshNow = findPreference("ui_media_refresh_now"); refreshNow.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { // Request a refresh of the media data Intent intent = new Intent(PreferencesProvider.ACTION_SETTINGS_CHANGED); intent.putExtra(PreferencesProvider.EXTRA_FLAG_MEDIA_RELOAD, Boolean.TRUE); intent.putExtra(PreferencesProvider.EXTRA_ACTION_MEDIA_USER_RELOAD_REQUEST, Boolean.TRUE); getActivity().sendBroadcast(intent); return true; } }); SwitchPreference random = (SwitchPreference) findPreference("ui_media_random"); random.setOnPreferenceChangeListener(mOnChangeListener); mRememberLastMediaShown = (SwitchPreference) findPreference("ui_media_remember_last_media_show"); boolean isRandom = Preferences.Media.isRandomSequence(getActivity()); if (isRandom) { mRememberLastMediaShown.setChecked(false); } mRememberLastMediaShown.setEnabled(!isRandom); } /** * Method that set the refresh interval summary * * @param interval The interval value */ private void setRefreshIntervalSummary(int interval) { String v = String.valueOf(interval); String[] labels = getResources().getStringArray(R.array.refresh_intervals_labels); String[] values = getResources().getStringArray(R.array.refresh_intervals_values); int cc = values.length; for (int i = 0; i < cc; i++) { if (values[i].compareTo(String.valueOf(v)) == 0) { v = labels[i]; break; } } String summary = (interval == 0) ? getString(R.string.pref_media_settings_refresh_interval_disable) : getString(R.string.pref_media_settings_refresh_interval_summary, v); mRefreshInterval.setSummary(summary); } }