Fixed repeating tasks in gcal bugs

pull/14/head
Sam Bosley 13 years ago
parent 01e28fb529
commit 44efcfb6c3

@ -22,6 +22,8 @@ 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 final String CALENDAR_ID_COLUMN = "calendar_id"; //$NON-NLS-1$
public static String getTaskEventUri(Task task) {
String uri;
if (!TextUtils.isEmpty(task.getValue(Task.CALENDAR_URI)))
@ -72,8 +74,8 @@ public class GCalHelper {
values.put("transparency", 0);
values.put("visibility", 0);
}
boolean valuesContainCalendarId = (values.containsKey("calendar_id") &&
!TextUtils.isEmpty(values.getAsString("calendar_id")));
boolean valuesContainCalendarId = (values.containsKey(CALENDAR_ID_COLUMN) &&
!TextUtils.isEmpty(values.getAsString(CALENDAR_ID_COLUMN)));
if (!valuesContainCalendarId) {
String calendarId = Calendars.getDefaultCalendar();
if (!TextUtils.isEmpty(calendarId)) {
@ -97,6 +99,30 @@ public class GCalHelper {
return null;
}
public static void rescheduleRepeatingTask(Task task, ContentResolver cr) {
String taskUri = getTaskEventUri(task);
if (TextUtils.isEmpty(taskUri))
return;
Uri eventUri = Uri.parse(taskUri);
String calendarId = getCalendarId(eventUri, cr);
ContentValues cv = new ContentValues();
cv.put(CALENDAR_ID_COLUMN, calendarId);
Uri uri = createTaskEvent(task, cr, cv, false);
task.setValue(Task.CALENDAR_URI, uri.toString());
}
private static String getCalendarId(Uri uri, ContentResolver cr) {
Cursor calendar = cr.query(uri, new String[] { CALENDAR_ID_COLUMN }, null, null, null);
calendar.moveToFirst();
try {
return calendar.getString(0);
} finally {
calendar.close();
}
}
@SuppressWarnings("nls")
public static boolean deleteTaskEvent(Task task) {
boolean eventDeleted = false;

@ -9,8 +9,11 @@ import java.util.List;
import java.util.TimeZone;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import com.google.ical.iter.RecurrenceIterator;
import com.google.ical.iter.RecurrenceIteratorFactory;
@ -74,7 +77,9 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
task.setValue(Task.DUE_DATE, newDueDate);
task.setValue(Task.HIDE_UNTIL, hideUntil);
task.putTransitory("repeat-complete", true); //$NON-NLS-1$
GCalHelper.createTaskEventIfEnabled(task, false);
ContentResolver cr = ContextManager.getContext().getContentResolver();
GCalHelper.rescheduleRepeatingTask(task, cr);
PluginServices.getTaskService().save(task);
// send a broadcast

Loading…
Cancel
Save