package de.tum.in.tumcampusapp.auxiliary.calendar;
import android.Manifest;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Calendars;
import android.support.v4.content.ContextCompat;
/**
* Helper class for exporting to Google Calendar.
*/
public final class CalendarHelper {
private static final String ACCOUNT_NAME = "TUM_Campus_APP";
private static final String CALENDAR_NAME = "TUM Campus";
/**
* Gets uri query to insert calendar TUM_Campus_APP to google calendar
*
* @param c Context
* @return Uri for insertion
*/
public static Uri addCalendar(Context c) {
final ContentValues cv = buildContentValues();
return c.getContentResolver().insert(buildCalUri(), cv);
}
/**
* Deletes the calendar TUM_Campus_APP from google calendar
*
* @param c Context
* @return Number of rows deleted
*/
public static int deleteCalendar(Context c) {
if (ContextCompat.checkSelfPermission(c, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
return 0;
}
final Uri uri = CalendarContract.Calendars.CONTENT_URI;
return c.getContentResolver().delete(uri, " account_name = '" + ACCOUNT_NAME + '\'', null);
}
private static Uri buildCalUri() {
return CalendarContract.Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL).build();
}
private static ContentValues buildContentValues() {
final int colorCalendar = 0x0066CC;
final String intName = ACCOUNT_NAME + CALENDAR_NAME;
final ContentValues cv = new ContentValues();
cv.put(Calendars.ACCOUNT_NAME, ACCOUNT_NAME);
cv.put(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
cv.put(Calendars.NAME, intName);
cv.put(Calendars.CALENDAR_DISPLAY_NAME, CALENDAR_NAME);
cv.put(Calendars.CALENDAR_COLOR, colorCalendar);
cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
cv.put(Calendars.OWNER_ACCOUNT, ACCOUNT_NAME);
cv.put(Calendars.VISIBLE, 1);
cv.put(Calendars.SYNC_EVENTS, 1);
return cv;
}
private CalendarHelper() {
// CalendarHelper is a utility class
}
}