Misc calendar cleanup

pull/384/head
Alex Baker 10 years ago
parent 341090e2d1
commit 0b807503db

@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import com.google.common.base.Predicate;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
@ -16,14 +17,13 @@ import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.scheduling.CalendarNotificationIntentService; import org.tasks.scheduling.CalendarNotificationIntentService;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import timber.log.Timber; import timber.log.Timber;
import static com.google.common.base.Strings.isNullOrEmpty; import static com.google.common.collect.Iterables.any;
public class CalendarAlarmReceiver extends InjectingBroadcastReceiver { public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
@ -71,6 +71,7 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
if (event == null) { if (event == null) {
return; return;
} }
boolean shouldShowReminder; boolean shouldShowReminder;
if (fromPostpone) { if (fromPostpone) {
long timeAfter = DateUtilities.now() - event.getEnd(); long timeAfter = DateUtilities.now() - event.getEnd();
@ -80,29 +81,28 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
shouldShowReminder = (timeUntil > 0 && timeUntil < DateUtilities.ONE_MINUTE * 20); shouldShowReminder = (timeUntil > 0 && timeUntil < DateUtilities.ONE_MINUTE * 20);
} }
if (shouldShowReminder) { if (shouldShowReminder && isMeeting(event)) {
final List<String> emails = new ArrayList<>(); context.startActivity(new Intent(context, CalendarReminderActivity.class) {{
List<String> phoneAccounts = accountManager.getAccounts(); putExtra(CalendarReminderActivity.TOKEN_EVENT_ID, eventId);
boolean includesMe = false; putExtra(CalendarReminderActivity.TOKEN_EVENT_NAME, event.getTitle());
for (AndroidCalendarEventAttendee attendee : event.getAttendees()) { putExtra(CalendarReminderActivity.TOKEN_EVENT_END_TIME, event.getEnd());
String email = attendee.getEmail(); putExtra(CalendarReminderActivity.TOKEN_FROM_POSTPONE, fromPostpone);
if (!isNullOrEmpty(email)) { setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
if (phoneAccounts.contains(email)) { }});
includesMe = true;
continue;
}
emails.add(attendee.getEmail());
}
}
if (emails.size() > 0 && includesMe) {
context.startActivity(new Intent(context, CalendarReminderActivity.class) {{
putExtra(CalendarReminderActivity.TOKEN_EVENT_ID, eventId);
putExtra(CalendarReminderActivity.TOKEN_EVENT_NAME, event.getTitle());
putExtra(CalendarReminderActivity.TOKEN_EVENT_END_TIME, event.getEnd());
putExtra(CalendarReminderActivity.TOKEN_FROM_POSTPONE, fromPostpone);
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
}});
}
} }
} }
private boolean isMeeting(AndroidCalendarEvent event) {
List<AndroidCalendarEventAttendee> attendees = event.getAttendees();
if (attendees.size() < 2) {
return false;
}
final List<String> myAccounts = accountManager.getAccounts();
return any(attendees, new Predicate<AndroidCalendarEventAttendee>() {
@Override
public boolean apply(AndroidCalendarEventAttendee attendee) {
return myAccounts.contains(attendee.getEmail());
}
});
}
} }

@ -1,27 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.gcal;
import android.provider.CalendarContract;
import javax.inject.Singleton;
import static android.provider.BaseColumns._ID;
@Singleton
public class Calendars {
public static final String[] CALENDARS_PROJECTION = new String[] {
_ID,
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
};
// Only show calendars that the user can modify. Access level 500
// corresponds to Calendars.CONTRIBUTOR_ACCESS
public static final String CALENDARS_WHERE = CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + ">= 500";
public static final String CALENDARS_SORT = CalendarContract.Calendars.CALENDAR_DISPLAY_NAME + " ASC";
}
Loading…
Cancel
Save