Add new preferences

pull/189/head
Alex Baker 12 years ago
parent 4f3bbdd896
commit d4c0b80d79

@ -21,13 +21,6 @@ import com.todoroo.andlib.service.ContextManager;
*/
public class Preferences {
public static void setIntIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, int value) {
String key = r.getString(keyResource);
if(!prefs.contains(key)) {
editor.putInt(key, value);
}
}
/**
* Helper to write to editor if key specified is null. Writes a String
* property with the given integer
@ -49,16 +42,6 @@ public class Preferences {
}
}
/**
* Helper to write to editor if key specified is null
*/
public static void setIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, String value) {
String key = r.getString(keyResource);
if(!prefs.contains(key) || !(prefs.getAll().get(key) instanceof String)) {
editor.putString(key, value);
}
}
/* ======================================================================
* ======================================================= helper methods
* ====================================================================== */

@ -7,9 +7,9 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.test.TodorooTestCase;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.AstridPreferences;
import org.tasks.Snippet;
import org.tasks.preferences.Preferences;
import static org.tasks.Freeze.freezeClock;
import static org.tasks.RemoteModelHelpers.asQueryProperties;
@ -19,6 +19,7 @@ import static org.tasks.date.DateTimeUtils.currentTimeMillis;
public class TaskTest extends TodorooTestCase {
@Autowired private TaskService taskService;
@Autowired private Preferences preferences;
public void testNewTaskHasNoCreationDate() {
assertFalse(new Task().containsValue(Task.CREATION_DATE));
@ -41,7 +42,7 @@ public class TaskTest extends TodorooTestCase {
}
public void testDefaults() {
AstridPreferences.setPreferenceDefaults();
preferences.setDefaults();
ContentValues defaults = new Task().getDefaultValues();
assertTrue(defaults.containsKey(Task.TITLE.name));
assertTrue(defaults.containsKey(Task.DUE_DATE.name));

@ -31,6 +31,7 @@ import com.todoroo.astrid.tags.TagService;
import org.tasks.Broadcaster;
import org.tasks.filters.FilterCounter;
import org.tasks.injection.TestInjector;
import org.tasks.preferences.Preferences;
import org.tasks.scheduling.RefreshScheduler;
import org.tasks.widget.WidgetHelper;
@ -105,6 +106,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
@Inject WidgetHelper widgetHelper;
@Inject GtasksScheduler gtasksScheduler;
@Inject ReminderService reminderService;
@Inject Preferences preferences;
/**
* Initialize list of injectables. Special care must used when
@ -151,6 +153,7 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
injectables.put("widgetHelper", widgetHelper);
injectables.put("gtasksScheduler", gtasksScheduler);
injectables.put("reminderService", reminderService);
injectables.put("preferences", preferences);
}
/**

@ -2,20 +2,10 @@ package org.tasks;
import android.content.Context;
import com.todoroo.astrid.utility.AstridPreferences;
import static com.todoroo.andlib.utility.Preferences.getPrefs;
import org.tasks.preferences.Preferences;
public class TestUtilities {
public static void clearPreferences(Context context) {
getPrefs(context)
.edit()
.clear()
.commit();
}
public static void resetPreferences(Context context) {
clearPreferences(context);
AstridPreferences.setPreferenceDefaults();
new Preferences(context).clear();
}
}

@ -8,7 +8,6 @@ package com.todoroo.astrid.core;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
@ -19,16 +18,15 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.AstridPreferences;
import org.tasks.R;
import org.tasks.injection.InjectingTodorooPreferenceActivity;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
@ -44,6 +42,7 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
@Inject MetadataService metadataService;
@Inject Database database;
@Inject GCalHelper gcalHelper;
@Inject Preferences preferences;
ProgressDialog pd;
@ -107,18 +106,13 @@ public class OldTaskPreferences extends InjectingTodorooPreferenceActivity {
private void showClearDataDialog() {
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_clear_all_message),
new OnClickListener() {
getResources().getString(R.string.EPr_manage_clear_all_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Editor editor = Preferences.getPrefs(OldTaskPreferences.this).edit();
editor.clear();
editor.commit();
deleteDatabase(database.getName());
AstridPreferences.setPreferenceDefaults();
preferences.reset();
System.exit(0);
}

@ -27,7 +27,6 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.backup.BackupConstants;
import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter;
@ -50,6 +49,7 @@ import com.todoroo.astrid.utility.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.io.File;
import java.util.List;
@ -76,13 +76,15 @@ public class StartupService {
private final Database database;
private final GtasksPreferenceService gtasksPreferenceService;
private final GtasksSyncService gtasksSyncService;
private MetadataService metadataService;
private final MetadataService metadataService;
private final Preferences preferences;
@Inject
public StartupService(UpgradeService upgradeService, TaskService taskService,
TagDataDao tagDataDao, Database database,
GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, MetadataService metadataService) {
GtasksSyncService gtasksSyncService, MetadataService metadataService,
Preferences preferences) {
this.upgradeService = upgradeService;
this.taskService = taskService;
this.tagDataDao = tagDataDao;
@ -90,6 +92,7 @@ public class StartupService {
this.gtasksPreferenceService = gtasksPreferenceService;
this.gtasksSyncService = gtasksSyncService;
this.metadataService = metadataService;
this.preferences = preferences;
}
/**
@ -126,7 +129,7 @@ public class StartupService {
if(context instanceof Activity) {
AudioManager audioManager = (AudioManager)context.getSystemService(
Context.AUDIO_SERVICE);
if(!Preferences.getBoolean(R.string.p_rmd_enabled, true)) {
if(!preferences.getBoolean(R.string.p_rmd_enabled, true)) {
Toast.makeText(context, R.string.TLA_notification_disabled, Toast.LENGTH_LONG).show();
} else if(audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) == 0) {
Toast.makeText(context, R.string.TLA_notification_volume_low, Toast.LENGTH_LONG).show();
@ -193,7 +196,8 @@ public class StartupService {
}
}).start();
AstridPreferences.setPreferenceDefaults();
preferences.setDefaults();
CalendarStartupReceiver.scheduleCalendarAlarms(context, false); // This needs to be after set preference defaults for the purposes of ab testing
showTaskKillerHelp(context);
@ -273,8 +277,8 @@ public class StartupService {
/**
* Show task killer helper
*/
private static void showTaskKillerHelp(final Context context) {
if(!Preferences.getBoolean(P_TASK_KILLER_HELP, false)) {
private void showTaskKillerHelp(final Context context) {
if(!preferences.getBoolean(P_TASK_KILLER_HELP, false)) {
return;
}
@ -297,7 +301,7 @@ public class StartupService {
@Override
public void onClick(DialogInterface arg0,
int arg1) {
Preferences.setBoolean(P_TASK_KILLER_HELP, true);
preferences.setBoolean(P_TASK_KILLER_HELP, true);
}
};

@ -5,7 +5,6 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.core.SortHelper;
@ -15,41 +14,16 @@ import org.joda.time.DateTime;
import org.tasks.R;
import static com.todoroo.andlib.utility.Preferences.setBoolean;
import static com.todoroo.andlib.utility.Preferences.setIntIfUnset;
public class AstridDefaultPreferenceSpec extends AstridPreferenceSpec {
public class AstridDefaultPreferenceSpec {
public static interface PreferenceExtras {
public void setExtras(Context context);
}
@Override
public void setIfUnset() {
PreferenceExtras extras = new PreferenceExtras() {
@Override
public void setExtras(Context context) {
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
setBoolean(dragDropTestInitialized, true);
}
BeastModePreferences.setDefaultOrder(context);
}
};
private Context context;
setPrefs(extras);
public AstridDefaultPreferenceSpec(Context context) {
this.context = context;
}
private static void setPrefs(PreferenceExtras extras) {
Context context = ContextManager.getContext();
public void setIfUnset() {
SharedPreferences prefs = Preferences.getPrefs(context);
Editor editor = prefs.edit();
Resources r = context.getResources();
@ -96,7 +70,20 @@ public class AstridDefaultPreferenceSpec extends AstridPreferenceSpec {
setIntIfUnset(prefs, editor, r, R.string.p_rmd_quietEnd, r.getInteger(R.integer.default_quiet_hours_end));
setIntIfUnset(prefs, editor, r, R.string.p_rmd_time, r.getInteger(R.integer.default_remind_time));
extras.setExtras(context);
String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$
if (!Preferences.getBoolean(dragDropTestInitialized, false)) {
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context);
if (publicPrefs != null) {
Editor edit = publicPrefs.edit();
if (edit != null) {
edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO);
edit.commit();
Preferences.setInt(AstridPreferences.P_SUBTASKS_HELP, 1);
}
}
setBoolean(dragDropTestInitialized, true);
}
BeastModePreferences.setDefaultOrder(context);
editor.commit();
@ -118,4 +105,30 @@ public class AstridDefaultPreferenceSpec extends AstridPreferenceSpec {
int millisOfDay = new DateTime().withMillisOfDay(0).withHourOfDay(hour).getMillisOfDay();
Preferences.setInt(newResourceId, millisOfDay);
}
private static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, int value) {
Preferences.setIfUnset(prefs, editor, r, key, value);
}
private static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, boolean value) {
Preferences.setIfUnset(prefs, editor, r, key, value);
}
private static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, String value) {
setIfUnset(prefs, editor, r, key, value);
}
private static void setIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, String value) {
String key = r.getString(keyResource);
if(!prefs.contains(key) || !(prefs.getAll().get(key) instanceof String)) {
editor.putString(key, value);
}
}
private static void setIntIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, int value) {
String key = r.getString(keyResource);
if(!prefs.contains(key)) {
editor.putInt(key, value);
}
}
}

@ -1,23 +0,0 @@
package com.todoroo.astrid.utility;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import com.todoroo.andlib.utility.Preferences;
public abstract class AstridPreferenceSpec {
public abstract void setIfUnset();
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, int value) {
Preferences.setIfUnset(prefs, editor, r, key, value);
}
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, boolean value) {
Preferences.setIfUnset(prefs, editor, r, key, value);
}
protected static void setPreference(SharedPreferences prefs, Editor editor, Resources r, int key, String value) {
Preferences.setIfUnset(prefs, editor, r, key, value);
}
}

@ -27,14 +27,6 @@ public class AstridPreferences {
public static final String P_SUBTASKS_HELP = "sthelp"; //$NON-NLS-1$
/** Set preference defaults, if unset. called at startup */
public static void setPreferenceDefaults() {
AstridPreferenceSpec spec;
spec = new AstridDefaultPreferenceSpec();
spec.setIfUnset();
}
/* ======================================================================
* ========================================================= public prefs
* ====================================================================== */

@ -0,0 +1,147 @@
package org.tasks.preferences;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.utility.AstridDefaultPreferenceSpec;
import javax.inject.Inject;
import static org.tasks.injection.TasksModule.ForApplication;
public class Preferences {
private final Context context;
private final SharedPreferences prefs;
@Inject
public Preferences(@ForApplication Context context) {
this.context = context;
prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
public void clear() {
prefs
.edit()
.clear()
.commit();
}
public void setDefaults() {
new AstridDefaultPreferenceSpec(context).setIfUnset();
}
public void reset() {
clear();
setDefaults();
}
public boolean isSet(String key) {
return prefs.contains(key);
}
public String getStringValue(String key) {
return prefs.getString(key, null);
}
public String getStringValue(int keyResource) {
return prefs.getString(context.getResources().getString(keyResource), null);
}
public int getIntegerFromString(int keyResource, int defaultValue) {
Resources r = context.getResources();
String value = prefs.getString(r.getString(keyResource), null);
if (value == null) {
return defaultValue;
}
try {
return Integer.parseInt(value);
} catch (Exception e) {
return defaultValue;
}
}
public void setString(int resourceId, String value) {
setString(ContextManager.getContext().getString(resourceId), value);
}
public void setString(String key, String newValue) {
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, newValue);
editor.commit();
}
public void setStringFromInteger(int keyResource, int newValue) {
SharedPreferences.Editor editor = prefs.edit();
editor.putString(context.getString(keyResource), Integer.toString(newValue));
editor.commit();
}
public boolean getBoolean(String key, boolean defValue) {
try {
return prefs.getBoolean(key, defValue);
} catch (ClassCastException e) {
return defValue;
}
}
public boolean getBoolean(int keyResources) {
return getBoolean(keyResources, false);
}
public boolean getBoolean(int keyResources, boolean defValue) {
return getBoolean(context.getString(keyResources), defValue);
}
public void setBoolean(int keyResource, boolean value) {
setBoolean(context.getString(keyResource), value);
}
public void setBoolean(String key, boolean value) {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(key, value);
editor.commit();
}
public int getInt(int resourceId) {
return getInt(resourceId, 0);
}
public int getInt(int resourceId, int defValue) {
return getInt(ContextManager.getContext().getString(resourceId), defValue);
}
public int getInt(String key, int defValue) {
return prefs.getInt(key, defValue);
}
public void setInt(int resourceId, int value) {
setInt(ContextManager.getContext().getString(resourceId), value);
}
public void setInt(String key, int value) {
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(key, value);
editor.commit();
}
public long getLong(String key, long defValue) {
return prefs.getLong(key, defValue);
}
public void setLong(String key, long value) {
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(key, value);
editor.commit();
}
public void clear(String key) {
SharedPreferences.Editor editor = prefs.edit();
editor.remove(key);
editor.commit();
}
}
Loading…
Cancel
Save