package com.nf2m.fragment; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.ListPreference; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.preference.PreferenceFragment; import com.nf2m.R; import com.nf2m.activity.TarMediaPlayerActivity; import com.nf2m.preferences.Preferences; import com.nf2m.service.MediaPlayerService; public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { static final String KEY_PREF_SHUFFLE = "shuffle"; static final String KEY_PREF_REPEAT = "repeat"; private static final String KEY_PREF_TIMER = "timer"; private static final String TIMER_NONE = "0"; private static final String TIMER_30M = "1800000"; private static final String TIMER_1H = "3600000"; private static final String TIMER_2H = "7200000"; private static final String TIMER_3H = "10800000"; private static final String TIMER_4H = "14400000"; private SharedPreferences defaultSharedPreferences; private Preferences preferences; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((TarMediaPlayerActivity) getActivity()).setActionBarTitle(getString(R.string.title_settings)); addPreferencesFromResource(R.xml.settings); initListener(); initPreferences(); setDefaultsValue(); setSummary(); } private void setDefaultsValue() { ListPreference repeat = (ListPreference) findPreference(KEY_PREF_REPEAT); if (repeat.getValue() == null) { repeat.setValue(getString(R.string.title_repeat_off)); } ListPreference timer = (ListPreference) findPreference(KEY_PREF_TIMER); if (timer.getValue() == null) { timer.setValue(TIMER_NONE); findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_none) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_NONE)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_none) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_30M)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_30m) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_1H)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_1h) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_2H)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_2h) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_3H)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_3h) + ")"); } else if (timer.getValue().equalsIgnoreCase(TIMER_4H)) { findPreference(KEY_PREF_TIMER).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_4h) + ")"); } } private void setSummary() { if (NowPlayingFragment.shuffle_state.equalsIgnoreCase(NowPlayingFragment.SHUFFLE_ON)) { findPreference(KEY_PREF_SHUFFLE).setSummary(getString(R.string.title_on)); } else { findPreference(KEY_PREF_SHUFFLE).setSummary(getString(R.string.title_off)); } //repeat set summary if (NowPlayingFragment.repeat_state.equalsIgnoreCase(NowPlayingFragment.REPEAT_OFF)) { findPreference(KEY_PREF_REPEAT).setSummary(getString(R.string.title_off)); } else if (NowPlayingFragment.repeat_state.equalsIgnoreCase(NowPlayingFragment.REPEAT_ALL)) { findPreference(KEY_PREF_REPEAT).setSummary(getString(R.string.title_all)); } else if (NowPlayingFragment.repeat_state.equalsIgnoreCase(NowPlayingFragment.REPEAT_ONE)) { findPreference(KEY_PREF_REPEAT).setSummary(getString(R.string.title_one)); } } private void initPreferences() { preferences = Preferences.newInstance(getContext()); } private void initListener() { defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); defaultSharedPreferences.registerOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(@NonNull SharedPreferences sharedPreferences, @NonNull String key) { if (key.equalsIgnoreCase(KEY_PREF_SHUFFLE)) { setShuffle(sharedPreferences, key); } else if (key.equalsIgnoreCase(KEY_PREF_REPEAT)) { setRepeat(sharedPreferences, key); } else if (key.equalsIgnoreCase(KEY_PREF_TIMER)) { setTimer(sharedPreferences, key); } } private void setTimer(@NonNull SharedPreferences sharedPreferences, String key) { Intent intent = new Intent(MediaPlayerService.ACTION_TIMER); String string = sharedPreferences.getString(key, TIMER_NONE); if (string.equalsIgnoreCase(TIMER_NONE)) { preferences.setPrefTimer(Integer.parseInt(TIMER_NONE)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_none) + ")"); getActivity().sendBroadcast(intent); } else if (string.equalsIgnoreCase(TIMER_30M)) { preferences.setPrefTimer(Integer.parseInt(TIMER_30M)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_30m) + ")"); getActivity().sendBroadcast(intent); } else if (string.equalsIgnoreCase(TIMER_1H)) { preferences.setPrefTimer(Integer.parseInt(TIMER_1H)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_1h) + ")"); getActivity().sendBroadcast(intent); } else if (string.equalsIgnoreCase(TIMER_2H)) { preferences.setPrefTimer(Integer.parseInt(TIMER_2H)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_2h) + ")"); getActivity().sendBroadcast(intent); } else if (string.equalsIgnoreCase(TIMER_3H)) { preferences.setPrefTimer(Integer.parseInt(TIMER_3H)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_3h) + ")"); getActivity().sendBroadcast(intent); } else if (string.equalsIgnoreCase(TIMER_4H)) { preferences.setPrefTimer(Integer.parseInt(TIMER_4H)); findPreference(key).setSummary(getString(R.string.title_timer_summary) + "(" + getString(R.string.title_timer_4h) + ")"); getActivity().sendBroadcast(intent); } } private void setRepeat(@NonNull SharedPreferences sharedPreferences, String key) { String string = sharedPreferences.getString(key, getString(R.string.title_repeat_off)); if (string.equalsIgnoreCase(getString(R.string.title_repeat_off))) { preferences.setPrefRepeat(NowPlayingFragment.REPEAT_OFF); findPreference(key).setSummary(getString(R.string.title_off)); } else if (string.equalsIgnoreCase(getString(R.string.title_repeat_all))) { preferences.setPrefRepeat(NowPlayingFragment.REPEAT_ALL); findPreference(key).setSummary(getString(R.string.title_all)); } else if (string.equalsIgnoreCase(getString(R.string.title_repeat_one))) { preferences.setPrefRepeat(NowPlayingFragment.REPEAT_ONE); findPreference(key).setSummary(getString(R.string.title_one)); } } private void setShuffle(@NonNull SharedPreferences sharedPreferences, String key) { if (sharedPreferences.getBoolean(key, false)) { preferences.setPrefShuffle(NowPlayingFragment.SHUFFLE_ON); findPreference(key).setSummary(getString(R.string.title_on)); } else { preferences.setPrefShuffle(NowPlayingFragment.SHUFFLE_OFF); findPreference(key).setSummary(getString(R.string.title_off)); } } @Override public void onDestroy() { defaultSharedPreferences.unregisterOnSharedPreferenceChangeListener(this); super.onDestroy(); } }