com.nttec.everychan.ui.gallery.GalleryInitResult.java Source code

Java tutorial

Introduction

Here is the source code for com.nttec.everychan.ui.gallery.GalleryInitResult.java

Source

/*
 * Everychan Android (Meta Imageboard Client)
 * Copyright (C) 2014-2016  miku-nyan <https://github.com/miku-nyan>
 *     
 * This program 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.
 * 
 * This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.nttec.everychan.ui.gallery;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.tuple.Triple;

import android.os.Parcel;
import android.os.Parcelable;
import com.nttec.everychan.api.models.AttachmentModel;

public class GalleryInitResult implements Parcelable {
    public List<Triple<AttachmentModel, String, String>> attachments;
    public int initPosition;
    public boolean shouldWaitForPageLoaded;

    public GalleryInitResult() {
    }

    public GalleryInitResult(Parcel parcel) {
        initPosition = parcel.readInt();
        shouldWaitForPageLoaded = parcel.readInt() == 1;
        int n = parcel.readInt();
        attachments = new ArrayList<>(n);
        for (int i = 0; i < n; ++i) {
            AttachmentModel attachment = new AttachmentModel();
            attachment.type = parcel.readInt();
            attachment.size = parcel.readInt();
            attachment.thumbnail = parcel.readString();
            attachment.path = parcel.readString();
            attachment.width = parcel.readInt();
            attachment.height = parcel.readInt();
            attachment.originalName = parcel.readString();
            attachment.isSpoiler = parcel.readInt() == 1;
            String hash = parcel.readString();
            String post = parcel.readString();
            attachments.add(Triple.of(attachment, hash, post));
        }
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(initPosition);
        dest.writeInt(shouldWaitForPageLoaded ? 1 : 0);
        dest.writeInt(attachments.size());
        for (Triple<AttachmentModel, String, String> tuple : attachments) {
            AttachmentModel attachment = tuple.getLeft();
            dest.writeInt(attachment.type);
            dest.writeInt(attachment.size);
            dest.writeString(attachment.thumbnail);
            dest.writeString(attachment.path);
            dest.writeInt(attachment.width);
            dest.writeInt(attachment.height);
            dest.writeString(attachment.originalName);
            dest.writeInt(attachment.isSpoiler ? 1 : 0);
            dest.writeString(tuple.getMiddle());
            dest.writeString(tuple.getRight());
        }
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public int getParcelSize() {
        int total = 12;
        for (Triple<AttachmentModel, String, String> tuple : attachments) {
            total += 40;
            AttachmentModel attachment = tuple.getLeft();
            String hash = tuple.getMiddle();
            String post = tuple.getRight();
            if (attachment.thumbnail != null)
                total += attachment.thumbnail.length() * 2;
            if (attachment.path != null)
                total += attachment.path.length() * 2;
            if (attachment.originalName != null)
                total += attachment.originalName.length() * 2;
            if (hash != null)
                total += hash.length() * 2;
            if (post != null)
                total += post.length() * 2;
        }
        return total;
    }

    public static final Parcelable.Creator<GalleryInitResult> CREATOR = new Parcelable.Creator<GalleryInitResult>() {
        @Override
        public GalleryInitResult createFromParcel(Parcel source) {
            return new GalleryInitResult(source);
        }

        @Override
        public GalleryInitResult[] newArray(int size) {
            return new GalleryInitResult[size];
        }
    };

}