/******************************************************************************* * This file is part of RedReader. * * RedReader is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * RedReader is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with RedReader. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package org.quantumbadger.redreader.reddit.things; import android.os.Parcel; import android.os.Parcelable; public final class RedditPost implements Parcelable, RedditThingWithIdAndType { public String id, name; public String title, url, author, domain, subreddit, subreddit_id; public int num_comments, score, ups, downs; public boolean archived, over_18, hidden, saved, is_self, clicked, stickied; public Object edited; public Boolean likes; public Boolean spoiler; public long created, created_utc; public String selftext, permalink, link_flair_text, author_flair_text; public String thumbnail; // an image URL public RedditPost() {} // one of the many reasons why the Android API is awful private RedditPost(final Parcel in) { id = in.readString(); name = in.readString(); title = in.readString(); url = in.readString(); author = in.readString(); domain = in.readString(); subreddit = in.readString(); subreddit_id = in.readString(); num_comments = in.readInt(); score = in.readInt(); ups = in.readInt(); downs = in.readInt(); archived = in.readInt() == 1; over_18 = in.readInt() == 1; hidden = in.readInt() == 1; saved = in.readInt() == 1; is_self = in.readInt() == 1; clicked = in.readInt() == 1; stickied = in.readInt() == 1; final long in_edited = in.readLong(); if(in_edited == -1) { edited = false; } else { edited = in_edited; } switch(in.readInt()) { case -1: likes = false; break; case 0: likes = null; break; case 1: likes = true; break; } created = in.readLong(); created_utc = in.readLong(); selftext = in.readString(); permalink = in.readString(); link_flair_text = in.readString(); author_flair_text = in.readString(); thumbnail = in.readString(); switch(in.readInt()) { case -1: spoiler = false; break; case 0: spoiler = null; break; case 1: spoiler = true; break; } } public int describeContents() { return 0; } public void writeToParcel(final Parcel parcel, final int flags) { parcel.writeString(id); parcel.writeString(name); parcel.writeString(title); parcel.writeString(url); parcel.writeString(author); parcel.writeString(domain); parcel.writeString(subreddit); parcel.writeString(subreddit_id); parcel.writeInt(num_comments); parcel.writeInt(score); parcel.writeInt(ups); parcel.writeInt(downs); parcel.writeInt(archived ? 1 : 0); parcel.writeInt(over_18 ? 1 : 0); parcel.writeInt(hidden ? 1 : 0); parcel.writeInt(saved ? 1 : 0); parcel.writeInt(is_self ? 1 : 0); parcel.writeInt(clicked ? 1 : 0); parcel.writeInt(stickied ? 1 : 0); if(edited instanceof Long) { parcel.writeLong((Long)edited); } else { parcel.writeLong(-1); } if(likes == null) { parcel.writeInt(0); } else { parcel.writeInt(likes ? 1 : -1); } parcel.writeLong(created); parcel.writeLong(created_utc); parcel.writeString(selftext); parcel.writeString(permalink); parcel.writeString(link_flair_text); parcel.writeString(author_flair_text); parcel.writeString(thumbnail); if(spoiler == null) { parcel.writeInt(0); } else { parcel.writeInt(spoiler ? 1 : -1); } } public static final Parcelable.Creator<RedditPost> CREATOR = new Parcelable.Creator<RedditPost>() { public RedditPost createFromParcel(final Parcel in) { return new RedditPost(in); } public RedditPost[] newArray(final int size) { return new RedditPost[size]; } }; @Override public String getIdAlone() { return id; } @Override public String getIdAndType() { return name; } }