Renamed package, cleaned up preference libraries

pull/14/head
Tim Su 14 years ago
parent fd26639d33
commit d083f81c3e

@ -143,28 +143,35 @@
<!-- ========================================================= Plugins = -->
<!-- core filters -->
<receiver android:name="com.todoroo.astrid.filters.CorePlugin">
<!-- core -->
<receiver android:name="com.todoroo.astrid.core.CorePlugin">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_PLUGINS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.filters.CoreFilterExposer">
<receiver android:name="com.todoroo.astrid.core.CoreFilterExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name="com.todoroo.astrid.core.DefaultsPreferences"
android:label="@string/EPr_defaults_header">
<intent-filter>
<action android:name="com.todoroo.astrid.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- extended filters -->
<receiver android:name="com.todoroo.astrid.filters.ExtendedPlugin">
<receiver android:name="com.todoroo.astrid.core.ExtendedPlugin">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_PLUGINS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.filters.ExtendedFilterExposer">
<receiver android:name="com.todoroo.astrid.core.ExtendedFilterExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />

@ -15,11 +15,9 @@
<booleanAttribute key="com.android.ide.eclipse.adt.wipedata" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/astrid"/>
<listEntry value="/astrid/AndroidManifest.xml"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
<listEntry value="1"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>

@ -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 <tim@todoroo.com>
*
*/
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;
}
});
}
}
}

@ -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;

@ -1,4 +1,4 @@
package com.todoroo.astrid.filters;
package com.todoroo.astrid.core;
import android.content.BroadcastReceiver;
import android.content.Context;

@ -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 <tim@todoroo.com>
*
*/
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();
}
}
}

@ -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;

@ -1,4 +1,4 @@
package com.todoroo.astrid.filters;
package com.todoroo.astrid.core;
import android.content.BroadcastReceiver;
import android.content.Context;

@ -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 <tim@todoroo.com>
*
*/
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 {

@ -1,25 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:title="@string/EPr_defaults_header">
<ListPreference
android:key="@string/p_default_importance_key"
android:entries="@array/EPr_default_importance"
android:entryValues="@array/EPr_default_importance_values"
android:title="@string/EPr_default_importance_title" />
<ListPreference
android:key="@string/p_default_urgency_key"
android:entries="@array/EPr_default_urgency"
android:entryValues="@array/EPr_default_urgency_values"
android:title="@string/EPr_default_urgency_title" />
<ListPreference
android:key="@string/p_default_hideUntil_key"
android:entries="@array/EPr_default_hideUntil"
android:entryValues="@array/EPr_default_hideUntil_values"
android:title="@string/EPr_default_hideUntil_title" />
</PreferenceScreen>
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/EPr_title">
<PreferenceCategory
android:title="@string/prefs_category_appearance">
@ -31,7 +13,7 @@
android:summary="@string/prefs_fontSize_desc" />
</PreferenceCategory>
<PreferenceCategory
<!-- PreferenceCategory
android:title="@string/prefs_category_other">
<CheckBoxPreference
android:key="@string/p_backup"
@ -42,5 +24,6 @@
android:key="@string/prefs_defaultCalendar"
android:title="@string/prefs_defaultCalendar_title"
android:summary="@string/prefs_defaultCalendar_desc" />
</PreferenceCategory>
</PreferenceCategory> -->
</PreferenceScreen>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/EPr_defaults_header">
<ListPreference
android:key="@string/p_default_importance_key"
android:entries="@array/EPr_default_importance"
android:entryValues="@array/EPr_default_importance_values"
android:title="@string/EPr_default_importance_title" />
<ListPreference
android:key="@string/p_default_urgency_key"
android:entries="@array/EPr_default_urgency"
android:entryValues="@array/EPr_default_urgency_values"
android:title="@string/EPr_default_urgency_title" />
<ListPreference
android:key="@string/p_default_hideUntil_key"
android:entries="@array/EPr_default_hideUntil"
android:entryValues="@array/EPr_default_hideUntil_values"
android:title="@string/EPr_default_hideUntil_title" />
</PreferenceScreen>

@ -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 <tim@todoroo.com>
*
*/
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();
}
}
}

@ -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;

Loading…
Cancel
Save