From 034b71ec92a3d7e8b5b8a89f010a5747532eb0da Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 17 Mar 2015 14:13:39 -0500 Subject: [PATCH] ReminderPreferences extends PreferenceActivity --- .../astrid/gtasks/GtasksPreferences.java | 2 +- .../astrid/reminders/ReminderPreferences.java | 82 +++++++++++-------- .../utility/TodorooPreferenceActivity.java | 13 +-- .../org/tasks/injection/ActivityModule.java | 2 - 4 files changed, 50 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java b/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java index 825b87882..615a78c61 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java +++ b/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java @@ -247,7 +247,7 @@ public class GtasksPreferences extends TodorooPreferenceActivity { public void onClick(DialogInterface dialog, int which) { logOut(); - initializePreference(getPreferenceScreen()); + finish(); } }, null ); diff --git a/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java b/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java index 91688f49b..5f7e390ec 100644 --- a/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java +++ b/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java @@ -5,67 +5,81 @@ */ package com.todoroo.astrid.reminders; -import android.content.res.Resources; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; import android.preference.PreferenceScreen; -import com.todoroo.astrid.utility.TodorooPreferenceActivity; - import org.joda.time.DateTime; import org.tasks.R; +import org.tasks.ui.TimePreference; import java.text.DateFormat; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; -public class ReminderPreferences extends TodorooPreferenceActivity { +public class ReminderPreferences extends PreferenceActivity { @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); + if (atLeastLollipop()) { - Resources resources = getResources(); PreferenceScreen preferenceScreen = getPreferenceScreen(); - preferenceScreen.removePreference(findPreference(resources.getString(R.string.p_rmd_enable_quiet))); - preferenceScreen.removePreference(findPreference(resources.getString(R.string.p_rmd_quietStart))); - preferenceScreen.removePreference(findPreference(resources.getString(R.string.p_rmd_quietEnd))); + preferenceScreen.removePreference(findPreference(getString(R.string.p_rmd_enable_quiet))); + preferenceScreen.removePreference(findPreference(getString(R.string.p_rmd_quietStart))); + preferenceScreen.removePreference(findPreference(getString(R.string.p_rmd_quietEnd))); + } else { + initializeTimePreference(R.string.p_rmd_quietStart, R.string.rmd_EPr_quiet_hours_start_desc); + initializeTimePreference(R.string.p_rmd_quietEnd, R.string.rmd_EPr_quiet_hours_end_desc); } } - @Override - public int getPreferenceResource() { - return R.xml.preferences_reminders; + private void initializeTimePreference(int key, final int 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()); } - @Override - public void updatePreferences(Preference preference, Object value) { - Resources r = getResources(); + private void setPreference(Preference preference, final int summaryRes, int millisOfDay) { + String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate()); + preference.setSummary(getString(summaryRes, setting)); + } - if(r.getString(R.string.p_rmd_quietStart).equals(preference.getKey())) { - int millisOfDay = (int) value; - String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate()); - preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_start_desc, setting)); - } else if(r.getString(R.string.p_rmd_quietEnd).equals(preference.getKey())) { - int millisOfDay = (int) value; - String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate()); - preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_end_desc, setting)); - } else if(r.getString(R.string.p_rmd_time).equals(preference.getKey())) { - int millisOfDay = (int) value; - String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate()); - preference.setSummary(r.getString(R.string.rmd_EPr_rmd_time_desc, setting)); - } else if(r.getString(R.string.p_rmd_ringtone).equals(preference.getKey())) { - if ("".equals(value)) { - preference.setSummary(R.string.silent); - } else { - Ringtone ringtone = RingtoneManager.getRingtone(this, Uri.parse((String) (value == null ? "" : value))); - String ringtoneTitle = ringtone.getTitle(this); - preference.setSummary(ringtoneTitle); + 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)); } } diff --git a/src/main/java/com/todoroo/astrid/utility/TodorooPreferenceActivity.java b/src/main/java/com/todoroo/astrid/utility/TodorooPreferenceActivity.java index f72df5b06..284f36430 100644 --- a/src/main/java/com/todoroo/astrid/utility/TodorooPreferenceActivity.java +++ b/src/main/java/com/todoroo/astrid/utility/TodorooPreferenceActivity.java @@ -14,17 +14,13 @@ package com.todoroo.astrid.utility; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceGroup; -import android.preference.PreferenceManager; -import android.preference.RingtonePreference; import org.tasks.injection.InjectingPreferenceActivity; import org.tasks.preferences.Preferences; -import org.tasks.ui.TimePreference; import javax.inject.Inject; @@ -63,7 +59,7 @@ abstract public class TodorooPreferenceActivity extends InjectingPreferenceActiv return preferences.getPrefs(); } - protected void initializePreference(Preference preference) { + private void initializePreference(Preference preference) { if(preference instanceof PreferenceGroup) { PreferenceGroup group = (PreferenceGroup)preference; for(int i = 0; i < group.getPreferenceCount(); i++) { @@ -76,13 +72,6 @@ abstract public class TodorooPreferenceActivity extends InjectingPreferenceActiv value = ((ListPreference) preference).getValue(); } else if(preference instanceof CheckBoxPreference) { value = ((CheckBoxPreference) preference).isChecked(); - } else if(preference instanceof EditTextPreference) { - value = ((EditTextPreference) preference).getText(); - } else if(preference instanceof RingtonePreference) { - value = PreferenceManager.getDefaultSharedPreferences(preference.getContext()) - .getString(preference.getKey(), null); - } else if(preference instanceof TimePreference) { - value = ((TimePreference) preference).getMillisOfDay(); } updatePreferences(preference, value); diff --git a/src/main/java/org/tasks/injection/ActivityModule.java b/src/main/java/org/tasks/injection/ActivityModule.java index 700fd9fd9..3c29a4482 100644 --- a/src/main/java/org/tasks/injection/ActivityModule.java +++ b/src/main/java/org/tasks/injection/ActivityModule.java @@ -20,7 +20,6 @@ import com.todoroo.astrid.gcal.CalendarAlarmListCreator; import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; -import com.todoroo.astrid.reminders.ReminderPreferences; import com.todoroo.astrid.tags.DeleteTagActivity; import com.todoroo.astrid.tags.RenameTagActivity; import com.todoroo.astrid.widget.WidgetConfigActivity; @@ -59,7 +58,6 @@ import dagger.Provides; FilterShortcutActivity.class, BeastModePreferences.class, DefaultsPreferences.class, - ReminderPreferences.class, AACRecordingActivity.class, SnoozeActivity.class, MiscellaneousPreferences.class,