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