Minor refactor

pull/14/head
Sam Bosley 13 years ago
parent c3d11e8abe
commit 90351cd75e

@ -38,7 +38,6 @@ public class CalendarAlarmReceiver extends BroadcastReceiver {
if (!Preferences.getBoolean(R.string.p_calendar_reminders, true)) if (!Preferences.getBoolean(R.string.p_calendar_reminders, true))
return; return;
try { try {
ContentResolver cr = context.getContentResolver();
Uri data = intent.getData(); Uri data = intent.getData();
if (data == null) if (data == null)
return; return;
@ -51,83 +50,89 @@ public class CalendarAlarmReceiver extends BroadcastReceiver {
long eventId = Long.parseLong(uriString.substring(pathIndex)); long eventId = Long.parseLong(uriString.substring(pathIndex));
boolean fromPostpone = CalendarAlarmScheduler.URI_PREFIX_POSTPONE.equals(data.getScheme()); boolean fromPostpone = CalendarAlarmScheduler.URI_PREFIX_POSTPONE.equals(data.getScheme());
if (eventId > 0) { if (eventId > 0) {
Uri eventUri = Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS); showCalReminder(context, eventId, fromPostpone);
}
String[] eventArg = new String[] { Long.toString(eventId) }; } catch (IllegalArgumentException e) { // Some cursor read failed, or badly formed uri
Cursor event = cr.query(eventUri, e.printStackTrace();
EVENTS_PROJECTION, }
Calendars.ID_COLUMN_NAME + " = ?", }
eventArg,
null); private void showCalReminder(Context context,
try { long eventId, boolean fromPostpone) {
if (event.moveToFirst()) { ContentResolver cr = context.getContentResolver();
int dtstartIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_DTSTART_COL); Uri eventUri = Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS);
int dtendIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_DTEND_COL);
int titleIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_NAME_COL); String[] eventArg = new String[] { Long.toString(eventId) };
Cursor event = cr.query(eventUri,
String title = event.getString(titleIndex); EVENTS_PROJECTION,
long startTime = event.getLong(dtstartIndex); Calendars.ID_COLUMN_NAME + " = ?",
long endTime = event.getLong(dtendIndex); eventArg,
null);
boolean shouldShowReminder; try {
if (fromPostpone) { if (event.moveToFirst()) {
long timeAfter = DateUtilities.now() - endTime; int dtstartIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_DTSTART_COL);
shouldShowReminder = (timeAfter > DateUtilities.ONE_MINUTE * 2); int dtendIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_DTEND_COL);
} else { int titleIndex = event.getColumnIndexOrThrow(Calendars.EVENTS_NAME_COL);
long timeUntil = startTime - DateUtilities.now();
shouldShowReminder = (timeUntil > 0 && timeUntil < DateUtilities.ONE_MINUTE * 20); String title = event.getString(titleIndex);
} long startTime = event.getLong(dtstartIndex);
long endTime = event.getLong(dtendIndex);
boolean shouldShowReminder;
if (fromPostpone) {
long timeAfter = DateUtilities.now() - endTime;
shouldShowReminder = (timeAfter > DateUtilities.ONE_MINUTE * 2);
} else {
long timeUntil = startTime - DateUtilities.now();
shouldShowReminder = (timeUntil > 0 && timeUntil < DateUtilities.ONE_MINUTE * 20);
}
if (shouldShowReminder) { if (shouldShowReminder) {
// Get attendees // Get attendees
Cursor attendees = cr.query(Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_ATTENDEES), Cursor attendees = cr.query(Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_ATTENDEES),
ATTENDEES_PROJECTION, ATTENDEES_PROJECTION,
Calendars.ATTENDEES_EVENT_ID_COL + " = ? ", Calendars.ATTENDEES_EVENT_ID_COL + " = ? ",
eventArg, eventArg,
null); null);
try { try {
// Do something with attendees // Do something with attendees
int emailIndex = attendees.getColumnIndexOrThrow(Calendars.ATTENDEES_EMAIL_COL); int emailIndex = attendees.getColumnIndexOrThrow(Calendars.ATTENDEES_EMAIL_COL);
int nameIndex = attendees.getColumnIndexOrThrow(Calendars.ATTENDEES_NAME_COL); int nameIndex = attendees.getColumnIndexOrThrow(Calendars.ATTENDEES_NAME_COL);
ArrayList<String> names = new ArrayList<String>(); ArrayList<String> names = new ArrayList<String>();
ArrayList<String> emails = new ArrayList<String>(); ArrayList<String> emails = new ArrayList<String>();
for (attendees.moveToFirst(); !attendees.isAfterLast(); attendees.moveToNext()) { for (attendees.moveToFirst(); !attendees.isAfterLast(); attendees.moveToNext()) {
String name = attendees.getString(nameIndex); String name = attendees.getString(nameIndex);
String email = attendees.getString(emailIndex); String email = attendees.getString(emailIndex);
if (!TextUtils.isEmpty(email)) { if (!TextUtils.isEmpty(email)) {
if (Constants.DEBUG) if (Constants.DEBUG)
Log.w(CalendarAlarmScheduler.TAG, "Attendee: " + name + ", email: " + email); Log.w(CalendarAlarmScheduler.TAG, "Attendee: " + name + ", email: " + email);
names.add(name); names.add(name);
emails.add(email); emails.add(email);
}
}
if (emails.size() > 0) {
Intent reminderActivity = new Intent(context, CalendarReminderActivity.class);
reminderActivity.putStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES, names);
reminderActivity.putStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS, emails);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_ID, eventId);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_NAME, title);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_START_TIME, startTime);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_END_TIME, endTime);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_FROM_POSTPONE, fromPostpone);
reminderActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
context.startActivity(reminderActivity);
}
} finally {
attendees.close();
} }
} }
if (emails.size() > 0) {
Intent reminderActivity = new Intent(context, CalendarReminderActivity.class);
reminderActivity.putStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES, names);
reminderActivity.putStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS, emails);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_ID, eventId);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_NAME, title);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_START_TIME, startTime);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_EVENT_END_TIME, endTime);
reminderActivity.putExtra(CalendarReminderActivity.TOKEN_FROM_POSTPONE, fromPostpone);
reminderActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
context.startActivity(reminderActivity);
}
} finally {
attendees.close();
} }
} finally {
event.close();
} }
} }
} catch (IllegalArgumentException e) { // Some cursor read failed, or badly formed uri } finally {
e.printStackTrace(); event.close();
} }
} }

Loading…
Cancel
Save