package ro.ieval.unical;
+import java.util.ArrayList;
+
+import android.content.ContentResolver;
+import android.content.Context;
import android.database.Cursor;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.BaseColumns;
+import android.provider.CalendarContract.Events;
+
+final class Event implements Parcelable{
+ public static final Parcelable.Creator<Event> CREATOR = new Parcelable.Creator<Event>() {
+ @Override
+ public Event createFromParcel(final Parcel source) {
+ return new Event(source.readLong(), source.readString(), source.readString(), source.readString(), source.readString(), source.readInt(), source.readLong(), source.readLong(), source.readLong());
+ }
+
+ @Override
+ public Event[] newArray(final int size) {
+ return new Event[size];
+ }
+ };
+
+ private static final String[] PROJECTION = {
+ BaseColumns._ID,
+ Events.ORGANIZER,
+ Events.TITLE,
+ Events.EVENT_LOCATION,
+ Events.DESCRIPTION,
+ Events.EVENT_COLOR,
+ Events.DTSTART,
+ Events.DTEND,
+ Events.CALENDAR_ID,
+ };
+
+ /** Event ID */
+ public final long _id;
+ /** Event owner */
+ public final String organizer;
+ /** Event title */
+ public final String title;
+ /** Event location */
+ public final String eventLocation;
+ /** Event description */
+ public final String description;
+ /** Event colour */
+ public final int eventColour;
+ /** Event start time (UTC milliseconds since epoch) */
+ public final long dtstart;
+ /** Event end time (UTC milliseconds since epoch) */
+ public final long dtend;
+ /** Calendar ID */
+ public final long calendarID;
+
+ public Event(final long _id, final String organizer, final String title, final String eventLocation, final String description, final int eventColor, final long dtstart, final long dtend, final long calendarID) {
+ this._id=_id;
+ this.organizer=organizer;
+ this.title=title;
+ this.eventLocation=eventLocation;
+ this.description=description;
+ this.eventColour=eventColor;
+ this.dtstart=dtstart;
+ this.dtend=dtend;
+ this.calendarID=calendarID;
+ }
-public class Event {
- public String _id;
- public int date,duration;
- public boolean repeat;
- public int repeatInterval;
- public String location;
- public String description;
- public String tags[];
- public String title;
- Event(Cursor cursor) {
- _id=cursor.getString(0);
- title=cursor.getString(1);
- description=cursor.getString(2);
- date=cursor.getInt(3);
- duration=cursor.getInt(4);
- if(cursor.getInt(5)==1) repeat=true;
- else repeat=false;
- repeatInterval=cursor.getInt(6);
- location=cursor.getString(7);
+ public static Event[] getEventsByCalendar(final Context context, final Calendar calendar, final String sort){
+ final ContentResolver cr=context.getContentResolver();
+ final Cursor cursor = cr.query(Events.CONTENT_URI,
+ PROJECTION,
+ Events.CALENDAR_ID+" = ?",
+ new String[]{Long.toString(calendar._id)},
+ sort);
+ cursor.moveToFirst();
+ final Event[] events = new Event[cursor.getCount()];
+ for(int i=0;i<events.length;i++){
+ int colour=cursor.getInt(5);
+ colour=colour == 0 ? calendar.colour : colour;
+ events[i]=new Event(cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), colour, cursor.getLong(6), cursor.getLong(7), cursor.getLong(8));
+ cursor.moveToNext();
+ }
+ cursor.close();
+ return events;
}
- Event () {
-
+
+ public static Event[] getAllEvents(final Context context) {
+ final ArrayList<Event> r = new ArrayList<Event>();
+ for(final Calendar calendar : Calendar.getAllCalendars(context))
+ for(final Event event : getEventsByCalendar(context, calendar, null))
+ r.add(event);
+ return r.toArray(new Event[r.size()]);
+ }
+
+ public void delete(final Context context){
+ final ContentResolver cr=context.getContentResolver();
+ cr.delete(Uri.withAppendedPath(Events.CONTENT_URI, Long.toString(_id)), null, null);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(final Parcel dest, final int flags) {
+ dest.writeLong(_id);
+ dest.writeString(organizer);
+ dest.writeString(title);
+ dest.writeString(eventLocation);
+ dest.writeString(description);
+ dest.writeInt(eventColour);
+ dest.writeLong(dtstart);
+ dest.writeLong(dtend);
+ dest.writeLong(calendarID);
}
}