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