1a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn/*
2a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * Copyright (C) 2014 The Android Open Source Project
3a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn *
4a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * in compliance with the License. You may obtain a copy of the License at
6a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn *
7a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * http://www.apache.org/licenses/LICENSE-2.0
8a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn *
9a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * Unless required by applicable law or agreed to in writing, software distributed under the License
10a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * or implied. See the License for the specific language governing permissions and limitations under
12a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn * the License.
13a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn */
14a83005b70853ea52c5d98910762344de16b850a8Tim Kilbournpackage android.support.v17.leanback.widget;
15a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
16e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbournimport android.graphics.drawable.Drawable;
1770c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbournimport android.text.TextUtils;
18e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
19a83005b70853ea52c5d98910762344de16b850a8Tim Kilbournimport static android.support.v17.leanback.widget.ObjectAdapter.NO_ID;
20a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
21a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn/**
22e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn * An action that can be shown on a details page. It contains one or two lines
23e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn * of text and an optional image.
24a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn */
25a83005b70853ea52c5d98910762344de16b850a8Tim Kilbournpublic class Action {
26a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
27a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    private long mId = NO_ID;
28e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    private Drawable mIcon;
29e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    private CharSequence mLabel1;
30e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    private CharSequence mLabel2;
31a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
32beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn    /**
33beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Constructor for an Action.
34beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     *
35beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param id The id of the Action.
36beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     */
37a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    public Action(long id) {
38a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn        this(id, "");
39a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
40a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
41beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn    /**
42beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Constructor for an Action.
43beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     *
44beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param id The id of the Action.
45beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param label The label to display for the Action.
46beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     */
47a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    public Action(long id, CharSequence label) {
48e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        this(id, label, null);
49e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
50e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
51beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn    /**
52beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Constructor for an Action.
53beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     *
54beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param id The id of the Action.
55beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param label1 The label to display on the first line of the Action.
56beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param label2 The label to display on the second line of the Action.
57beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     */
58e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public Action(long id, CharSequence label1, CharSequence label2) {
59e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        this(id, label1, label2, null);
60e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
61e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
62beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn    /**
63beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Constructor for an Action.
64beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     *
65beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param id The id of the Action.
66beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param label1 The label to display on the first line of the Action.
67beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param label2 The label to display on the second line of the Action.
68beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * @param icon The icon to display for the Action.
69beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     */
70e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public Action(long id, CharSequence label1, CharSequence label2, Drawable icon) {
71a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn        setId(id);
72e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        setLabel1(label1);
73e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        setLabel2(label2);
74e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        setIcon(icon);
75a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
76a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
77a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    /**
78beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Set id for this Action.
79a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn     */
80a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    public final void setId(long id) {
81a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn        mId = id;
82a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
83a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
84a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    /**
85beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Returns the id for this Action.
86a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn     */
87a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    public final long getId() {
88a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn        return mId;
89a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
90a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
91a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    /**
92beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Set the first line label for this Action.
93e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn     */
94e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final void setLabel1(CharSequence label) {
95e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        mLabel1 = label;
96e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
97e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
98e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    /**
99beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Returns the first line label for this Action.
100e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn     */
101e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final CharSequence getLabel1() {
102e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        return mLabel1;
103e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
104e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
105e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    /**
106beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Set the second line label for this Action.
107e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn     */
108e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final void setLabel2(CharSequence label) {
109e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        mLabel2 = label;
110e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
111e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
112e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    /**
113beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Returns the second line label for this Action.
114e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn     */
115e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final CharSequence getLabel2() {
116e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        return mLabel2;
117e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    }
118e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn
119e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    /**
120beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Set the icon drawable for this Action.
121a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn     */
122e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final void setIcon(Drawable icon) {
123e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        mIcon = icon;
124a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
125a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn
126a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    /**
127beeaa973d1b5bd79ee8ae798141231d9a315eba7Tim Kilbourn     * Returns the icon drawable for this Action.
128a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn     */
129e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn    public final Drawable getIcon() {
130e652714f2fcc876de6f168b28dd03bfc22e1cb96Tim Kilbourn        return mIcon;
131a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn    }
13270c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn
13370c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn    @Override
13470c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn    public String toString(){
13570c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        StringBuilder sb = new StringBuilder();
13670c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        if (!TextUtils.isEmpty(mLabel1)) {
13770c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn            sb.append(mLabel1);
13870c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        }
13970c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        if (!TextUtils.isEmpty(mLabel2)) {
14070c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn            if (!TextUtils.isEmpty(mLabel1)) {
14170c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn                sb.append(" ");
14270c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn            }
14370c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn            sb.append(mLabel2);
14470c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        }
14570c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        if (mIcon != null && sb.length() == 0) {
14670c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn            sb.append("(action icon)");
14770c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        }
14870c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn        return sb.toString();
14970c858a5ca5b7ed9862e2edfa43912faecf42f96Tim Kilbourn    }
150a83005b70853ea52c5d98910762344de16b850a8Tim Kilbourn}
151