From d083f81c3e2b40783904535e26dc50fa5b5b3658 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 7 Jul 2010 16:02:15 -0700 Subject: [PATCH] Renamed package, cleaned up preference libraries --- astrid/AndroidManifest.xml | 19 ++-- astrid/astrid.launch | 2 - .../andlib/widget/TodorooPreferences.java | 71 ++++++++++++++ .../{filters => core}/CoreFilterExposer.java | 2 +- .../astrid/{filters => core}/CorePlugin.java | 2 +- .../astrid/core/DefaultsPreferences.java | 62 ++++++++++++ .../ExtendedFilterExposer.java | 2 +- .../{filters => core}/ExtendedPlugin.java | 2 +- .../astrid/reminders/ReminderPreferences.java | 73 ++------------ astrid/res/xml/preferences.xml | 27 +---- astrid/res/xml/preferences_defaults.xml | 20 ++++ .../astrid/activity/EditPreferences.java | 98 ++----------------- .../astrid/activity/TaskListActivity.java | 2 +- 13 files changed, 195 insertions(+), 187 deletions(-) create mode 100644 astrid/common-src/com/todoroo/andlib/widget/TodorooPreferences.java rename astrid/plugin-src/com/todoroo/astrid/{filters => core}/CoreFilterExposer.java (98%) rename astrid/plugin-src/com/todoroo/astrid/{filters => core}/CorePlugin.java (95%) create mode 100644 astrid/plugin-src/com/todoroo/astrid/core/DefaultsPreferences.java rename astrid/plugin-src/com/todoroo/astrid/{filters => core}/ExtendedFilterExposer.java (99%) rename astrid/plugin-src/com/todoroo/astrid/{filters => core}/ExtendedPlugin.java (95%) create mode 100644 astrid/res/xml/preferences_defaults.xml diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 99881ae55..2f4b5790f 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -143,28 +143,35 @@ - - + + - + - + + + + + + + - + - + diff --git a/astrid/astrid.launch b/astrid/astrid.launch index e1e654a56..f9929e151 100644 --- a/astrid/astrid.launch +++ b/astrid/astrid.launch @@ -15,11 +15,9 @@ - - diff --git a/astrid/common-src/com/todoroo/andlib/widget/TodorooPreferences.java b/astrid/common-src/com/todoroo/andlib/widget/TodorooPreferences.java new file mode 100644 index 000000000..6c3101597 --- /dev/null +++ b/astrid/common-src/com/todoroo/andlib/widget/TodorooPreferences.java @@ -0,0 +1,71 @@ +/** + * See the file "LICENSE" for the full license governing this code. + */ +package com.todoroo.andlib.widget; + +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceGroup; +import android.preference.PreferenceScreen; +import android.preference.Preference.OnPreferenceChangeListener; + +/** + * Displays a preference screen for users to edit their preferences. Override + * updatePreferences to update the summary with preference values. + * + * @author Tim Su + * + */ +abstract public class TodorooPreferences extends PreferenceActivity { + + // --- abstract methods + + public abstract int getPreferenceResource(); + + public abstract void updatePreferences(Preference preference, Object value); + + // --- implementation + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(getPreferenceResource()); + + PreferenceScreen screen = getPreferenceScreen(); + initializePreference(screen); + + } + + private void initializePreference(Preference preference) { + if(preference instanceof PreferenceGroup) { + PreferenceGroup group = (PreferenceGroup)preference; + for(int i = 0; i < group.getPreferenceCount(); i++) { + initializePreference(group.getPreference(i)); + } + } else { + Object value = null; + if(preference instanceof ListPreference) + value = ((ListPreference)preference).getValue(); + else if(preference instanceof CheckBoxPreference) + value = ((CheckBoxPreference)preference).isChecked(); + else if(preference instanceof EditTextPreference) + value = ((EditTextPreference)preference).getText(); + + if(value != null) + updatePreferences(preference, value); + + preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference myPreference, Object newValue) { + updatePreferences(myPreference, newValue); + return true; + } + }); + } + } + +} \ No newline at end of file diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java similarity index 98% rename from astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java rename to astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java index 1be582bce..f03813585 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java @@ -1,7 +1,7 @@ /** * See the file "LICENSE" for the full license governing this code. */ -package com.todoroo.astrid.filters; +package com.todoroo.astrid.core; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java b/astrid/plugin-src/com/todoroo/astrid/core/CorePlugin.java similarity index 95% rename from astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java rename to astrid/plugin-src/com/todoroo/astrid/core/CorePlugin.java index 8981f42c6..3d3d8f757 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CorePlugin.java @@ -1,4 +1,4 @@ -package com.todoroo.astrid.filters; +package com.todoroo.astrid.core; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/astrid/plugin-src/com/todoroo/astrid/core/DefaultsPreferences.java b/astrid/plugin-src/com/todoroo/astrid/core/DefaultsPreferences.java new file mode 100644 index 000000000..a2239bc8d --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/core/DefaultsPreferences.java @@ -0,0 +1,62 @@ +/** + * See the file "LICENSE" for the full license governing this code. + */ +package com.todoroo.astrid.core; + +import android.content.SharedPreferences.Editor; +import android.content.res.Resources; +import android.preference.Preference; + +import com.timsu.astrid.R; +import com.todoroo.andlib.utility.AndroidUtilities; +import com.todoroo.andlib.widget.TodorooPreferences; +import com.todoroo.astrid.utility.Preferences; + +/** + * Displays the preference screen for users to edit their preferences + * + * @author Tim Su + * + */ +public class DefaultsPreferences extends TodorooPreferences { + + public int getPreferenceResource() { + return R.xml.preferences_defaults; + } + + /** + * + * @param resource if null, updates all resources + */ + public void updatePreferences(Preference preference, Object value) { + Resources r = getResources(); + + // defaults options + if(r.getString(R.string.p_default_urgency_key).equals(preference.getKey())) { + updateTaskListPreference(preference, value, r, R.array.EPr_default_urgency, + R.array.EPr_default_urgency_values, R.string.EPr_default_urgency_desc); + } else if(r.getString(R.string.p_default_importance_key).equals(preference.getKey())) { + updateTaskListPreference(preference, value, r, R.array.EPr_default_importance, + R.array.EPr_default_importance_values, R.string.EPr_default_importance_desc); + } else if(r.getString(R.string.p_default_hideUntil_key).equals(preference.getKey())) { + updateTaskListPreference(preference, value, r, R.array.EPr_default_hideUntil, + R.array.EPr_default_hideUntil_values, R.string.EPr_default_hideUntil_desc); + } + } + + private void updateTaskListPreference(Preference preference, Object value, + Resources r, int keyArray, int valueArray, int summaryResource) { + int index = AndroidUtilities.indexOf(r.getStringArray(valueArray), (String)value); + String setting = r.getStringArray(keyArray)[index]; + preference.setSummary(r.getString(summaryResource, + setting)); + + // if user changed the value, refresh task defaults + if(!value.equals(Preferences.getStringValue(preference.getKey()))) { + Editor editor = Preferences.getPrefs(this).edit(); + editor.putString(preference.getKey(), (String)value); + editor.commit(); + } + } + +} \ No newline at end of file diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java similarity index 99% rename from astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java rename to astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java index 74aacbb69..d5df1696c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedFilterExposer.java @@ -1,7 +1,7 @@ /** * See the file "LICENSE" for the full license governing this code. */ -package com.todoroo.astrid.filters; +package com.todoroo.astrid.core; import android.content.BroadcastReceiver; import android.content.ContentValues; diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java similarity index 95% rename from astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java rename to astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java index b942550ed..bdf2a030b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/ExtendedPlugin.java @@ -1,4 +1,4 @@ -package com.todoroo.astrid.filters; +package com.todoroo.astrid.core; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPreferences.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPreferences.java index e16abe301..6480421eb 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPreferences.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderPreferences.java @@ -4,17 +4,11 @@ package com.todoroo.astrid.reminders; import android.content.res.Resources; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; -import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceActivity; -import android.preference.PreferenceGroup; -import android.preference.PreferenceScreen; -import android.preference.Preference.OnPreferenceChangeListener; import com.timsu.astrid.R; +import com.todoroo.andlib.utility.AndroidUtilities; +import com.todoroo.andlib.widget.TodorooPreferences; /** * Displays the preference screen for users to edit their preferences @@ -22,72 +16,23 @@ import com.timsu.astrid.R; * @author Tim Su * */ -public class ReminderPreferences extends PreferenceActivity { +public class ReminderPreferences extends TodorooPreferences { @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - addPreferencesFromResource(R.xml.preferences_reminders); - - PreferenceScreen screen = getPreferenceScreen(); - initializePreference(screen); - - } - - private void initializePreference(Preference preference) { - if(preference instanceof PreferenceGroup) { - PreferenceGroup group = (PreferenceGroup)preference; - for(int i = 0; i < group.getPreferenceCount(); i++) { - initializePreference(group.getPreference(i)); - } - } else { - Object value = null; - if(preference instanceof ListPreference) - value = ((ListPreference)preference).getValue(); - else if(preference instanceof CheckBoxPreference) - value = ((CheckBoxPreference)preference).isChecked(); - else if(preference instanceof EditTextPreference) - value = ((EditTextPreference)preference).getText(); - - if(value != null) - updatePreferences(preference, value); - - preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - public boolean onPreferenceChange(Preference myPreference, Object newValue) { - updatePreferences(myPreference, newValue); - return true; - } - }); - } - } - - @Override - protected void onStart() { - super.onStart(); - } - - @Override - protected void onStop() { - super.onStop(); - } - - protected int valueToIndex(String value, String[] array) { - for(int i = 0; i < array.length; i++) - if(array[i].equals(value)) - return i; - return -1; + public int getPreferenceResource() { + return R.xml.preferences_reminders; } /** * * @param resource if null, updates all resources */ - protected void updatePreferences(Preference preference, Object value) { + @Override + public void updatePreferences(Preference preference, Object value) { Resources r = getResources(); if(r.getString(R.string.p_rmd_quietStart).equals(preference.getKey())) { - int index = valueToIndex((String)value, r.getStringArray(R.array.EPr_quiet_hours_start_values)); + int index = AndroidUtilities.indexOf(r.getStringArray(R.array.EPr_quiet_hours_start_values), (String)value); if(index == -1) preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_desc_none)); else { @@ -95,7 +40,7 @@ public class ReminderPreferences extends PreferenceActivity { preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_start_desc, duration)); } } else if(r.getString(R.string.p_rmd_quietEnd).equals(preference.getKey())) { - int index = valueToIndex((String)value, r.getStringArray(R.array.EPr_quiet_hours_end_values)); + int index = AndroidUtilities.indexOf(r.getStringArray(R.array.EPr_quiet_hours_end_values), (String)value); if(index == -1) preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_desc_none)); else { diff --git a/astrid/res/xml/preferences.xml b/astrid/res/xml/preferences.xml index e4934152f..d072b8120 100644 --- a/astrid/res/xml/preferences.xml +++ b/astrid/res/xml/preferences.xml @@ -1,25 +1,7 @@ - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android" + android:title="@string/EPr_title"> @@ -31,7 +13,7 @@ android:summary="@string/prefs_fontSize_desc" /> - - + --> + diff --git a/astrid/res/xml/preferences_defaults.xml b/astrid/res/xml/preferences_defaults.xml new file mode 100644 index 000000000..d1a2be760 --- /dev/null +++ b/astrid/res/xml/preferences_defaults.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java index 028726cd5..05fc916a4 100644 --- a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java +++ b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java @@ -9,29 +9,21 @@ import java.util.List; import java.util.Map.Entry; import android.content.Intent; -import android.content.SharedPreferences.Editor; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.content.res.Resources; 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.Preference.OnPreferenceClickListener; -import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; -import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; +import android.preference.Preference.OnPreferenceClickListener; import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.andlib.widget.TodorooPreferences; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.TaskDao; @@ -39,7 +31,6 @@ import com.todoroo.astrid.model.Task; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.utility.Constants; -import com.todoroo.astrid.utility.Preferences; /** * Displays the preference screen for users to edit their preferences @@ -47,11 +38,7 @@ import com.todoroo.astrid.utility.Preferences; * @author Tim Su * */ -public class EditPreferences extends PreferenceActivity { - - // --- constants - - +public class EditPreferences extends TodorooPreferences { // --- instance variables @@ -71,17 +58,18 @@ public class EditPreferences extends PreferenceActivity { DependencyInjectionService.getInstance().inject(this); } + @Override + public int getPreferenceResource() { + return R.xml.preferences; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new StartupService().onStartupApplication(this); ContextManager.setContext(this); - setTitle(R.string.EPr_title); - addPreferencesFromResource(R.xml.preferences); - PreferenceScreen screen = getPreferenceScreen(); - initializePreference(screen); // load plug-ins Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS); @@ -160,76 +148,10 @@ public class EditPreferences extends PreferenceActivity { group.addPreference(preference); } - private void initializePreference(Preference preference) { - if(preference instanceof PreferenceGroup) { - PreferenceGroup group = (PreferenceGroup)preference; - for(int i = 0; i < group.getPreferenceCount(); i++) { - initializePreference(group.getPreference(i)); - } - } else { - Object value = null; - if(preference instanceof ListPreference) - value = ((ListPreference)preference).getValue(); - else if(preference instanceof CheckBoxPreference) - value = ((CheckBoxPreference)preference).isChecked(); - else if(preference instanceof EditTextPreference) - value = ((EditTextPreference)preference).getText(); - - if(value != null) - updatePreferences(preference, value); - - preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - public boolean onPreferenceChange(Preference myPreference, Object newValue) { - return updatePreferences(myPreference, newValue); - } - }); - } - } - @Override - protected void onStart() { - super.onStart(); + public void updatePreferences(Preference preference, Object value) { + // nothing to do } - @Override - protected void onStop() { - super.onStop(); - } - /** - * - * @param resource if null, updates all resources - */ - protected boolean updatePreferences(Preference preference, Object value) { - Resources r = getResources(); - - // defaults options - if(r.getString(R.string.p_default_urgency_key).equals(preference.getKey())) { - updateTaskListPreference(preference, value, r, R.array.EPr_default_urgency, - R.array.EPr_default_urgency_values, R.string.EPr_default_urgency_desc); - } else if(r.getString(R.string.p_default_importance_key).equals(preference.getKey())) { - updateTaskListPreference(preference, value, r, R.array.EPr_default_importance, - R.array.EPr_default_importance_values, R.string.EPr_default_importance_desc); - } else if(r.getString(R.string.p_default_hideUntil_key).equals(preference.getKey())) { - updateTaskListPreference(preference, value, r, R.array.EPr_default_hideUntil, - R.array.EPr_default_hideUntil_values, R.string.EPr_default_hideUntil_desc); - } - - return true; - } - - private void updateTaskListPreference(Preference preference, Object value, - Resources r, int keyArray, int valueArray, int summaryResource) { - int index = AndroidUtilities.indexOf(r.getStringArray(valueArray), (String)value); - String setting = r.getStringArray(keyArray)[index]; - preference.setSummary(r.getString(summaryResource, - setting)); - - // if user changed the value, refresh task defaults - if(!value.equals(Preferences.getStringValue(preference.getKey()))) { - Editor editor = Preferences.getPrefs(this).edit(); - editor.putString(preference.getKey(), (String)value); - editor.commit(); - } - } } \ No newline at end of file diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index b31ac1769..b7b460329 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -56,9 +56,9 @@ import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.TaskDetail; +import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; -import com.todoroo.astrid.filters.CoreFilterExposer; import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Task; import com.todoroo.astrid.reminders.Notifications;