Add calendar id to AndroidCalendarEvent

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

@ -18,7 +18,8 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
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.injection.ForApplication;
import org.tasks.preferences.PermissionChecker;
@ -38,16 +39,19 @@ public class GCalHelper {
private final TaskService taskService;
private final Preferences preferences;
private final CalendarProvider calendarProvider;
private PermissionChecker permissionChecker;
private final PermissionChecker permissionChecker;
private final CalendarEventProvider calendarEventProvider;
private final ContentResolver cr;
@Inject
public GCalHelper(@ForApplication Context context, TaskService taskService, Preferences preferences,
CalendarProvider calendarProvider, PermissionChecker permissionChecker) {
CalendarProvider calendarProvider, PermissionChecker permissionChecker,
CalendarEventProvider calendarEventProvider) {
this.taskService = taskService;
this.preferences = preferences;
this.calendarProvider = calendarProvider;
this.permissionChecker = permissionChecker;
this.calendarEventProvider = calendarEventProvider;
cr = context.getContentResolver();
}
@ -132,16 +136,17 @@ public class GCalHelper {
}
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);
task.setCalendarUri(uri.toString());
AndroidCalendarEvent event = calendarEventProvider.getEvent(eventUri);
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) {

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

@ -26,7 +26,8 @@ public class CalendarEventProvider {
_ID,
CalendarContract.Events.DTSTART,
CalendarContract.Events.DTEND,
CalendarContract.Events.TITLE
CalendarContract.Events.TITLE,
CalendarContract.Events.CALENDAR_ID
};
private final ContentResolver contentResolver;
@ -48,6 +49,12 @@ public class CalendarEventProvider {
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) {
return getCalendarEvents(
CalendarContract.Events.CONTENT_URI,
@ -69,6 +76,7 @@ public class CalendarEventProvider {
int startIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTSTART);
int endIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.DTEND);
int titleIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.TITLE);
int calendarIdIndex = cursor.getColumnIndexOrThrow(CalendarContract.Events.CALENDAR_ID);
while (cursor.moveToNext()) {
long id = cursor.getLong(idIndex);
events.add(new AndroidCalendarEvent(
@ -76,6 +84,7 @@ public class CalendarEventProvider {
cursor.getString(titleIndex),
cursor.getLong(startIndex),
cursor.getLong(endIndex),
cursor.getInt(calendarIdIndex),
calendarEventAttendeeProvider.getAttendees(id)));
}
}

Loading…
Cancel
Save