Add calendar id to AndroidCalendarEvent

Closes #387
pull/413/head
Alex Baker 10 years ago
parent 1f789530c5
commit a849af9813

@ -18,7 +18,8 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.R; import org.tasks.R;
import org.tasks.calendars.AndroidCalendar; import org.tasks.calendars.AndroidCalendarEvent;
import org.tasks.calendars.CalendarEventProvider;
import org.tasks.calendars.CalendarProvider; import org.tasks.calendars.CalendarProvider;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
@ -38,16 +39,19 @@ public class GCalHelper {
private final TaskService taskService; private final TaskService taskService;
private final Preferences preferences; private final Preferences preferences;
private final CalendarProvider calendarProvider; private final CalendarProvider calendarProvider;
private PermissionChecker permissionChecker; private final PermissionChecker permissionChecker;
private final CalendarEventProvider calendarEventProvider;
private final ContentResolver cr; private final ContentResolver cr;
@Inject @Inject
public GCalHelper(@ForApplication Context context, TaskService taskService, Preferences preferences, public GCalHelper(@ForApplication Context context, TaskService taskService, Preferences preferences,
CalendarProvider calendarProvider, PermissionChecker permissionChecker) { CalendarProvider calendarProvider, PermissionChecker permissionChecker,
CalendarEventProvider calendarEventProvider) {
this.taskService = taskService; this.taskService = taskService;
this.preferences = preferences; this.preferences = preferences;
this.calendarProvider = calendarProvider; this.calendarProvider = calendarProvider;
this.permissionChecker = permissionChecker; this.permissionChecker = permissionChecker;
this.calendarEventProvider = calendarEventProvider;
cr = context.getContentResolver(); cr = context.getContentResolver();
} }
@ -132,16 +136,17 @@ public class GCalHelper {
} }
Uri eventUri = Uri.parse(taskUri); Uri eventUri = Uri.parse(taskUri);
AndroidCalendar calendar = calendarProvider.getCalendar(eventUri);
if (calendar == null) { // Bail out, no calendar id
task.setCalendarUri(""); //$NON-NLS-1$
} else {
ContentValues cv = new ContentValues();
cv.put(CalendarContract.Events.CALENDAR_ID, calendar.getId());
Uri uri = createTaskEvent(task, cv, false); AndroidCalendarEvent event = calendarEventProvider.getEvent(eventUri);
task.setCalendarUri(uri.toString()); if (event == null) {
task.setCalendarUri("");
return;
} }
ContentValues cv = new ContentValues();
cv.put(CalendarContract.Events.CALENDAR_ID, event.getCalendarId());
Uri uri = createTaskEvent(task, cv, false);
task.setCalendarUri(uri.toString());
} }
public boolean deleteTaskEvent(Task task) { public boolean deleteTaskEvent(Task task) {

@ -8,13 +8,15 @@ public class AndroidCalendarEvent {
private final String title; private final String title;
private final long start; private final long start;
private final long end; private final long end;
private final int calendarId;
private final List<AndroidCalendarEventAttendee> attendees; private final List<AndroidCalendarEventAttendee> attendees;
public AndroidCalendarEvent(long id, String title, long start, long end, List<AndroidCalendarEventAttendee> attendees) { public AndroidCalendarEvent(long id, String title, long start, long end, int calendarId, List<AndroidCalendarEventAttendee> attendees) {
this.id = id; this.id = id;
this.title = title; this.title = title;
this.start = start; this.start = start;
this.end = end; this.end = end;
this.calendarId = calendarId;
this.attendees = attendees; this.attendees = attendees;
} }
@ -34,6 +36,10 @@ public class AndroidCalendarEvent {
return end; return end;
} }
public int getCalendarId() {
return calendarId;
}
public List<AndroidCalendarEventAttendee> getAttendees() { public List<AndroidCalendarEventAttendee> getAttendees() {
return attendees; return attendees;
} }
@ -45,6 +51,7 @@ public class AndroidCalendarEvent {
", title='" + title + '\'' + ", title='" + title + '\'' +
", start=" + start + ", start=" + start +
", end=" + end + ", end=" + end +
", calendarId=" + calendarId +
", attendees=" + attendees + ", attendees=" + attendees +
'}'; '}';
} }

@ -26,7 +26,8 @@ public class CalendarEventProvider {
_ID, _ID,
CalendarContract.Events.DTSTART, CalendarContract.Events.DTSTART,
CalendarContract.Events.DTEND, CalendarContract.Events.DTEND,
CalendarContract.Events.TITLE CalendarContract.Events.TITLE,
CalendarContract.Events.CALENDAR_ID
}; };
private final ContentResolver contentResolver; private final ContentResolver contentResolver;
@ -48,6 +49,12 @@ public class CalendarEventProvider {
return events.isEmpty() ? null : events.get(0); return events.isEmpty() ? null : events.get(0);
} }
@Nullable
public AndroidCalendarEvent getEvent(Uri eventUri) {
List<AndroidCalendarEvent> events = getCalendarEvents(eventUri, null, null);
return events.isEmpty() ? null : events.get(0);
}
public List<AndroidCalendarEvent> getEventsBetween(long start, long end) { public List<AndroidCalendarEvent> getEventsBetween(long start, long end) {
return getCalendarEvents( return getCalendarEvents(
CalendarContract.Events.CONTENT_URI, CalendarContract.Events.CONTENT_URI,
@ -69,6 +76,7 @@ public class CalendarEventProvider {
int startIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTSTART); int startIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTSTART);
int endIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTEND); int endIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTEND);
int titleIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.TITLE); int titleIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.TITLE);
int calendarIdIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.CALENDAR_ID);
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
long id = cursor.getLong(idIndex); long id = cursor.getLong(idIndex);
events.add(new AndroidCalendarEvent( events.add(new AndroidCalendarEvent(
@ -76,6 +84,7 @@ public class CalendarEventProvider {
cursor.getString(titleIndex), cursor.getString(titleIndex),
cursor.getLong(startIndex), cursor.getLong(startIndex),
cursor.getLong(endIndex), cursor.getLong(endIndex),
cursor.getInt(calendarIdIndex),
calendarEventAttendeeProvider.getAttendees(id))); calendarEventAttendeeProvider.getAttendees(id)));
} }
} }

Loading…
Cancel
Save