1ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing/* 2ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Copyright (C) 2015 The Android Open Source Project 3ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * 4ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * in compliance with the License. You may obtain a copy of the License at 6ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * 7ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * http://www.apache.org/licenses/LICENSE-2.0 8ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * 9ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Unless required by applicable law or agreed to in writing, software distributed under the License 10ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * or implied. See the License for the specific language governing permissions and limitations under 12ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * the License. 13ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 14ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingpackage android.support.v17.leanback.widget; 15ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 16ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingimport android.content.Context; 17ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingimport android.content.Intent; 18ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingimport android.graphics.drawable.Drawable; 19ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingimport android.util.Log; 20ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 21ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing/** 22ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * A data class which represents an action within a {@link 23ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * android.support.v17.leanback.app.GuidedStepFragment}. GuidedActions contain at minimum a title 24ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * and a description, and typically also an icon. 25ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * <p> 26ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * A GuidedAction typically represents a single action a user may take, but may also represent a 27ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * possible choice out of a group of mutually exclusive choices (similar to radio buttons), or an 28ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * information-only label (in which case the item cannot be clicked). 29ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * <p> 30ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * GuidedActions may optionally be checked. They may also indicate that they will request further 31ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * user input on selection, in which case they will be displayed with a chevron indicator. 32ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 33ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesingpublic class GuidedAction extends Action { 34ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 35ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private static final String TAG = "GuidedAction"; 36ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 37ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public static final int NO_DRAWABLE = 0; 38ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public static final int NO_CHECK_SET = 0; 39ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public static final int DEFAULT_CHECK_SET_ID = 1; 40ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 41ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 42ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Builds a {@link GuidedAction} object. 43ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 44ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public static class Builder { 45ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private long mId; 46ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private String mTitle; 47ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private String mDescription; 48ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private Drawable mIcon; 49ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mChecked; 50ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mMultilineDescription; 51ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mHasNext; 52ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mInfoOnly; 53ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private int mCheckSetId = NO_CHECK_SET; 54ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mEnabled = true; 55ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private Intent mIntent; 56ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 57ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 58ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Builds the GuidedAction corresponding to this Builder. 59ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return the GuidedAction as configured through this Builder. 60ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 61ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public GuidedAction build() { 62ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing GuidedAction action = new GuidedAction(); 63ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing // Base Action values 64ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.setId(mId); 65ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.setLabel1(mTitle); 66ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.setLabel2(mDescription); 67ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.setIcon(mIcon); 68ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 69ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing // Subclass values 70ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mIntent = mIntent; 71ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mChecked = mChecked; 72ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mCheckSetId = mCheckSetId; 73ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mMultilineDescription = mMultilineDescription; 74ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mHasNext = mHasNext; 75ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mInfoOnly = mInfoOnly; 76ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing action.mEnabled = mEnabled; 77ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return action; 78ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 79ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 80ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 81ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the ID associated with this action. The ID can be any value the client wishes; 82ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * it is typically used to determine what to do when an action is clicked. 83ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param id The ID to associate with this action. 84ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 85ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder id(long id) { 86ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mId = id; 87ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 88ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 89ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 90ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 91ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the title for this action. The title is typically a short string indicating the 92ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * action to be taken on click, e.g. "Continue" or "Cancel". 93ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param title The title for this action. 94ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 95ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder title(String title) { 96ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mTitle = title; 97ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 98ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 99ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 100ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 101ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the description for this action. The description is typically a longer string 102ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * providing extra information on what the action will do. 103ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param description The description for this action. 104ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 105ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder description(String description) { 106ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mDescription = description; 107ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 108ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 109ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 110ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 111ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the intent associated with this action. Clients would typically fire this intent 112ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * directly when the action is clicked. 113ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param intent The intent associated with this action. 114ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 115ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder intent(Intent intent) { 116ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mIntent = intent; 117ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 118ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 119ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 120ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 121ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the action's icon drawable. 122ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param icon The drawable for the icon associated with this action. 123ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 124ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder icon(Drawable icon) { 125ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mIcon = icon; 126ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 127ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 128ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 129ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 130ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets the action's icon drawable by retrieving it by resource ID from the specified 131ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * context. This is a convenience function that simply looks up the drawable and calls 132ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * {@link #icon}. 133ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param iconResourceId The resource ID for the icon associated with this action. 134ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param context The context whose resource ID should be retrieved. 135ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 136ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder iconResourceId(int iconResourceId, Context context) { 137ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return icon(context.getResources().getDrawable(iconResourceId)); 138ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 139ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 140ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 141ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether this action is initially checked. 142ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param checked Whether this action is checked. 143ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 144ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder checked(boolean checked) { 145ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mChecked = checked; 146ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 147ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 148ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 149ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 150ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether this action is part of a single-select group similar to radio buttons. 151ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * When one item in a check set is checked, all others with the same check set ID will be 152ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * unchecked automatically. 153ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param checkSetId The check set ID, or {@link #NO_CHECK_SET) to indicate no check set. 154ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 155ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder checkSetId(int checkSetId) { 156ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mCheckSetId = checkSetId; 157ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 158ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 159ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 160ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 161ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether the title and description are long, and should be displayed 162ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * appropriately. 163ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param multilineDescription Whether this action has a multiline description. 164ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 165ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder multilineDescription(boolean multilineDescription) { 166ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mMultilineDescription = multilineDescription; 167ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 168ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 169ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 170ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 171ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether this action has a next state and should display a chevron. 172ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param hasNext Whether this action has a next state. 173ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 174ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder hasNext(boolean hasNext) { 175ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mHasNext = hasNext; 176ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 177ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 178ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 179ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 180ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether this action is for information purposes only and cannot be clicked. 181ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param infoOnly Whether this action has a next state. 182ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 183ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder infoOnly(boolean infoOnly) { 184ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mInfoOnly = infoOnly; 185ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 186ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 187ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 188ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 189ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Indicates whether this action is enabled. If not enabled, an action cannot be clicked. 190ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param enabled Whether the action is enabled. 191ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 192ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Builder enabled(boolean enabled) { 193ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mEnabled = enabled; 194ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return this; 195ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 196ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 197ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 198ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mChecked; 199ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mMultilineDescription; 200ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mHasNext; 201ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mInfoOnly; 202ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private int mCheckSetId; 203ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private boolean mEnabled; 204ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 205ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private Intent mIntent; 206ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 207ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing private GuidedAction() { 208ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing super(0); 209ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 210ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 211ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 212ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns the title of this action. 213ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return The title set when this action was built. 214ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 215ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public CharSequence getTitle() { 216ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return getLabel1(); 217ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 218ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 219ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 220ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns the description of this action. 221ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return The description set when this action was built. 222ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 223ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public CharSequence getDescription() { 224ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return getLabel2(); 225ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 226ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 227ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 228ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns the intent associated with this action. 229ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return The intent set when this action was built. 230ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 231ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public Intent getIntent() { 232ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mIntent; 233ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 234ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 235ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 236ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns whether this action is checked. 237ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return true if the action is currently checked, false otherwise. 238ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 239ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public boolean isChecked() { 240ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mChecked; 241ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 242ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 243ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 244ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets whether this action is checked. 245ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param checked Whether this action should be checked. 246ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 247ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public void setChecked(boolean checked) { 248ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mChecked = checked; 249ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 250ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 251ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 252ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns the check set id this action is a part of. All actions in the 253ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * same list with the same check set id are considered linked. When one 254ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * of the actions within that set is selected, that action becomes 255ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * checked, while all the other actions become unchecked. 256ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * 257ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return an integer representing the check set this action is a part of, or 258ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * {@link #NO_CHECK_SET} if this action isn't a part of a check set. 259ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 260ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public int getCheckSetId() { 261ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mCheckSetId; 262ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 263ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 264ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 265ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns whether this action is has a multiline description. 266ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return true if the action was constructed as having a multiline description, false 267ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * otherwise. 268ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 269ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public boolean hasMultilineDescription() { 270ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mMultilineDescription; 271ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 272ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 273ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 274ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns whether this action is enabled. 275ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return true if the action is currently enabled, false otherwise. 276ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 277ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public boolean isEnabled() { 278ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mEnabled; 279ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 280ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 281ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 282ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Sets whether this action is enabled. 283ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @param enabled Whether this action should be enabled. 284ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 285ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public void setEnabled(boolean enabled) { 286ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing mEnabled = enabled; 287ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 288ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 289ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 290ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns whether this action will request further user input when selected, such as showing 291ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * another GuidedStepFragment or launching a new activity. Configured during construction. 292ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return true if the action will request further user input when selected, false otherwise. 293ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 294ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public boolean hasNext() { 295ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mHasNext; 296ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 297ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 298ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing /** 299ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * Returns whether the action will only display information and is thus not clickable. If both 300ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * this and {@link #hasNext()} are true, infoOnly takes precedence. The default is false. For 301ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * example, this might represent e.g. the amount of storage a document uses, or the cost of an 302ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * app. 303ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing * @return true if will only display information, false otherwise. 304ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing */ 305ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing public boolean infoOnly() { 306ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing return mInfoOnly; 307ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing } 308ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing 309ebd3d9078dbaebd10a9506ca086435eb63e8a2d2Kris Giesing} 310