package org.gdg.frisbee.android.eventseries; import android.content.Context; import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.annotation.StyleRes; import android.view.ContextThemeWrapper; import org.gdg.frisbee.android.R; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; public class TaggedEventSeries implements Parcelable { public static final Parcelable.Creator<TaggedEventSeries> CREATOR = new Parcelable.Creator<TaggedEventSeries>() { public TaggedEventSeries createFromParcel(Parcel source) { return new TaggedEventSeries(source); } public TaggedEventSeries[] newArray(int size) { return new TaggedEventSeries[size]; } }; private String mTag; @DrawableRes private int mDrawerIconResId; @StringRes private int mTitleResId; @StringRes private int mDescriptionResId; @DrawableRes private int mDefaultIconResId; @DrawableRes private int mLogoResId; @StyleRes private int mSpecialEventTheme; private int mDrawerId; @StringRes private int mGreetingsResId; @StringRes private int mGreetingsTitleResId; private DateTime mStartDate; private DateTime mEndDateIn; public TaggedEventSeries(Context context, @StyleRes int specialEventTheme, @NonNull String tag, int drawerId, DateTime startDate, DateTime endDate) { final ContextThemeWrapper themeWrapper = new ContextThemeWrapper(context, specialEventTheme); final TypedArray a = themeWrapper.obtainStyledAttributes(R.styleable.SpecialEvent); mDrawerIconResId = a.getResourceId(R.styleable.SpecialEvent_specialEventDrawerIcon, R.drawable.ic_drawer_ioextended); mDefaultIconResId = a.getResourceId(R.styleable.SpecialEvent_specialEventDefaultIcon, R.drawable.ic_ioextended); mLogoResId = a.getResourceId(R.styleable.SpecialEvent_specialEventLogo, R.drawable.ic_logo_ioextended); mTitleResId = a.getResourceId(R.styleable.SpecialEvent_specialEventTitle, R.string.ioextended); mDescriptionResId = a.getResourceId(R.styleable.SpecialEvent_specialEventDescription, R.string.ioextended_description); mGreetingsResId = a.getResourceId(R.styleable.SpecialEvent_specialEventGreetings, R.string.event_series_greetings); mGreetingsTitleResId = a.getResourceId(R.styleable.SpecialEvent_specialEventGreetingsTitle, R.string.title_event_series_greetings); a.recycle(); mTag = tag; mSpecialEventTheme = specialEventTheme; mStartDate = startDate; mEndDateIn = endDate; mDrawerId = drawerId; } private TaggedEventSeries(Parcel in) { mTag = in.readString(); mDrawerIconResId = in.readInt(); mTitleResId = in.readInt(); mDescriptionResId = in.readInt(); mDefaultIconResId = in.readInt(); mLogoResId = in.readInt(); mSpecialEventTheme = in.readInt(); mDrawerId = in.readInt(); mGreetingsResId = in.readInt(); mGreetingsTitleResId = in.readInt(); mStartDate = new DateTime(in.readLong(), DateTimeZone.UTC); mEndDateIn = new DateTime(in.readLong(), DateTimeZone.UTC); } public String getTag() { return mTag; } public int getDrawerIconResId() { return mDrawerIconResId; } public int getTitleResId() { return mTitleResId; } public int getDescriptionResId() { return mDescriptionResId; } public int getDefaultIconResId() { return mDefaultIconResId; } public int getLogoResId() { return mLogoResId; } public int getSpecialEventTheme() { return mSpecialEventTheme; } public int getDrawerId() { return mDrawerId; } public int getGreetingsResId() { return mGreetingsResId; } public int getGreetingsTitleResId() { return mGreetingsTitleResId; } public DateTime getStartDate() { return mStartDate; } public DateTime getEndDate() { return mEndDateIn; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mTag); dest.writeInt(mDrawerIconResId); dest.writeInt(mTitleResId); dest.writeInt(mDescriptionResId); dest.writeInt(mDefaultIconResId); dest.writeInt(mLogoResId); dest.writeInt(mSpecialEventTheme); dest.writeInt(mDrawerId); dest.writeInt(mGreetingsResId); dest.writeInt(mGreetingsTitleResId); dest.writeLong(mStartDate.getMillis()); dest.writeLong(mEndDateIn.getMillis()); } }