You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tasks/astrid/src/main/java/com/todoroo/astrid/core/DefaultsPreferences.java

116 lines
5.3 KiB
Java

/**
* Copyright (c) 2012 Todoroo Inc
*
* 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.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import org.tasks.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
import com.todoroo.astrid.gcal.Calendars;
/**
* Displays the preference screen for users to edit their preferences
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class DefaultsPreferences extends TodorooPreferenceActivity {
@Override
public int getPreferenceResource() {
return R.xml.preferences_defaults;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListPreference defaultCalendarPreference = (ListPreference) findPreference(getString(R.string.gcal_p_default));
Calendars.initCalendarsPreference(this, defaultCalendarPreference);
}
/**
*
* @param resource if null, updates all resources
*/
@Override
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);
} else if(r.getString(R.string.p_default_reminders_key).equals(preference.getKey())) {
updateTaskListPreference(preference, value, r, R.array.EPr_default_reminders,
R.array.EPr_default_reminders_values, R.string.EPr_default_reminders_desc);
} else if(r.getString(R.string.p_default_reminders_mode_key).equals(preference.getKey())) {
updateTaskListPreference(preference, value, r, R.array.EPr_default_reminders_mode,
R.array.EPr_default_reminders_mode_values, R.string.EPr_default_reminders_mode_desc);
} else if(r.getString(R.string.p_rmd_default_random_hours).equals(preference.getKey())) {
int index = AndroidUtilities.indexOf(r.getStringArray(R.array.EPr_reminder_random_hours), (String)value);
if(index <= 0) {
preference.setSummary(r.getString(R.string.rmd_EPr_defaultRemind_desc_disabled));
} else {
String setting = r.getStringArray(R.array.EPr_reminder_random)[index];
preference.setSummary(r.getString(R.string.rmd_EPr_defaultRemind_desc, setting));
}
} else if(r.getString(R.string.gcal_p_default).equals(preference.getKey())) {
ListPreference listPreference = (ListPreference) preference;
int index = AndroidUtilities.indexOf(listPreference.getEntryValues(), (String)value);
if(index <= 0) {
preference.setSummary(r.getString(R.string.EPr_default_addtocalendar_desc_disabled));
} else {
String setting = listPreference.getEntries()[index].toString();
preference.setSummary(r.getString(R.string.EPr_default_addtocalendar_desc, setting));
}
} else if (r.getString(R.string.p_voiceInputCreatesTask).equals(preference.getKey())) {
preference.setEnabled(Preferences.getBoolean(R.string.p_voiceInputEnabled, false));
if (value != null && !(Boolean)value) {
preference.setSummary(R.string.EPr_voiceInputCreatesTask_desc_disabled);
} else {
preference.setSummary(R.string.EPr_voiceInputCreatesTask_desc_enabled);
}
}
}
private void updateTaskListPreference(Preference preference, Object value,
Resources r, int keyArray, int valueArray, int summaryResource) {
int index = AndroidUtilities.indexOf(r.getStringArray(valueArray), (String)value);
if(index == -1) {
// force the zeroth index
index = 0;
Editor editor = preference.getEditor();
editor.putString(preference.getKey(),
r.getStringArray(valueArray)[0]);
editor.commit();
}
String setting = r.getStringArray(keyArray)[index];
preference.setSummary(r.getString(summaryResource,
setting));
// if user changed the value, refresh task defaults
if(!AndroidUtilities.equals(value, Preferences.getStringValue(preference.getKey()))) {
Editor editor = Preferences.getPrefs(this).edit();
editor.putString(preference.getKey(), (String)value);
editor.commit();
}
}
}