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();
}
}