Merge remote-tracking branch 'stingerAJ/110928_aj_gcal_default_setting'

Conflicts:
	astrid/res/values/keys.xml
	astrid/res/values/strings-core.xml
	astrid/res/xml/preferences_defaults.xml
pull/14/head
Tim Su 13 years ago
commit 40971ccd19

@ -5,12 +5,15 @@ 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 com.timsu.astrid.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
@ -25,6 +28,14 @@ public class DefaultsPreferences extends TodorooPreferenceActivity {
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
@ -57,6 +68,15 @@ public class DefaultsPreferences extends TodorooPreferenceActivity {
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));
}
}
}

@ -1,10 +1,15 @@
package com.todoroo.astrid.gcal;
import java.util.ArrayList;
import java.util.Arrays;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.preference.ListPreference;
import android.util.Log;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
@ -69,9 +74,7 @@ public class Calendars {
}
/**
* Appends all user-modifiable calendars to listPreference. Always includes
* entry called "Astrid default" with calendar id of
* prefs_defaultCalendar_default.
* Appends all user-modifiable calendars to listPreference.
*
* @param context
* context
@ -135,6 +138,69 @@ public class Calendars {
}
}
/**
* Appends all user-modifiable calendars to listPreference.
*
* @param context
* context
* @param listPreference
* preference to init
*/
public static void initCalendarsPreference(Context context,
ListPreference listPreference) {
Resources r = context.getResources();
CalendarResult calendars = getCalendars();
// Fetch the current setting. Invalid calendar id will
// be changed to default value.
String currentSetting = Preferences.getStringValue(R.string.gcal_p_default);
boolean calendarWasSelected = currentSetting != null && !currentSetting.equals("-1");
int currentSettingIndex = -1;
ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
entries.addAll(Arrays.asList(r.getStringArray(R.array.EPr_default_addtocalendar)));
entries.addAll(Arrays.asList(calendars.calendars));
ArrayList<CharSequence> entryValues = new ArrayList<CharSequence>();
entryValues.addAll(Arrays.asList(r.getStringArray(R.array.EPr_default_addtocalendar_values)));
entryValues.addAll(Arrays.asList(calendars.calendarIds));
listPreference.setEntries(entries.toArray(new CharSequence[entries.size()]));
listPreference.setEntryValues(entryValues.toArray(new CharSequence[entryValues.size()]));
listPreference.setValueIndex(0);
listPreference.setEnabled(true);
if (calendars == null || calendars.calendarIds.length == 0 || calendars.calendars.length == 0) {
// Something went wrong when querying calendars
// Leave the preference at disabled.
return;
}
// Iterate calendars one by one, and fill up the list preference
if (currentSetting != null) {
for (int i=0; i<calendars.calendarIds.length; i++) {
// We found currently selected calendar
if (currentSetting.equals(calendars.calendarIds[i])) {
currentSettingIndex = i+1; // +1 correction for disabled-entry
break;
}
}
}
if(currentSettingIndex == -1 || currentSettingIndex > calendars.calendarIds.length+1) {
// Should not happen!
// Leave the preference at disabled.
Log.d("astrid", "initCalendarsPreference: Unknown calendar.");
currentSettingIndex = 0;
}
listPreference.setValueIndex(currentSettingIndex);
listPreference.setEnabled(true);
}
/**
* sets the default calendar for future use
* @param defaultCalendar default calendar id
@ -143,4 +209,12 @@ public class Calendars {
Preferences.setString(R.string.gcal_p_default, defaultCalendar);
}
/**
* gets the default calendar for future use
* @return the calendar id for use with the contentresolver
*/
public static String getDefaultCalendar() {
return Preferences.getStringValue(R.string.gcal_p_default);
}
}

@ -24,7 +24,6 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.TaskEditActivity.TaskEditControlSet;
import com.todoroo.astrid.data.Task;
@ -40,9 +39,6 @@ import com.todoroo.astrid.service.StatisticsService;
*/
public class GCalControlSet implements TaskEditControlSet {
/** If task has no estimated time, how early to set a task in calendar (seconds)*/
private static final long DEFAULT_CAL_TIME = DateUtilities.ONE_HOUR;
// --- instance variables
@Autowired
@ -120,7 +116,7 @@ public class GCalControlSet implements TaskEditControlSet {
@Override
public void readFromTask(Task task) {
this.myTask = task;
String uri = task.getValue(Task.CALENDAR_URI);
String uri = GCalHelper.getTaskEventUri(task);
if(!TextUtils.isEmpty(uri)) {
try {
calendarUri = Uri.parse(uri);
@ -148,34 +144,23 @@ public class GCalControlSet implements TaskEditControlSet {
@SuppressWarnings("nls")
@Override
public String writeToModel(Task task) {
if (((Preferences.getBoolean(R.string.p_default_addtocalendar_key, false) && !task.isSaved())
|| addToCalendar.isChecked()) &&
boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null &&
!Preferences.getStringValue(R.string.gcal_p_default).equals("-1");
if ((gcalCreateEventEnabled || addToCalendar.isChecked()) &&
calendarUri == null) {
StatisticsService.reportEvent(StatisticsConstants.CREATE_CALENDAR_EVENT);
try{
Uri uri = Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS);
ContentResolver cr = activity.getContentResolver();
ContentValues values = new ContentValues();
values.put("title", task.getValue(Task.TITLE));
String calendarId = calendars.calendarIds[calendarSelector.getSelectedItemPosition()];
Calendars.setDefaultCalendar(calendarId);
values.put("calendar_id", calendarId);
values.put("description", task.getValue(Task.NOTES));
values.put("hasAlarm", 0);
values.put("transparency", 0);
values.put("visibility", 0);
createStartAndEndDate(task, values);
calendarUri = cr.insert(uri, values);
cr.notifyChange(uri, null);
calendarUri = GCalHelper.createTaskEvent(task, cr, values);
task.setValue(Task.CALENDAR_URI, calendarUri.toString());
// if the default-setting says so, create the gcal-event silently
if (!Preferences.getBoolean(R.string.p_default_addtocalendar_key, false) ||
(addToCalendar.isChecked() && addToCalendar.isShown())) {
if (addToCalendar.isChecked() && addToCalendar.isShown()) {
// pop up the new event
Intent intent = new Intent(Intent.ACTION_EDIT, calendarUri);
intent.putExtra("beginTime", values.getAsLong("dtstart"));
@ -197,8 +182,8 @@ public class GCalControlSet implements TaskEditControlSet {
updateValues.put("title", task.getValue(Task.TITLE));
if(setValues.containsKey(Task.NOTES.name))
updateValues.put("description", task.getValue(Task.NOTES));
if(setValues.containsKey(Task.DUE_DATE.name))
createStartAndEndDate(task, updateValues);
if(setValues.containsKey(Task.DUE_DATE.name) || setValues.containsKey(Task.ESTIMATED_SECONDS.name))
GCalHelper.createStartAndEndDate(task, updateValues);
ContentResolver cr = activity.getContentResolver();
if(cr.update(calendarUri, updateValues, null, null) > 0)
@ -211,28 +196,4 @@ public class GCalControlSet implements TaskEditControlSet {
return null;
}
@SuppressWarnings("nls")
private void createStartAndEndDate(Task task, ContentValues values) {
long dueDate = task.getValue(Task.DUE_DATE);
// FIXME: doesnt respect timezones, see story 17443653
if(task.hasDueDate()) {
if(task.hasDueTime()) {
long estimatedTime = task.getValue(Task.ESTIMATED_SECONDS);
if(estimatedTime <= 0)
estimatedTime = DEFAULT_CAL_TIME;
values.put("dtstart", dueDate - estimatedTime);
values.put("dtend", dueDate);
} else {
// calendar thinks 23:59:59 is next day, move it back
values.put("dtstart", dueDate - DateUtilities.ONE_DAY + 1000L);
values.put("dtend", dueDate - DateUtilities.ONE_DAY + 1000L);
values.put("allDay", "1");
}
} else {
values.put("dtstart", DateUtilities.now());
values.put("dtend", DateUtilities.now());
values.put("allDay", "1");
}
}
}

@ -1,16 +1,75 @@
package com.todoroo.astrid.gcal;
import java.util.TimeZone;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task;
public class GCalHelper {
/** If task has no estimated time, how early to set a task in calendar (seconds)*/
private static final long DEFAULT_CAL_TIME = DateUtilities.ONE_HOUR;
public static String getTaskEventUri(Task task) {
String uri;
if (!TextUtils.isEmpty(task.getValue(Task.CALENDAR_URI)))
uri = task.getValue(Task.CALENDAR_URI);
else {
task = PluginServices.getTaskService().fetchById(task.getId(), Task.CALENDAR_URI);
if(task == null)
return null;
uri = task.getValue(Task.CALENDAR_URI);
}
return uri;
}
public static Uri createTaskEvent(Task task, ContentResolver cr, ContentValues values) {
String eventuri = getTaskEventUri(task);
if(!TextUtils.isEmpty(eventuri)) {
deleteTaskEvent(task);
}
try{
// FIXME test this with empty quickadd and full quickadd and taskedit-page
Uri uri = Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS);
values.put("title", task.getValue(Task.TITLE));
values.put("description", task.getValue(Task.NOTES));
values.put("hasAlarm", 0);
values.put("transparency", 0);
values.put("visibility", 0);
boolean valuesContainCalendarId = (values.containsKey("calendar_id") &&
!TextUtils.isEmpty(values.getAsString("calendar_id")));
if (!valuesContainCalendarId) {
String calendarId = Calendars.getDefaultCalendar();
if (!TextUtils.isEmpty(calendarId)) {
values.put("calendar_id", calendarId);
}
}
createStartAndEndDate(task, values);
Uri eventUri = cr.insert(uri, values);
cr.notifyChange(eventUri, null);
return eventUri;
} catch (Exception e) {
Log.e("astrid-gcal", "error-creating-calendar-event", e); //$NON-NLS-1$ //$NON-NLS-2$
}
return null;
}
public static void deleteTaskEvent(Task task) {
String uri;
if(task.containsNonNullValue(Task.CALENDAR_URI))
@ -35,9 +94,38 @@ public class GCalHelper {
if (!deleted) {
cr.delete(calendarUri, null, null);
}
task.setValue(Task.CALENDAR_URI,"");
} catch (Exception e) {
Log.e("astrid-gcal", "error-deleting-calendar-event", e); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
}
@SuppressWarnings("nls")
static void createStartAndEndDate(Task task, ContentValues values) {
long dueDate = task.getValue(Task.DUE_DATE);
long tzCorrectedDueDate = dueDate + TimeZone.getDefault().getOffset(dueDate);
long tzCorrectedDueDateNow = DateUtilities.now() + TimeZone.getDefault().getOffset(DateUtilities.now());
// FIXME: doesnt respect timezones, see story 17443653
if(task.hasDueDate()) {
if(task.hasDueTime()) {
long estimatedTime = task.getValue(Task.ESTIMATED_SECONDS) * 1000;
if(estimatedTime <= 0)
estimatedTime = DEFAULT_CAL_TIME;
values.put("dtstart", dueDate - estimatedTime);
values.put("dtend", dueDate);
// setting a duetime to a previously timeless event requires explicitly setting allDay=0
values.put("allDay", "0");
} else {
values.put("dtstart", tzCorrectedDueDate);
values.put("dtend", tzCorrectedDueDate);
values.put("allDay", "1");
}
} else {
values.put("dtstart", tzCorrectedDueDateNow);
values.put("dtend", tzCorrectedDueDateNow);
values.put("allDay", "1");
}
}
}

@ -9,8 +9,11 @@ import java.util.List;
import java.util.TimeZone;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import com.google.ical.iter.RecurrenceIterator;
import com.google.ical.iter.RecurrenceIteratorFactory;
@ -20,14 +23,17 @@ import com.google.ical.values.DateValueImpl;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.google.ical.values.WeekdayNum;
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.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.utility.Flags;
@ -46,8 +52,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
if(taskId == -1)
return;
Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.RECURRENCE,
Task.DUE_DATE, Task.FLAGS, Task.HIDE_UNTIL, Task.REMOTE_ID, Task.COMPLETION_DATE);
Task task = PluginServices.getTaskService().fetchById(taskId, Task.PROPERTIES);
if(task == null || !task.isCompleted())
return;
@ -91,11 +96,21 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
clone.setValue(Task.ELAPSED_SECONDS, 0);
clone.setValue(Task.REMINDER_SNOOZE, 0L);
clone.setValue(Task.REMINDER_LAST, 0L);
boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null &&
!Preferences.getStringValue(R.string.gcal_p_default).equals("-1");
if (gcalCreateEventEnabled) {
ContentResolver cr = ContextManager.getContext().getContentResolver();
Uri calendarUri = GCalHelper.createTaskEvent(clone, cr, new ContentValues());
clone.setValue(Task.CALENDAR_URI, calendarUri.toString());
}
PluginServices.getTaskService().save(clone);
// clear recurrence from completed task so it can be re-completed
task.setValue(Task.RECURRENCE, ""); //$NON-NLS-1$
task.setValue(Task.DETAILS_DATE, 0L);
GCalHelper.deleteTaskEvent(task);
PluginServices.getTaskService().save(task);
// send a broadcast

@ -651,6 +651,8 @@
<!-- Preference Window Title -->
<string name="EPr_title">Astrid: Einstellungen</string>
<string name="EPr_deactivated">deaktiviert</string>
<!-- Preference Category: Appearance Title -->
<string name="EPr_appearance_header">Erscheinungsbild</string>

@ -257,6 +257,11 @@
<!-- default reminder mode setting (corresponds to entry in TEA_reminder_mode_once, TEA_reminder_mode_five, TEA_reminder_mode_nonstop) -->
<string name="p_default_reminders_mode_key">rmd_default_reminder_mode</string>
<string-array name="EPr_default_addtocalendar_values">
<!-- addtocalendar: labels that map EPr_default_addtocalendar items to calendar selection in settings. -->
<item>-1</item>
</string-array>
<!-- ============================================================ SYNC == -->
<string-array name="sync_SPr_interval_values">

@ -368,6 +368,8 @@
<!-- Preference Window Title -->
<string name="EPr_title">Astrid: Settings</string>
<string name="EPr_deactivated">deactivated</string>
<!-- Preference Category: Appearance Title -->
<string name="EPr_appearance_header">Appearance</string>
@ -390,70 +392,6 @@
<string name="EPr_theme_desc">Currently: %s</string>
<!-- Preference: Theme Description (android 1.6) -->
<string name="EPr_theme_desc_unsupported">Setting requires Android 2.0+</string>
<!-- Preference Category: Defaults Title -->
<string name="EPr_defaults_header">New Task Defaults</string>
<!-- Preference: Default Urgency Title -->
<string name="EPr_default_urgency_title">Default Urgency</string>
<!-- Preference: Default Urgency Description (%s => setting) -->
<string name="EPr_default_urgency_desc">Currently: %s</string>
<!-- Preference: Default Importance Title -->
<string name="EPr_default_importance_title">Default Importance</string>
<!-- Preference: Default Importance Description (%s => setting) -->
<string name="EPr_default_importance_desc">Currently: %s</string>
<!-- Preference: Default Hide Until Title -->
<string name="EPr_default_hideUntil_title">Default Hide Until</string>
<!-- Preference: Default Hide Until Description (%s => setting) -->
<string name="EPr_default_hideUntil_desc">Currently: %s</string>
<!-- Preference: Default Reminders Title -->
<string name="EPr_default_reminders_title">Default Reminders</string>
<!-- Preference: Default Reminders Description (%s => setting) -->
<string name="EPr_default_reminders_desc">Currently: %s</string>
<!-- Reminder Mode Preference: Default Reminders Duration -->
<string name="EPr_default_reminders_mode_title">Default Ring/Vibrate type</string>
<!-- Preference: Default Reminders Description (%s => setting) -->
<string name="EPr_default_reminders_mode_desc">Currently: %s</string>
<!-- Preference: Default Add To Calendar Title -->
<string name="EPr_default_addtocalendar_title">Default Add To Calendar</string>
<string-array name="EPr_default_importance">
<!-- importance: labels for "Task Defaults" preference item. -->
<item>!!!! (Highest)</item>
<item>!!!</item>
<item>!!</item>
<item>! (Lowest)</item>
</string-array>
<string-array name="EPr_default_urgency">
<!-- urgency: labels for "Task Defaults" preference item. -->
<item>No Deadline</item>
<item>Today</item>
<item>Tomorrow</item>
<item>Day After Tomorrow</item>
<item>Next Week</item>
</string-array>
<string-array name="EPr_default_hideUntil">
<!-- hideUntil: labels for "Task Defaults" preference item. -->
<item>Don\'t hide</item>
<item>Task is due</item>
<item>Day before due</item>
<item>Week before due</item>
</string-array>
<string-array name="EPr_default_reminders">
<!-- reminders: labels for "Task Defaults" preference item. -->
<item>No deadline reminders</item>
<item>At deadline</item>
<item>When overdue</item>
<item>At deadline or overdue</item>
</string-array>
<string-array name="EPr_default_reminders_mode">
<!-- reminders duration: labels for "Task Defaults" preference item. -->

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Preference Category: Defaults Title -->
<string name="EPr_defaults_header">New Task Defaults</string>
<!-- Preference: Default Urgency Title -->
<string name="EPr_default_urgency_title">Default Urgency</string>
<!-- Preference: Default Urgency Description (%s => setting) -->
<string name="EPr_default_urgency_desc">Currently: %s</string>
<!-- Preference: Default Importance Title -->
<string name="EPr_default_importance_title">Default Importance</string>
<!-- Preference: Default Importance Description (%s => setting) -->
<string name="EPr_default_importance_desc">Currently: %s</string>
<!-- Preference: Default Hide Until Title -->
<string name="EPr_default_hideUntil_title">Default Hide Until</string>
<!-- Preference: Default Hide Until Description (%s => setting) -->
<string name="EPr_default_hideUntil_desc">Currently: %s</string>
<!-- Preference: Default Reminders Title -->
<string name="EPr_default_reminders_title">Default Reminders</string>
<!-- Preference: Default Reminders Description (%s => setting) -->
<string name="EPr_default_reminders_desc">Currently: %s</string>
<!-- Preference: Default Add To Calendar Title -->
<string name="EPr_default_addtocalendar_title">Default Add To Calendar</string>
<!-- Preference: Default Add To Calendar Setting Description (disabled) -->
<string name="EPr_default_addtocalendar_desc_disabled">New tasks will not create an event in the Google Calendar</string>
<!-- Preference: Default Add To Calendar Setting Description (%s => setting) -->
<string name="EPr_default_addtocalendar_desc">New tasks will be in the calendar: \"%s\"</string>
<!-- Reminder Mode Preference: Default Reminders Duration -->
<string name="EPr_default_reminders_mode_title">Default Ring/Vibrate type</string>
<!-- Preference: Default Reminders Description (%s => setting) -->
<string name="EPr_default_reminders_mode_desc">Currently: %s</string>
<string-array name="EPr_default_importance">
<!-- importance: labels for "Task Defaults" preference item. -->
<item>!!!! (Highest)</item>
<item>!!!</item>
<item>!!</item>
<item>! (Lowest)</item>
</string-array>
<string-array name="EPr_default_urgency">
<!-- urgency: labels for "Task Defaults" preference item. -->
<item>No Deadline</item>
<item>Today</item>
<item>Tomorrow</item>
<item>Day After Tomorrow</item>
<item>Next Week</item>
</string-array>
<string-array name="EPr_default_hideUntil">
<!-- hideUntil: labels for "Task Defaults" preference item. -->
<item>Don\'t hide</item>
<item>Task is due</item>
<item>Day before due</item>
<item>Week before due</item>
</string-array>
<string-array name="EPr_default_reminders">
<!-- reminders: labels for "Task Defaults" preference item. -->
<item>No deadline reminders</item>
<item>At deadline</item>
<item>When overdue</item>
<item>At deadline or overdue</item>
</string-array>
<string-array name="EPr_default_addtocalendar">
<!-- addtocalendar: labels for "Task Defaults" preference item. -->
<item>@string/EPr_deactivated</item>
</string-array>
</resources>

@ -32,8 +32,9 @@
android:title="@string/EPr_default_reminders_mode_title"
android:entries="@array/EPr_default_reminders_mode"
android:entryValues="@array/EPr_default_reminders_mode_values" />
<CheckBoxPreference
<com.todoroo.astrid.ui.MultilineListPreference
android:title="@string/EPr_default_addtocalendar_title"
android:key="@string/p_default_addtocalendar_key"
android:defaultValue="false"/>
android:key="@string/gcal_p_default"
android:entries="@array/EPr_default_addtocalendar"
android:entryValues="@array/EPr_default_addtocalendar_values" />
</PreferenceScreen>

@ -332,7 +332,6 @@ public final class TaskEditActivity extends TabActivity {
(LinearLayout) findViewById(R.id.addons_urgency)));
LinearLayout alarmsAddons = (LinearLayout) findViewById(R.id.addons_alarms);
LinearLayout moreAddons = (LinearLayout) findViewById(R.id.addons_more);
controls.add(new GCalControlSet(TaskEditActivity.this, moreAddons));
try {
@ -357,6 +356,7 @@ public final class TaskEditActivity extends TabActivity {
controls.add(new TimerControlSet(TaskEditActivity.this, moreAddons));
controls.add(new AlarmControlSet(TaskEditActivity.this, alarmsAddons));
controls.add(new GCalControlSet(TaskEditActivity.this, moreAddons));
if(!Constants.MARKET_DISABLED && !addOnService.hasPowerPack()) {
// show add-on help if necessary
@ -486,6 +486,9 @@ public final class TaskEditActivity extends TabActivity {
/** Save task model from values in UI components */
private void save(boolean onPause) {
if(title.getText().length() > 0)
model.setValue(Task.DELETION_DATE, 0L);
StringBuilder toast = new StringBuilder();
synchronized(controls) {
for(TaskEditControlSet controlSet : controls) {
@ -495,9 +498,6 @@ public final class TaskEditActivity extends TabActivity {
}
}
if(title.getText().length() > 0)
model.setValue(Task.DELETION_DATE, 0L);
taskService.save(model);
if(title.getText().length() == 0)
return;

@ -87,6 +87,7 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.helper.MetadataHelper;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem;
@ -848,6 +849,14 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
Task task = createWithValues(filter.valuesForNewTasks,
title, taskService, metadataService);
boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null &&
!Preferences.getStringValue(R.string.gcal_p_default).equals("-1");
if (title.length()>0 && gcalCreateEventEnabled) {
Uri calendarUri = GCalHelper.createTaskEvent(task, getContentResolver(), new ContentValues());
task.setValue(Task.CALENDAR_URI, calendarUri.toString());
taskService.save(task);
}
TextView quickAdd = (TextView)findViewById(R.id.quickAddText);
quickAdd.setText(""); //$NON-NLS-1$

Loading…
Cancel
Save