SharedPreference will open a new file if the current one is not working out

pull/14/head
Tim Su 14 years ago
parent 0bb5bef617
commit a22baa36fb

@ -50,10 +50,26 @@ public class Preferences {
* ======================================================= helper methods
* ====================================================================== */
private static SharedPreferences preferences = null;
/** Get preferences object from the context */
public static SharedPreferences getPrefs(Context context) {
if(preferences != null)
return preferences;
context = context.getApplicationContext();
return PreferenceManager.getDefaultSharedPreferences(context);
try {
preferences = PreferenceManager.getDefaultSharedPreferences(context);
// try writing
preferences.edit().commit();
} catch (Exception e) {
String alternate = "preferences" + android.os.Process.myUid(); //$NON-NLS-1$
preferences = context.getSharedPreferences(alternate, Context.MODE_PRIVATE);
}
return preferences;
}
/** @return true if given preference is set */

@ -4,6 +4,7 @@ package com.todoroo.andlib.utility;
*/
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
@ -46,6 +47,11 @@ abstract public class TodorooPreferenceActivity extends PreferenceActivity {
addPreferencesFromResource(getPreferenceResource());
}
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return Preferences.getPrefs(this);
}
protected void initializePreference(Preference preference) {
if(preference instanceof PreferenceGroup) {
PreferenceGroup group = (PreferenceGroup)preference;

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid"
android:versionName="3.7.3.1"
android:versionCode="177">
android:versionName="3.7.4"
android:versionCode="178">
<!-- widgets, alarms, and services will break if Astrid is installed on SD card -->
<!-- android:installLocation="internalOnly"> -->

@ -1,84 +0,0 @@
/**
* 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.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.preference.RingtonePreference;
import com.todoroo.andlib.service.DependencyInjectionService;
/**
* 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();
/**
* Update preferences for the given preference
* @param preference
* @param value setting. may be null.
*/
public abstract void updatePreferences(Preference preference, Object value);
// --- implementation
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(getPreferenceResource());
DependencyInjectionService.getInstance().inject(this);
}
protected 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();
else if(preference instanceof RingtonePreference)
value = getPreferenceManager().getSharedPreferences().getString(preference.getKey(), null);
updatePreferences(preference, value);
preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference myPreference, Object newValue) {
updatePreferences(myPreference, newValue);
return true;
}
});
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus) {
initializePreference(getPreferenceScreen());
}
}
}

@ -14,7 +14,7 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
/**
* Displays synchronization preferences and an action panel so users can
@ -23,7 +23,7 @@ import com.todoroo.andlib.widget.TodorooPreferences;
* @author timsu
*
*/
public class BackupPreferences extends TodorooPreferences {
public class BackupPreferences extends TodorooPreferenceActivity {
static final String PREF_BACKUP_LAST_DATE = "backupDate"; //$NON-NLS-1$

@ -10,7 +10,7 @@ import android.preference.Preference;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
/**
* Displays the preference screen for users to edit their preferences
@ -18,7 +18,7 @@ import com.todoroo.andlib.widget.TodorooPreferences;
* @author Tim Su <tim@todoroo.com>
*
*/
public class DefaultsPreferences extends TodorooPreferences {
public class DefaultsPreferences extends TodorooPreferenceActivity {
@Override
public int getPreferenceResource() {

@ -9,7 +9,7 @@ import android.preference.Preference;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
/**
* Displays the preference screen for users to edit their preferences
@ -17,7 +17,7 @@ import com.todoroo.andlib.widget.TodorooPreferences;
* @author Tim Su <tim@todoroo.com>
*
*/
public class ReminderPreferences extends TodorooPreferences {
public class ReminderPreferences extends TodorooPreferenceActivity {
@Override
public int getPreferenceResource() {

@ -34,7 +34,7 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task;
@ -53,7 +53,7 @@ import com.todoroo.astrid.voice.VoiceOutputService;
* @author Tim Su <tim@todoroo.com>
*
*/
public class EditPreferences extends TodorooPreferences {
public class EditPreferences extends TodorooPreferenceActivity {
private static final int ABOUT_PREFERENCE = 0; // see preferences.xml for order of prefs
private static final int POWER_PACK_PREFERENCE = 2;

@ -24,6 +24,7 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
@ -35,9 +36,8 @@ import com.todoroo.astrid.service.TaskService;
* If the user refuses, {@link android.app.Activity#finish()} is invoked on your
* activity.
*/
class Eula {
private static final String PREFERENCE_EULA_ACCEPTED = "eula.accepted"; //$NON-NLS-1$
private static final String PREFERENCES_EULA = "eula"; //$NON-NLS-1$
public final class Eula {
public static final String PREFERENCE_EULA_ACCEPTED = "eula.accepted"; //$NON-NLS-1$
@Autowired TaskService taskService;
@ -49,9 +49,7 @@ class Eula {
* The Activity to finish if the user rejects the EULA
*/
static void showEula(final Activity activity) {
final SharedPreferences preferences = activity.getSharedPreferences(
PREFERENCES_EULA, Activity.MODE_PRIVATE);
if(!new Eula().shouldShowEula(preferences))
if(!new Eula().shouldShowEula(activity))
return;
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
@ -61,7 +59,7 @@ class Eula {
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
accept(activity, preferences);
accept(activity);
}
});
builder.setNegativeButton(R.string.DLG_decline,
@ -81,17 +79,22 @@ class Eula {
builder.show();
}
private boolean shouldShowEula(SharedPreferences preferences) {
if(preferences.getBoolean(PREFERENCE_EULA_ACCEPTED, false))
private boolean shouldShowEula(Activity activity) {
if(Preferences.getBoolean(PREFERENCE_EULA_ACCEPTED, false))
return false;
SharedPreferences p = activity.getSharedPreferences("eula", Activity.MODE_PRIVATE); //$NON-NLS-1$
if(p.getBoolean(PREFERENCE_EULA_ACCEPTED, false))
return false;
if(taskService.countTasks() > StartupService.INTRO_TASK_SIZE)
return false;
return true;
}
@SuppressWarnings("unused")
private static void accept(Activity activity, SharedPreferences preferences) {
preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true).commit();
private static void accept(Activity activity) {
Preferences.setBoolean(PREFERENCE_EULA_ACCEPTED, true);
}
private static void refuse(Activity activity) {

@ -22,6 +22,7 @@ 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.activity.Eula;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.Database;
@ -35,6 +36,7 @@ import com.todoroo.astrid.utility.AstridPreferences;
public final class UpgradeService {
public static final int V3_7_4 = 178;
public static final int V3_7_3 = 175;
public static final int V3_7_2 = 174;
public static final int V3_7_1 = 173;
@ -138,6 +140,12 @@ public final class UpgradeService {
});
} else {
// current message
if(from < V3_7_4) {
newVersionString(changeLog, "3.7.4 (5/16/11)", new String[] {
"stuff...",
});
Preferences.setBoolean(Eula.PREFERENCE_EULA_ACCEPTED, true);
}
if(from < V3_7_3) {
newVersionString(changeLog, "3.7.3 (4/26/11)", new String[] {
"Fixed 'Show Notes' setting not working",

Loading…
Cancel
Save