1cc671dd3caac1d0cbf3f6999ab063c9ff1f297b2Dake Gu// CHECKSTYLE:OFF Generated code
271e7e67f320b23feac784b629db17b3bcce08722Dake Gu/* This file is auto-generated from GuidedStepActivity.java.  DO NOT MODIFY. */
3ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
4ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu/*
5ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * Copyright (C) 2014 The Android Open Source Project
6ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu *
7ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * Licensed under the Apache License, Version 2.0 (the "License");
8ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * you may not use this file except in compliance with the License.
9ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * You may obtain a copy of the License at
10ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu *
11ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu *      http://www.apache.org/licenses/LICENSE-2.0
12ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu *
13ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * Unless required by applicable law or agreed to in writing, software
14ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * distributed under the License is distributed on an "AS IS" BASIS,
15ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * See the License for the specific language governing permissions and
17ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * limitations under the License.
18ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu */
19ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
20ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gupackage com.example.android.leanback;
21ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
22ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.support.v4.app.FragmentActivity;
23ae746be7c46297b910a99c07697e33e3a5fd7facDake Guimport android.support.v4.app.Fragment;
24ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.support.v4.app.FragmentManager;
25ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.content.Context;
26ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.content.res.Configuration;
27ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.graphics.drawable.Drawable;
28ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.os.Bundle;
29ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.support.v17.leanback.app.GuidedStepSupportFragment;
30ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.support.v17.leanback.widget.GuidanceStylist;
31ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.support.v17.leanback.widget.GuidanceStylist.Guidance;
3220767a171ab46addb5d50248d4267db14c0c8883susnataimport android.support.v17.leanback.widget.GuidedAction;
3320767a171ab46addb5d50248d4267db14c0c8883susnataimport android.support.v17.leanback.widget.GuidedActionsStylist;
3420767a171ab46addb5d50248d4267db14c0c8883susnataimport android.support.v17.leanback.widget.GuidedDatePickerAction;
35b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Guimport android.support.v4.content.res.ResourcesCompat;
361f735b248bf5e9d37791b6aed4b2c634e41912abDake Guimport android.text.InputType;
378374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Guimport android.text.TextUtils;
38ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.util.Log;
39ae746be7c46297b910a99c07697e33e3a5fd7facDake Guimport android.view.LayoutInflater;
40ae746be7c46297b910a99c07697e33e3a5fd7facDake Guimport android.view.View;
41ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport android.view.ViewGroup;
4206c39be6a0e6e44986083280451115a4a701ec73Dake Guimport android.view.inputmethod.EditorInfo;
43ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
44cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Guimport java.util.ArrayList;
457298559f4bd911900e4baaaaf52be5fcb8353759Dake Guimport java.util.Calendar;
46ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Guimport java.util.List;
47ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
48ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu/**
49ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu * Activity that showcases different aspects of GuidedStepSupportFragments.
50ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu */
51ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gupublic class GuidedStepSupportActivity extends FragmentActivity {
52ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
53ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    private static final int BACK = 2;
54ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
558374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu    private static final int FIRST_NAME = 3;
568374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu    private static final int LAST_NAME = 4;
571f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu    private static final int PASSWORD = 5;
581f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu    private static final int PAYMENT = 6;
59cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    private static final int NEW_PAYMENT = 7;
607298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu    private static final int PAYMENT_EXPIRE = 8;
61ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
6297906d5d967189bdcac6491fffa20c2cb0003466Dake Gu    private static final long RADIO_ID_BASE = 0;
6397906d5d967189bdcac6491fffa20c2cb0003466Dake Gu    private static final long CHECKBOX_ID_BASE = 100;
6497906d5d967189bdcac6491fffa20c2cb0003466Dake Gu
6597906d5d967189bdcac6491fffa20c2cb0003466Dake Gu    private static final long DEFAULT_OPTION = RADIO_ID_BASE;
6697906d5d967189bdcac6491fffa20c2cb0003466Dake Gu
67ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    private static final String[] OPTION_NAMES = { "Option A", "Option B", "Option C" };
68ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    private static final String[] OPTION_DESCRIPTIONS = { "Here's one thing you can do",
69ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            "Here's another thing you can do", "Here's one more thing you can do" };
70ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
71ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    private static final String TAG = GuidedStepSupportActivity.class.getSimpleName();
72ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
73ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    @Override
74ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    protected void onCreate(Bundle savedInstanceState) {
75ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        Log.v(TAG, "onCreate");
76ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        super.onCreate(savedInstanceState);
77ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu        setContentView(R.layout.guided_step_activity);
78c0a78151957be5562ba1c650585a37d084e9ce59Dake Gu        if (savedInstanceState == null) {
79c0a78151957be5562ba1c650585a37d084e9ce59Dake Gu            GuidedStepSupportFragment.addAsRoot(this, new FirstStepFragment(), R.id.lb_guidedstep_host);
80c0a78151957be5562ba1c650585a37d084e9ce59Dake Gu        }
81ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
82ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
83ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    @Override
84ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    public void onConfigurationChanged(Configuration newConfig) {
85ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        Log.v(TAG, "onConfigurationChanged");
86ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        super.onConfigurationChanged(newConfig);
87ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
88ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
89ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    @Override
90ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    protected void onSaveInstanceState(Bundle outState) {
91ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        Log.v(TAG, "onSaveInstanceState");
92ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        super.onSaveInstanceState(outState);
93ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
94ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
95ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    @Override
96ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    protected void onRestoreInstanceState(Bundle savedInstanceState) {
97ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        Log.v(TAG, "onRestoreInstanceState");
98ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        super.onRestoreInstanceState(savedInstanceState);
99ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
100ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
101ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addAction(List<GuidedAction> actions, long id, String title,
102ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            String desc) {
103ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
104b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
105ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .id(id)
106ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .title(title)
107ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .description(desc)
108ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .build());
109ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
110ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
111ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
112ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addAction(List<GuidedAction> actions, long id, String title,
113ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            String desc, List<GuidedAction> subActions) {
114ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
115b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
116cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                .id(id)
117cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                .title(title)
118cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                .description(desc)
119cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                .subActions(subActions)
120cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                .build());
121ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
122cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    }
123cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
124ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addEditableAction(Context context, List<GuidedAction> actions,
125ab46229b057fb33e73a6214c781b3b9a0562d046Dake Gu            long id, String title, String desc) {
126ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
127ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        actions.add(action = new GuidedAction.Builder(context)
128ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .id(id)
129ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .title(title)
130ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .description(desc)
131ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .editable(true)
132ab46229b057fb33e73a6214c781b3b9a0562d046Dake Gu                .icon(R.drawable.lb_ic_search_mic)
133ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .build());
134ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
135ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
136ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
137ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addEditableAction(List<GuidedAction> actions, long id, String title,
1388374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu            String editTitle, String desc) {
139ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
140b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
1418374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .id(id)
1428374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .title(title)
1438374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .editTitle(editTitle)
1448374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .description(desc)
1458374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .editable(true)
1468374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu                .build());
147ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
1488374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu    }
1498374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu
150ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addEditableAction(List<GuidedAction> actions, long id, String title,
1511f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu            String editTitle, int editInputType, String desc, String editDesc) {
152ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
153b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
1541f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .id(id)
1551f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .title(title)
1561f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .editTitle(editTitle)
1571f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .editInputType(editInputType)
1581f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .description(desc)
1591f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .editDescription(editDesc)
1601f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .editable(true)
1611f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .build());
162ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
1631f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu    }
1641f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu
165ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedDatePickerAction addDatePickerAction(List<GuidedAction> actions, long id,
166ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            String title) {
167ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedDatePickerAction action;
168ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        actions.add(action = new GuidedDatePickerAction.Builder(null)
1697298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                .id(id)
1707298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                .title(title)
1717298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                .datePickerFormat("MY")
1727298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                .build());
173ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
1747298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu    }
1757298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu
176ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addEditableDescriptionAction(List<GuidedAction> actions, long id,
1771f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu            String title, String desc, String editDescription, int descriptionEditInputType) {
178ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
179b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
1801f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .id(id)
1811f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .title(title)
1821f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .description(desc)
1831f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .editDescription(editDescription)
1841f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .descriptionEditInputType(descriptionEditInputType)
1851f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .descriptionEditable(true)
1861f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                .build());
187ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
1881f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu    }
1891f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu
190ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    private static GuidedAction addCheckedAction(List<GuidedAction> actions, long id,
19106c39be6a0e6e44986083280451115a4a701ec73Dake Gu            String title, String desc, int checkSetId) {
192ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        GuidedAction action;
193b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu        actions.add(action = new GuidedAction.Builder(null)
19497906d5d967189bdcac6491fffa20c2cb0003466Dake Gu                .id(id)
195ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .title(title)
196ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .description(desc)
19706c39be6a0e6e44986083280451115a4a701ec73Dake Gu                .checkSetId(checkSetId)
198ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                .build());
199ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        return action;
200ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
201ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
202ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    public static class FirstStepFragment extends GuidedStepSupportFragment {
20320767a171ab46addb5d50248d4267db14c0c8883susnata
204ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
205ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public int onProvideTheme() {
206ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return R.style.Theme_Example_Leanback_GuidedStep_First;
207ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
208ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
209ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
210ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public Guidance onCreateGuidance(Bundle savedInstanceState) {
211ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String title = getString(R.string.guidedstep_first_title);
212ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String breadcrumb = getString(R.string.guidedstep_first_breadcrumb);
213ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String description = getString(R.string.guidedstep_first_description);
214b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            final Context context = getActivity();
215b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            Drawable icon = ResourcesCompat.getDrawable(context.getResources(),
216b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu                    R.drawable.ic_main_icon, context.getTheme());
217ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return new Guidance(title, description, breadcrumb, icon);
218ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
219ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
220ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
221ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
22247005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            Context context = getActivity();
22347005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(context)
22447005bba6e07c4578530bd151967c0cce7daedc3Dake Gu                    .clickAction(GuidedAction.ACTION_ID_CONTINUE)
225971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .description("Let's do it")
226971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .build());
22747005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(context)
22847005bba6e07c4578530bd151967c0cce7daedc3Dake Gu                    .clickAction(GuidedAction.ACTION_ID_CANCEL)
229971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .description("Never mind")
230971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .build());
231ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
232ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
233ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
234ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onGuidedActionClicked(GuidedAction action) {
235ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            FragmentManager fm = getFragmentManager();
236971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            if (action.getId() == GuidedAction.ACTION_ID_CONTINUE) {
237ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu                GuidedStepSupportFragment.add(fm, new SecondStepFragment(), R.id.lb_guidedstep_host);
238971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            } else if (action.getId() == GuidedAction.ACTION_ID_CANCEL){
239ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu                finishGuidedStepSupportFragments();
240ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            }
241ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
242ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
243ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
244ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    public interface NewPaymentFragmentTarget {
245ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        void onNewPaymentFragmentStarted();
246ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        void onNewPaymentAdded(int selection);
247ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    }
248ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
249cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    static ArrayList<String> sCards = new ArrayList<String>();
250cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    static int sSelectedCard = -1;
251cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    static {
252cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        sCards.add("Visa-1234");
253cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        sCards.add("Master-4321");
254cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    }
255cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
256cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    public static class NewPaymentStepFragment extends GuidedStepSupportFragment {
257cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
258ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        NewPaymentFragmentTarget mNewPaymentTarget;
259ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
260ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        @Override
261ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        public void onCreate(Bundle savedInstance) {
262ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            super.onCreate(savedInstance);
263ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            Fragment targetFragment = getTargetFragment();
264ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            if (targetFragment instanceof NewPaymentFragmentTarget) {
265ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                mNewPaymentTarget = ((NewPaymentFragmentTarget) targetFragment);
266ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                mNewPaymentTarget.onNewPaymentFragmentStarted();
267ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            }
268ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        }
269ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
270cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
271cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public Guidance onCreateGuidance(Bundle savedInstanceState) {
272cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            String title = getString(R.string.guidedstep_newpayment_title);
273cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            String breadcrumb = getString(R.string.guidedstep_newpayment_breadcrumb);
274cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            String description = getString(R.string.guidedstep_newpayment_description);
275b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            final Context context = getActivity();
276b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            Drawable icon = ResourcesCompat.getDrawable(context.getResources(),
277b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu                    R.drawable.ic_main_icon, context.getTheme());
278cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            return new Guidance(title, description, breadcrumb, icon);
279cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
280cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
281cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
282cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
283cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            addEditableAction(actions, NEW_PAYMENT, "Input credit card number", "",
284cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    InputType.TYPE_CLASS_NUMBER,
285cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    "Input credit card number", "Input credit card number");
2867298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            addDatePickerAction(actions, PAYMENT_EXPIRE, "Exp:");
287cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
288cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
289cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
290cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public void onCreateButtonActions(List<GuidedAction> actions, Bundle savedInstanceState) {
29147005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            Context context = getActivity();
29247005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(context).clickAction(GuidedAction.ACTION_ID_OK)
293cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    .build());
294cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            actions.get(actions.size() - 1).setEnabled(false);
295cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
296cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
297cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
298cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public void onGuidedActionClicked(GuidedAction action) {
299cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            if (action.getId() == GuidedAction.ACTION_ID_OK) {
300cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                CharSequence desc = findActionById(NEW_PAYMENT).getDescription();
301cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                String cardNumber = desc.subSequence(desc.length() - 4, desc.length()).toString();
302cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                String card;
303cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                if ((Integer.parseInt(cardNumber) & 1) == 0) {
304cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    card = "Visa "+cardNumber;
305cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                } else {
306cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    card = "Master "+cardNumber;
307cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                }
308ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                int selection = sCards.size();
309cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                sCards.add(card);
310ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                if (mNewPaymentTarget != null) {
311ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                    mNewPaymentTarget.onNewPaymentAdded(selection);
312ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                }
313cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                popBackStackToGuidedStepSupportFragment(NewPaymentStepFragment.class,
314cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        FragmentManager.POP_BACK_STACK_INCLUSIVE);
315cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            }
316cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
317cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
318cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
319cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public long onGuidedActionEditedAndProceed(GuidedAction action) {
320cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            if (action.getId() == NEW_PAYMENT) {
321cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                CharSequence editTitle = action.getEditTitle();
3227298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                if (isCardNumberValid(editTitle)) {
323cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    editTitle = editTitle.subSequence(editTitle.length() - 4, editTitle.length());
324cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    action.setDescription("Visa XXXX-XXXX-XXXX-" + editTitle);
3257298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                    updateOkButton(isExpDateValid(findActionById(PAYMENT_EXPIRE)));
326cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    return GuidedAction.ACTION_ID_NEXT;
327cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                } else if (editTitle.length() == 0) {
328cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    action.setDescription("Input credit card number");
329cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    updateOkButton(false);
330cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    return GuidedAction.ACTION_ID_CURRENT;
331cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                } else {
332cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    action.setDescription("Error credit card number");
333cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    updateOkButton(false);
334cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    return GuidedAction.ACTION_ID_CURRENT;
335cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                }
3367298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            } else if (action.getId() == PAYMENT_EXPIRE) {
3377298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                updateOkButton(isExpDateValid(action) &&
3387298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu                        isCardNumberValid(findActionById(NEW_PAYMENT).getEditTitle()));
339cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            }
340cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            return GuidedAction.ACTION_ID_NEXT;
341cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
342cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
3437298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu        boolean isCardNumberValid(CharSequence number) {
3447298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            return TextUtils.isDigitsOnly(number) && number.length() == 16;
3457298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu        }
3467298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu
3477298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu        boolean isExpDateValid(GuidedAction action) {
3487298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            long date = ((GuidedDatePickerAction) action).getDate();
3497298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            Calendar c = Calendar.getInstance();
3507298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            c.setTimeInMillis(date);
3517298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu            return Calendar.getInstance().before(c);
3527298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu        }
3537298559f4bd911900e4baaaaf52be5fcb8353759Dake Gu
354cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        void updateOkButton(boolean enabled) {
355cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            findButtonActionById(GuidedAction.ACTION_ID_OK).setEnabled(enabled);
356cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            notifyButtonActionChanged(findButtonActionPositionById(GuidedAction.ACTION_ID_OK));
357cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
358cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu    }
359cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
360ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu    public static class SecondStepFragment extends GuidedStepSupportFragment
361ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            implements NewPaymentFragmentTarget {
362ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
363ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
364ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        boolean mExpandPaymentListInOnCreateView;
365ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
366ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        @Override
367ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        public void onNewPaymentAdded(int selection) {
368ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            // if a new payment is added, we dont need expand the sub actions list.
369ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            mExpandPaymentListInOnCreateView = false;
370ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            sSelectedCard = selection;
371ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            updatePaymentAction(findActionById(PAYMENT));
372ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            findButtonActionById(GuidedAction.ACTION_ID_CONTINUE).setEnabled(sSelectedCard != -1);
373ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        }
374ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
375ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        @Override
376ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        public void onNewPaymentFragmentStarted() {
377ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            // if a new payment fragment is opened, when come back we should expand the payment
378ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            // sub actions list unless user created a new payment in onNewPaymentAdded
379ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            mExpandPaymentListInOnCreateView = true;
380ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        }
381ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
382e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas        @Override
38306c39be6a0e6e44986083280451115a4a701ec73Dake Gu        public GuidedActionsStylist onCreateActionsStylist() {
38406c39be6a0e6e44986083280451115a4a701ec73Dake Gu            return new GuidedActionsStylist() {
385e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas                @Override
38606c39be6a0e6e44986083280451115a4a701ec73Dake Gu                protected void setupImeOptions(GuidedActionsStylist.ViewHolder vh,
38706c39be6a0e6e44986083280451115a4a701ec73Dake Gu                        GuidedAction action) {
38806c39be6a0e6e44986083280451115a4a701ec73Dake Gu                    if (action.getId() == PASSWORD) {
38906c39be6a0e6e44986083280451115a4a701ec73Dake Gu                        vh.getEditableDescriptionView().setImeActionLabel("Confirm!",
39006c39be6a0e6e44986083280451115a4a701ec73Dake Gu                                EditorInfo.IME_ACTION_DONE);
39106c39be6a0e6e44986083280451115a4a701ec73Dake Gu                    } else {
39206c39be6a0e6e44986083280451115a4a701ec73Dake Gu                        super.setupImeOptions(vh, action);
39306c39be6a0e6e44986083280451115a4a701ec73Dake Gu                    }
39406c39be6a0e6e44986083280451115a4a701ec73Dake Gu                }
39506c39be6a0e6e44986083280451115a4a701ec73Dake Gu            };
39606c39be6a0e6e44986083280451115a4a701ec73Dake Gu        }
39706c39be6a0e6e44986083280451115a4a701ec73Dake Gu
398ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
399ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public Guidance onCreateGuidance(Bundle savedInstanceState) {
400ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String title = getString(R.string.guidedstep_second_title);
401ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String breadcrumb = getString(R.string.guidedstep_second_breadcrumb);
402ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String description = getString(R.string.guidedstep_second_description);
403b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            final Context context = getActivity();
404b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            Drawable icon = ResourcesCompat.getDrawable(context.getResources(),
405b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu                    R.drawable.ic_main_icon, context.getTheme());
406ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return new Guidance(title, description, breadcrumb, icon);
407ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
408ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
409ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
410ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
4114c78d0f4beb89792eb955aa4fae85a730966e6a4Dake Gu            addEditableAction(getActivity(), actions, FIRST_NAME, "Pat", "Your first name");
4124c78d0f4beb89792eb955aa4fae85a730966e6a4Dake Gu            addEditableAction(getActivity(), actions, LAST_NAME, "Smith", "Your last name");
413cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            List<GuidedAction> subActions = new ArrayList<GuidedAction>();
414ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            updatePaymentAction(addAction(actions, PAYMENT, "Select Payment", "", subActions));
4151f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu            addEditableDescriptionAction(actions, PASSWORD, "Password", "", "",
4161f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
4177d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        }
4187d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu
4197d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        @Override
4207d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        public void onCreateButtonActions(List<GuidedAction> actions, Bundle savedInstanceState) {
42147005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(getActivity())
42247005bba6e07c4578530bd151967c0cce7daedc3Dake Gu                    .clickAction(GuidedAction.ACTION_ID_CONTINUE)
423971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .description("Continue")
424ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                    .enabled(isPasswordValid() && isPaymentValid())
425971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .build());
426ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
427ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
428ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
429ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onGuidedActionClicked(GuidedAction action) {
430971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            if (action.getId() == GuidedAction.ACTION_ID_CONTINUE) {
431ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                FragmentManager fm = getFragmentManager();
432ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu                GuidedStepSupportFragment.add(fm, new ThirdStepFragment(), R.id.lb_guidedstep_host);
433ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            }
434ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
435ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
436ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        void updatePaymentAction(GuidedAction paymentAction) {
437ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            List<GuidedAction> subActions = paymentAction.getSubActions();
438ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            subActions.clear();
439ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            for (int i = 0; i < sCards.size(); i++) {
440ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                addCheckedAction(subActions, -1, sCards.get(i), "",
441ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                        GuidedAction.DEFAULT_CHECK_SET_ID);
442ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                if (i == sSelectedCard) {
443ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                    subActions.get(i).setChecked(true);
444ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                }
445ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            }
446ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            addAction(subActions, NEW_PAYMENT, "Add New Card", "");
447ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            paymentAction.setDescription(sSelectedCard == -1 ? "" : sCards.get(sSelectedCard));
448ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        }
449ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu
4508374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu        @Override
4511f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        public long onGuidedActionEditedAndProceed(GuidedAction action) {
452cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            if (action.getId() == PASSWORD) {
4531f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                CharSequence password = action.getEditDescription();
4541f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                if (password.length() > 0) {
4551f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    if (isPaymentValid()) {
4561f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                        updateContinue(true);
4571f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                        return GuidedAction.ACTION_ID_NEXT;
4581f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    } else {
4591f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                        updateContinue(false);
4601f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                        return GuidedAction.ACTION_ID_CURRENT;
4611f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    }
4621f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                } else {
4631f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    updateContinue(false);
4641f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                    return GuidedAction.ACTION_ID_CURRENT;
4651f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu                }
4668374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu            }
4671f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu            return GuidedAction.ACTION_ID_NEXT;
4681f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        }
4691f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu
470cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
471cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        public boolean onSubGuidedActionClicked(GuidedAction action) {
472cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            if (action.isChecked()) {
473cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                String payment = action.getTitle().toString();
474cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                for (int i = 0; i < sCards.size(); i++) {
475cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    if (payment.equals(sCards.get(i))) {
476cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        sSelectedCard = i;
477cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        findActionById(PAYMENT).setDescription(payment);
478cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        notifyActionChanged(findActionPositionById(PAYMENT));
479cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        updateContinue(isPasswordValid());
480cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                        break;
481cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                    }
482cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                }
483cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                return true;
484cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            } else {
485cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                FragmentManager fm = getFragmentManager();
486ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                NewPaymentStepFragment newPaymentFragment = new NewPaymentStepFragment();
487ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                newPaymentFragment.setTargetFragment(this, 0);
488ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                GuidedStepSupportFragment.add(fm, newPaymentFragment, R.id.lb_guidedstep_host);
489cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu                return false;
490cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            }
491cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
492cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
493cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        @Override
494ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu        public View onCreateView(LayoutInflater inflater, ViewGroup container,
495ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                Bundle savedInstanceState) {
496ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            View view = super.onCreateView(inflater, container, savedInstanceState);
497ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            if (mExpandPaymentListInOnCreateView) {
498ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                expandAction(findActionById(PAYMENT), false);
499cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            }
500ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu            return view;
501cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu        }
502cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu
5031f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        boolean isPaymentValid() {
504cf49916e96a2a8a19ea8112d91862e7ede4ceb67Dake Gu            CharSequence paymentType = findActionById(PAYMENT).getDescription();
505aec263932c93cd9980fee043d31b9c34ff835aa8Keyvan Amiri            return (paymentType.length() >= 4 &&
506aec263932c93cd9980fee043d31b9c34ff835aa8Keyvan Amiri                    paymentType.subSequence(0, 4).toString().equals("Visa")) ||
507aec263932c93cd9980fee043d31b9c34ff835aa8Keyvan Amiri                    (paymentType.length() >= 6 &&
508aec263932c93cd9980fee043d31b9c34ff835aa8Keyvan Amiri                    paymentType.subSequence(0, 6).toString().equals("Master"));
5091f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        }
5101f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu
5111f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        boolean isPasswordValid() {
5121f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu            return findActionById(PASSWORD).getEditDescription().length() > 0;
5131f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        }
5141f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu
5151f735b248bf5e9d37791b6aed4b2c634e41912abDake Gu        void updateContinue(boolean enabled) {
5167d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu            findButtonActionById(GuidedAction.ACTION_ID_CONTINUE).setEnabled(enabled);
5177d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu            notifyButtonActionChanged(findButtonActionPositionById(
5187d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu                    GuidedAction.ACTION_ID_CONTINUE));
5198374a4e00678fec6ed5aa3fcd1befcaeb8423b6cDake Gu        }
520ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
521ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
522ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    public static class ThirdStepFragment extends GuidedStepSupportFragment {
523ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
52497906d5d967189bdcac6491fffa20c2cb0003466Dake Gu        private long mSelectedOption = DEFAULT_OPTION;
525ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
526ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
527ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public Guidance onCreateGuidance(Bundle savedInstanceState) {
528ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String title = getString(R.string.guidedstep_third_title);
529ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String breadcrumb = getString(R.string.guidedstep_third_breadcrumb);
530ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String description = getString(R.string.guidedstep_third_description);
531b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            final Context context = getActivity();
532b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            Drawable icon = ResourcesCompat.getDrawable(context.getResources(),
533b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu                    R.drawable.ic_main_icon, context.getTheme());
534ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return new Guidance(title, description, breadcrumb, icon);
535ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
536ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
537ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
538ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public GuidanceStylist onCreateGuidanceStylist() {
539ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return new GuidanceStylist() {
540ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                @Override
541ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                public int onProvideLayoutId() {
542ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    return R.layout.guidedstep_second_guidance;
543ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                }
544ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            };
545ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
546ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
547ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
548ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
54997906d5d967189bdcac6491fffa20c2cb0003466Dake Gu            String desc = "The description can be quite long as well.  " +
55097906d5d967189bdcac6491fffa20c2cb0003466Dake Gu                    "Just be sure to set multilineDescription to true in the GuidedAction.";
551b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            actions.add(new GuidedAction.Builder(getActivity())
552ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    .title("Note that Guided Actions can have titles that are quite long.")
553ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    .description(desc)
554ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    .multilineDescription(true)
555ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    .infoOnly(true)
556ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu                    .enabled(true)
557ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu                    .focusable(false)
558ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    .build());
559ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            for (int i = 0; i < OPTION_NAMES.length; i++) {
560ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                addCheckedAction(actions, RADIO_ID_BASE + i, OPTION_NAMES[i],
56106c39be6a0e6e44986083280451115a4a701ec73Dake Gu                        OPTION_DESCRIPTIONS[i], GuidedAction.DEFAULT_CHECK_SET_ID);
562ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                if (i == DEFAULT_OPTION) {
563ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                    actions.get(actions.size() -1).setChecked(true);
564ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                }
565ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            }
56606c39be6a0e6e44986083280451115a4a701ec73Dake Gu            for (int i = 0; i < OPTION_NAMES.length; i++) {
567ae746be7c46297b910a99c07697e33e3a5fd7facDake Gu                addCheckedAction(actions, CHECKBOX_ID_BASE + i, OPTION_NAMES[i],
56806c39be6a0e6e44986083280451115a4a701ec73Dake Gu                        OPTION_DESCRIPTIONS[i], GuidedAction.CHECKBOX_CHECK_SET_ID);
56906c39be6a0e6e44986083280451115a4a701ec73Dake Gu            }
5707d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        }
5717d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu
5727d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        @Override
5737d9ba1eb1d51f531ff17cf1967f522bcb78f2064Dake Gu        public void onCreateButtonActions(List<GuidedAction> actions, Bundle savedInstanceState) {
57447005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(getActivity())
57547005bba6e07c4578530bd151967c0cce7daedc3Dake Gu                    .clickAction(GuidedAction.ACTION_ID_CONTINUE)
576971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .build());
577ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
578ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
579ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
580ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onGuidedActionClicked(GuidedAction action) {
581971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            if (action.getId() == GuidedAction.ACTION_ID_CONTINUE) {
582ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                FragmentManager fm = getFragmentManager();
583ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                FourthStepFragment f = new FourthStepFragment();
584ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                Bundle arguments = new Bundle();
58597906d5d967189bdcac6491fffa20c2cb0003466Dake Gu                arguments.putLong(FourthStepFragment.EXTRA_OPTION, mSelectedOption);
586ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu                f.setArguments(arguments);
587ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu                GuidedStepSupportFragment.add(fm, f, R.id.lb_guidedstep_host);
58806c39be6a0e6e44986083280451115a4a701ec73Dake Gu            } else if (action.getCheckSetId() == GuidedAction.DEFAULT_CHECK_SET_ID) {
58997906d5d967189bdcac6491fffa20c2cb0003466Dake Gu                mSelectedOption = action.getId();
590ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            }
591ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
592ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
593ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
594ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
595ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    public static class FourthStepFragment extends GuidedStepSupportFragment {
596ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public static final String EXTRA_OPTION = "extra_option";
597ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
598ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public FourthStepFragment() {
599ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
600ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
60197906d5d967189bdcac6491fffa20c2cb0003466Dake Gu        public long getOption() {
602ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            Bundle b = getArguments();
603ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            if (b == null) return 0;
60497906d5d967189bdcac6491fffa20c2cb0003466Dake Gu            return b.getLong(EXTRA_OPTION, 0);
605ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
606ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
607ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
608ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public Guidance onCreateGuidance(Bundle savedInstanceState) {
609ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String title = getString(R.string.guidedstep_fourth_title);
610ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            String breadcrumb = getString(R.string.guidedstep_fourth_breadcrumb);
61197906d5d967189bdcac6491fffa20c2cb0003466Dake Gu            String description = "You chose: " + OPTION_NAMES[(int) getOption()];
612b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            final Context context = getActivity();
613b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu            Drawable icon = ResourcesCompat.getDrawable(context.getResources(),
614b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu                    R.drawable.ic_main_icon, context.getTheme());
615ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            return new Guidance(title, description, breadcrumb, icon);
616ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
617ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
618ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
619ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
62047005bba6e07c4578530bd151967c0cce7daedc3Dake Gu            actions.add(new GuidedAction.Builder(getActivity())
62147005bba6e07c4578530bd151967c0cce7daedc3Dake Gu                    .clickAction(GuidedAction.ACTION_ID_FINISH)
622971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .description("All Done...")
623971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu                    .build());
624ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu            addAction(actions, BACK, "Start Over", "Let's try this again...");
625ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
626ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
627ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        @Override
628ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        public void onGuidedActionClicked(GuidedAction action) {
629971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            if (action.getId() == GuidedAction.ACTION_ID_FINISH) {
630ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu                finishGuidedStepSupportFragments();
631971cfadff0da45fa2e899a8cedd05e5cb99dd672Dake Gu            } else if (action.getId() == BACK) {
632ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu                // pop 4, 3, 2
633ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu                popBackStackToGuidedStepSupportFragment(SecondStepFragment.class,
634ca5018729526470dfb2599a88869deaa48a7fea9Dake Gu                        FragmentManager.POP_BACK_STACK_INCLUSIVE);
635ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu            }
636ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu        }
637ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
638ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu    }
639ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu
640ab1d3dce4807789e76bb7c4c7b6693d5aa993b1bDake Gu}
641