package com.morristaedt.mirror.modules;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.os.AsyncTask;
import android.provider.CalendarContract;
import android.text.TextUtils;
import android.util.Log;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* Created by alex on 12/09/15.
*/
public class CalendarModule {
public interface CalendarListener {
void onCalendarUpdate(String title, String details);
}
public static void getCalendarEvents(final Context context, final CalendarListener calendarListener) {
new AsyncTask<Void, Void, Void>() {
String title = null;
String details = null;
@Override
protected void onPostExecute(Void aVoid) {
calendarListener.onCalendarUpdate(title, details);
}
@Override
protected Void doInBackground(Void... params) {
Cursor cursor;
ContentResolver contentResolver = context.getContentResolver();
final String[] colsToQuery = new String[]{
CalendarContract.EventsEntity.TITLE,
CalendarContract.EventsEntity.DTSTART,
CalendarContract.EventsEntity.DTEND,
CalendarContract.EventsEntity.EVENT_LOCATION};
Calendar now = Calendar.getInstance();
SimpleDateFormat startFormat = new SimpleDateFormat("dd/MM/yy");
String dateString = startFormat.format(now.getTime());
long start = now.getTimeInMillis();
SimpleDateFormat endFormat = new SimpleDateFormat("hh:mm:ss dd/MM/yy");
Calendar endOfDay = Calendar.getInstance();
Date endofDayDate;
try {
endofDayDate = endFormat.parse("23:59:59 " + dateString);
endOfDay.setTime(endofDayDate);
} catch (ParseException e) {
Log.e("CalendarModule", e.toString());
}
cursor = contentResolver.query(CalendarContract.Events.CONTENT_URI, colsToQuery,
"( dtstart >" + start + ") and (dtend <" + endOfDay.getTimeInMillis() + ")",
null, "dtstart ASC");
if (cursor != null) {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
title = cursor.getString(0);
Calendar startTime = Calendar.getInstance();
startTime.setTimeInMillis(cursor.getLong(1));
Calendar endTime = Calendar.getInstance();
endTime.setTimeInMillis(cursor.getLong(2));
DateFormat formatter = SimpleDateFormat.getTimeInstance(DateFormat.SHORT);
details = formatter.format(startTime.getTime()) + " - " + formatter.format(endTime.getTime());
if (!TextUtils.isEmpty(cursor.getString(3))) {
details += " ~ " + cursor.getString(3);
}
}
cursor.close();
}
return null;
}
}.execute();
}
}