//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
package com.vk.sdk.api.model;
import android.os.Parcel;
import android.os.Parcelable;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import static com.vk.sdk.api.model.VKAttachments.TYPE_ALBUM;
/**
* Describes a photo album
*/
@SuppressWarnings("unused")
public class VKApiPhotoAlbum extends VKAttachments.VKApiAttachment implements Parcelable, Identifiable {
/**
* URL for empty album cover with max width at 75px
*/
public final static String COVER_S = "http://vk.com/images/s_noalbum.png";
/**
* URL of empty album cover with max width at 130px
*/
public final static String COVER_M = "http://vk.com/images/m_noalbum.png";
/**
* URL of empty album cover with max width at 604px
*/
public final static String COVER_X = "http://vk.com/images/x_noalbum.png";
/**
* Album ID.
*/
public int id;
/**
* Album title.
*/
public String title;
/**
* Number of photos in the album.
*/
public int size;
/**
* Privacy settings for the album.
*/
public int privacy;
/**
* Album description.
*/
public String description;
/**
* ID of the user or community that owns the album.
*/
public int owner_id;
/**
* Whether a user can upload photos to this album(false — cannot, true — can).
*/
public boolean can_upload;
/**
* Date (in Unix time) the album was last updated.
*/
public long updated;
/**
* Album creation date (in Unix time).
*/
public long created;
/**
* ID of the photo which is the cover.
*/
public int thumb_id;
/**
* Link to album cover photo.
*/
public String thumb_src;
public String photo_604;
/**
* Links to to cover photo.
*/
public VKPhotoSizes photo = new VKPhotoSizes();
public VKApiPhotoAlbum(JSONObject from) throws JSONException
{
parse(from);
}
/**
* Creates a PhotoAlbum instance from JSONObject.
*/
public VKApiPhotoAlbum parse(JSONObject from) {
id = from.optInt("id");
thumb_id = from.optInt("thumb_id");
owner_id = from.optInt("owner_id");
title = from.optString("title");
description = from.optString("description");
created = from.optLong("created");
updated = from.optLong("updated");
size = from.optInt("size");
can_upload = ParseUtils.parseBoolean(from, "can_upload");
thumb_src = from.optString("thumb_src");
photo_604 = from.optJSONObject("thumb").optString("photo_604");
if(from.has("privacy")) {
privacy = from.optInt("privacy");
} else {
privacy = VKPrivacy.parsePrivacy(from.optJSONObject("privacy_view"));
}
JSONArray sizes = from.optJSONArray("sizes");
if(sizes != null) {
photo.fill(sizes);
} else {
photo.add(VKApiPhotoSize.create(COVER_S, 75, 55));
photo.add(VKApiPhotoSize.create(COVER_M, 130, 97));
photo.add(VKApiPhotoSize.create(COVER_X, 432, 249));
photo.sort();
}
return this;
}
/**
* Creates a PhotoAlbum instance from Parcel.
*/
public VKApiPhotoAlbum(Parcel in) {
this.id = in.readInt();
this.title = in.readString();
this.size = in.readInt();
this.privacy = in.readInt();
this.description = in.readString();
this.owner_id = in.readInt();
this.can_upload = in.readByte() != 0;
this.updated = in.readLong();
this.created = in.readLong();
this.thumb_id = in.readInt();
this.thumb_src = in.readString();
//this.photo_604 = in.readString();
this.photo = in.readParcelable(VKPhotoSizes.class.getClassLoader());
}
/**
* Creates empty PhotoAlbum instance.
*/
public VKApiPhotoAlbum() {
}
public boolean isClosed() {
return privacy != VKPrivacy.PRIVACY_ALL;
}
@Override
public int getId() {
return id;
}
@Override
public String toString() {
return title;
}
@Override
public CharSequence toAttachmentString() {
return new StringBuilder(TYPE_ALBUM).append(owner_id).append('_').append(id);
}
@Override
public String getType() {
return TYPE_ALBUM;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeString(this.title);
dest.writeInt(this.size);
dest.writeInt(this.privacy);
dest.writeString(this.description);
dest.writeInt(this.owner_id);
dest.writeByte(can_upload ? (byte) 1 : (byte) 0);
dest.writeLong(this.updated);
dest.writeLong(this.created);
dest.writeInt(this.thumb_id);
dest.writeString(this.thumb_src);
//dest.writeString(this.photo_604);
dest.writeParcelable(this.photo, flags);
}
public static Creator<VKApiPhotoAlbum> CREATOR = new Creator<VKApiPhotoAlbum>() {
public VKApiPhotoAlbum createFromParcel(Parcel source) {
return new VKApiPhotoAlbum(source);
}
public VKApiPhotoAlbum[] newArray(int size) {
return new VKApiPhotoAlbum[size];
}
};
}