package com.plusonelabs.calendar;
import android.app.PendingIntent;
import android.content.ContentUris;
import android.content.Intent;
import android.net.Uri;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Events;
import com.plusonelabs.calendar.prefs.InstanceSettings;
import com.plusonelabs.calendar.util.PermissionsUtil;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
public class CalendarIntentUtil {
private static final String KEY_DETAIL_VIEW = "DETAIL_VIEW";
private static final String TIME = "time";
static Intent createOpenCalendarAtDayIntent(DateTime goToTime) {
Intent intent = createCalendarIntent();
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath(TIME);
if (goToTime.getMillis() != 0) {
intent.putExtra(KEY_DETAIL_VIEW, true);
ContentUris.appendId(builder, goToTime.getMillis());
}
intent.setData(builder.build());
return intent;
}
static PendingIntent createOpenCalendarEventPendingIntent(InstanceSettings settings) {
return PermissionsUtil.getPermittedPendingIntent(settings, createCalendarIntent());
}
static PendingIntent createOpenCalendarPendingIntent(InstanceSettings settings) {
return PermissionsUtil.getPermittedPendingIntent(settings,
createOpenCalendarAtDayIntent(new DateTime(settings.getTimeZone())));
}
public static Intent createCalendarIntent() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
return intent;
}
public static Intent createNewEventIntent(DateTimeZone timeZone) {
DateTime beginTime = new DateTime(timeZone).plusHours(1).withMinuteOfHour(0).withSecondOfMinute(0)
.withMillisOfSecond(0);
DateTime endTime = beginTime.plusHours(1);
return new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getMillis());
}
}