package me.ji5.data; import android.database.Cursor; import android.os.Parcel; import android.os.Parcelable; import android.provider.CalendarContract; /** * Created by ohjongin on 14. 1. 2. */ public class GoogleCalendar implements Parcelable { public long mId; public String mName; public String mDisplayName; public int mColor; public boolean mSelected; public static String[] CALENDARS_PROJECTION = { CalendarContract.Calendars._ID, CalendarContract.Calendars.NAME, CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, CalendarContract.Calendars.CALENDAR_COLOR, CalendarContract.Calendars.VISIBLE }; public GoogleCalendar() { } public static GoogleCalendar getInstance(Cursor cursor) { GoogleCalendar cal = new GoogleCalendar(); try { cal.mId = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Calendars._ID)); cal.mName = cursor.getString(cursor.getColumnIndexOrThrow(CalendarContract.Calendars.NAME)); cal.mDisplayName = cursor.getString(1); // This is actually a better pattern: cal.mColor = cursor.getInt(cursor.getColumnIndex(CalendarContract.Calendars.CALENDAR_COLOR)); cal.mSelected = !cursor.getString(3).equals("0"); } catch (Exception e) { e.printStackTrace(); } return cal; } public String toString() { return mDisplayName; } public String toString(boolean debug) { if (!debug) return toString(); StringBuilder sb = new StringBuilder(); sb.append("id: " + mId + ", "); sb.append("name: " + mName + ", "); sb.append("display name: " + mDisplayName + ", "); sb.append("color: " + String.format("#%06X", 0xFFFFFF & mColor) + ", "); sb.append("selected: " + mSelected); return sb.toString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(this.mId); dest.writeString(this.mName); dest.writeString(this.mDisplayName); dest.writeInt(this.mColor); dest.writeByte(mSelected ? (byte) 1 : (byte) 0); dest.writeStringArray(this.CALENDARS_PROJECTION); } private GoogleCalendar(Parcel in) { this.mId = in.readLong(); this.mName = in.readString(); this.mDisplayName = in.readString(); this.mColor = in.readInt(); this.mSelected = in.readByte() != 0; this.CALENDARS_PROJECTION = in.createStringArray(); } public static Parcelable.Creator<GoogleCalendar> CREATOR = new Parcelable.Creator<GoogleCalendar>() { public GoogleCalendar createFromParcel(Parcel source) { return new GoogleCalendar(source); } public GoogleCalendar[] newArray(int size) { return new GoogleCalendar[size]; } }; }