You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tasks/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java

75 lines
3.0 KiB
Java

/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.reminders;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import org.joda.time.DateTime;
import org.tasks.R;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.ui.TimePreference;
import java.text.DateFormat;
public class ReminderPreferences extends InjectingPreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_reminders);
initializeRingtonePreference();
initializeTimePreference(R.string.p_rmd_time, R.string.rmd_EPr_rmd_time_desc);
initializeTimePreference(R.string.p_rmd_quietStart, null);
initializeTimePreference(R.string.p_rmd_quietEnd, null);
}
private void initializeTimePreference(int key, final Integer summaryRes) {
Preference preference = findPreference(getString(key));
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
setPreference(preference, summaryRes, (int) newValue);
return true;
}
});
setPreference(preference, summaryRes, ((TimePreference) preference).getMillisOfDay());
}
private void setPreference(Preference preference, final Integer summaryRes, int millisOfDay) {
String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate());
preference.setSummary(summaryRes == null ? setting : getString(summaryRes, setting));
}
private void initializeRingtonePreference() {
Preference.OnPreferenceChangeListener ringtoneChangedListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
if ("".equals(value)) {
preference.setSummary(R.string.silent);
} else {
Ringtone ringtone = RingtoneManager.getRingtone(ReminderPreferences.this, Uri.parse((String) (value == null ? "" : value)));
String ringtoneTitle = ringtone.getTitle(ReminderPreferences.this);
preference.setSummary(ringtoneTitle);
}
return true;
}
};
String ringtoneKey = getString(R.string.p_rmd_ringtone);
Preference ringtonePreference = findPreference(ringtoneKey);
ringtonePreference.setOnPreferenceChangeListener(ringtoneChangedListener);
ringtoneChangedListener.onPreferenceChange(ringtonePreference, PreferenceManager.getDefaultSharedPreferences(this)
.getString(ringtoneKey, null));
}
}