package com.jinsen.multifinder;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.RingtonePreference;
import android.util.Log;
import com.jinsen.multifinder.Events.AlarmMessage;
import com.jinsen.multifinder.Events.TimeMessage;
import de.greenrobot.event.EventBus;
/**
* Created by Jinsen on 15/6/3.
*/
public class SettingFragment extends PreferenceFragment {
private static final String TAG = SettingFragment.class.getSimpleName();
//Preference Keys
public static final String KEY_ALARM = "pref_key_alarm";
public static final String KEY_TIME = "pref_key_time";
private RingtonePreference pRingtone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting_pref);
pRingtone = ((RingtonePreference) findPreference(KEY_ALARM));
String cacheRingtone = PreferenceUtil.getString(getActivity(), KEY_ALARM);
pRingtone.setSummary(cacheRingtone);
pRingtone.setOnPreferenceChangeListener(new SetupChangeListener());
}
@Override
public void onStop() {
super.onStop();
}
public class SetupChangeListener implements Preference.OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference instanceof RingtonePreference) {
RingtonePreference temp = ((RingtonePreference) preference);
Uri uri = Uri.parse(newValue.toString());
PreferenceUtil.putString(getActivity(), KEY_ALARM, newValue.toString());
Log.d(TAG, "url= " + uri.toString());
EventBus.getDefault().post(new AlarmMessage(newValue.toString()));
return true;
}else if (preference instanceof ListPreference) {
ListPreference temp = ((ListPreference) preference);
// preferences may be changed auto-ly after modified, these code dont work
PreferenceUtil.putString(getActivity(), KEY_TIME, newValue.toString());
int realtime = ((Integer.valueOf(newValue.toString())) + 1 ) * 5;
temp.setSummary(realtime + "");
Log.d(TAG, "time= " + newValue.toString());
EventBus.getDefault().post(new TimeMessage(realtime));
return true;
}
return false;
}
}
private String getRingtoneName(Uri uri) {
Ringtone r = RingtoneManager.getRingtone(this.getActivity(), uri);
return r.getTitle(this.getActivity());
}
}