186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/*
286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Copyright (C) 2014 The Android Open Source Project
386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * in compliance with the License. You may obtain a copy of the License at
686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * http://www.apache.org/licenses/LICENSE-2.0
886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Unless required by applicable law or agreed to in writing, software distributed under the License
1086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
1186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * or implied. See the License for the specific language governing permissions and limitations under
1286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * the License.
1386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
1486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
15ad31f63f5843898de645f6ee1ac244c872ded8ccRobert Hahnpackage android.support.v17.leanback.supportleanbackshowcase.models;
1686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
1786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.content.Context;
1886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.graphics.Color;
1986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.util.Log;
2086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport com.google.gson.annotations.SerializedName;
2286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport java.net.URI;
2486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport java.net.URISyntaxException;
2586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/**
2786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * This is a generic example of a custom data object, containing info we might want to keep with
2886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * each card on the home screen
2986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
3086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpublic class Card {
3186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("title") private String mTitle = "";
3386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("description") private String mDescription = "";
3486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("extraText") private String mExtraText = "";
3586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("imageUrl") private String mImageUrl;
3686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("footerColor") private String mFooterColor = null;
3786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("selectedColor") private String mSelectedColor = null;
3886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("localImageResource") private String mLocalImageResource = null;
3986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("footerIconLocalImageResource") private String mFooterResource = null;
4086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("type") private Card.Type mType;
4186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("id") private int mId;
4286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("width") private int mWidth;
4386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @SerializedName("height") private int mHeight;
4486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
4586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getTitle() {
4686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mTitle;
4786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
4886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
4986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getWidth() {
5086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mWidth;
5186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
5286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
5386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getHeight() {
5486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mHeight;
5586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
5686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
5786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getId() {
5886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mId;
5986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
6086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
6186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public Card.Type getType() {
6286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mType;
6386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
6486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
6586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getDescription() {
6686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mDescription;
6786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
6886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
6986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getExtraText() {
7086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mExtraText;
7186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
7286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
7386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getFooterColor() {
7486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        if (mFooterColor == null) return -1;
7586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return Color.parseColor(mFooterColor);
7686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
7786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
7886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getSelectedColor() {
7986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        if (mSelectedColor == null) return -1;
8086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return Color.parseColor(mSelectedColor);
8186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
8286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
8386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getImageUrl() {
8486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mImageUrl;
8586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
8686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
8786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public URI getImageURI() {
8886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        if (getImageUrl() == null) return null;
8986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        try {
9086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            return new URI(getImageUrl());
9186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        } catch (URISyntaxException e) {
9286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            Log.d("URI exception: ", getImageUrl());
9386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            return null;
9486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        }
9586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
9686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
9786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public int getLocalImageResourceId(Context context) {
9886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return context.getResources().getIdentifier(getLocalImageResourceName(), "drawable",
9986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                                                    context.getPackageName());
10086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
10186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
10286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getLocalImageResourceName() {
10386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mLocalImageResource;
10486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
10586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
10686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public String getFooterLocalImageResourceName() {
10786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return mFooterResource;
10886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
10986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
11086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public enum Type {
11186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
11231475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        MOVIE_COMPLETE,
11331475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        MOVIE,
11431475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        MOVIE_BASE,
11586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        ICON,
11686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        SQUARE_BIG,
11731475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        SINGLE_LINE,
11831475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        GAME,
11986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        SQUARE_SMALL,
12086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        DEFAULT,
12186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        SIDE_INFO,
12286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        SIDE_INFO_TEST_1,
12386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        TEXT,
12486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        CHARACTER,
12586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        GRID_SQUARE
12686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
12786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
12886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
12986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn}
130