131475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn/*
231475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * Copyright (C) 2015 The Android Open Source Project
331475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn *
431475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
531475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * in compliance with the License. You may obtain a copy of the License at
631475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn *
731475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * http://www.apache.org/licenses/LICENSE-2.0
831475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn *
931475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * Unless required by applicable law or agreed to in writing, software distributed under the License
1031475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
1131475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * or implied. See the License for the specific language governing permissions and limitations under
1231475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn * the License.
1331475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn */
1431475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn
15ad31f63f5843898de645f6ee1ac244c872ded8ccRobert Hahnpackage android.support.v17.leanback.supportleanbackshowcase.app.wizard;
1686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
17a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiriimport android.app.FragmentManager;
1886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.graphics.Color;
1986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.graphics.drawable.Drawable;
2086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.os.Bundle;
2186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.annotation.NonNull;
2286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.app.GuidedStepFragment;
23ad31f63f5843898de645f6ee1ac244c872ded8ccRobert Hahnimport android.support.v17.leanback.supportleanbackshowcase.R;
2486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidanceStylist;
2586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidedAction;
2686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidedActionsStylist;
2786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.widget.Toast;
2886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
29a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiriimport java.util.ArrayList;
3086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport java.util.List;
3186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/**
33ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn * Displays the second screen of the rental wizard which requires the user to confirm his purchase.
3486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
3586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpublic class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment {
3686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
37ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn    private static final String ARG_HD = "hd";
3886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    private static final int ACTION_ID_CONFIRM = 1;
3986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    private static final int ACTION_ID_PAYMENT_METHOD = ACTION_ID_CONFIRM + 1;
40a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    private static final int ACTION_ID_NEW_PAYMENT = ACTION_ID_PAYMENT_METHOD + 1;
41a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
42f991d06019b2f73c024a64ccd473fe8ab174b62asusnata    protected static ArrayList<String> sCards = new ArrayList();
43a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    protected static int sSelectedCard = -1;
44a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
45a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    static {
46a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        sCards.add("Visa-1234");
47a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        sCards.add("Master-4321");
48a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    }
49a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
5086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
51ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn    public static GuidedStepFragment build(boolean hd, WizardExampleBaseStepFragment previousFragment) {
52ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        GuidedStepFragment fragment = new WizardExample2ndStepFragment();
53ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        // Reuse the same arguments this fragment was given.
54ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        Bundle args = previousFragment.getArguments();
55ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        args.putBoolean(ARG_HD, hd);
56ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        fragment.setArguments(args);
57ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        return fragment;
58ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn    }
59ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn
6086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @NonNull
6186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
6286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
6386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        GuidanceStylist.Guidance guidance = new GuidanceStylist.Guidance(mMovie.getTitle(),
6486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                getString(R.string.wizard_example_rental_period),
6586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                mMovie.getBreadcrump(), null);
6686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return guidance;
6722f51aab96c6bb84d0ad3d5aa81afd0ca9d9002fRobert Hahn
6886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
6986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
7086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
7186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
72ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn        boolean rentHighDefinition = getArguments().getBoolean(ARG_HD);
7386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
743150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri        GuidedAction action = new GuidedAction.Builder(getActivity())
7586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .id(ACTION_ID_CONFIRM)
763150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri                .title(R.string.wizard_example_rent)
7786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .description(rentHighDefinition ? mMovie.getPriceHd() : mMovie.getPriceSd())
7822f51aab96c6bb84d0ad3d5aa81afd0ca9d9002fRobert Hahn                .editable(false)
7986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .build();
80a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        action.setEnabled(false);
8186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        actions.add(action);
82f991d06019b2f73c024a64ccd473fe8ab174b62asusnata        List<GuidedAction> subActions = new ArrayList();
833150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri        action = new GuidedAction.Builder(getActivity())
8486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .id(ACTION_ID_PAYMENT_METHOD)
853150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri                .title(R.string.wizard_example_payment_method)
86bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu                .editTitle("")
873150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri                .description(R.string.wizard_example_input_credit)
88a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .subActions(subActions)
8986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .build();
9086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        actions.add(action);
9186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
9286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
9386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
94a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    public void onResume() {
95a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        super.onResume();
96a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        GuidedAction payment = findActionById(ACTION_ID_PAYMENT_METHOD);
97a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
98a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        List<GuidedAction> paymentSubActions = payment.getSubActions();
99a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        paymentSubActions.clear();
100a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        for (int i = 0; i < sCards.size(); i++) {
101a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            paymentSubActions.add(new GuidedAction.Builder(getActivity())
102a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                            .title(sCards.get(i))
103a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                            .description("")
104a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                            .checkSetId(GuidedAction.DEFAULT_CHECK_SET_ID)
105a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                            .build()
106a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            );
107a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        }
108a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        paymentSubActions.add(new GuidedAction.Builder(getActivity())
109a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .id(ACTION_ID_NEW_PAYMENT)
110a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .title("Add New Card")
111a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .description("")
112a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .editable(false)
113a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                .build()
114a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        );
115a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        if ( sSelectedCard >= 0 && sSelectedCard < sCards.size() ) {
116a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            payment.setDescription(sCards.get(sSelectedCard));
117a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            findActionById(ACTION_ID_CONFIRM).setEnabled(true);
118a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        } else
119a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            findActionById(ACTION_ID_CONFIRM).setEnabled(false);
120a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        notifyActionChanged(findActionPositionById(ACTION_ID_CONFIRM));
121a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    }
122a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
123a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    @Override
124a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri    public boolean onSubGuidedActionClicked(GuidedAction action) {
125a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri
126a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri        if (action.isChecked()) {
127a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            String payment = action.getTitle().toString();
128a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            if ( (sSelectedCard = sCards.indexOf(payment)) != -1 ) {
129a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                findActionById(ACTION_ID_PAYMENT_METHOD).setDescription(payment);
130a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                notifyActionChanged(findActionPositionById(ACTION_ID_PAYMENT_METHOD));
131a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                findActionById(ACTION_ID_CONFIRM).setEnabled(true);
132a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri                notifyActionChanged(findActionPositionById(ACTION_ID_CONFIRM));
133a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            }
134a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            return true;
13586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        } else {
136a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            FragmentManager fm = getFragmentManager();
137a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            GuidedStepFragment fragment = new WizardNewPaymentStepFragment();
138a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            fragment.setArguments(getArguments());
139a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            add(fm, fragment);
140a1e57afa053b57929b7914276660e1ba4800635fKeyvan Amiri            return false;
141bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu        }
142bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu    }
143bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu
144bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu    @Override
145bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu    public void onGuidedActionClicked(GuidedAction action) {
146bf1d02bad10cd49d034435a6c5b505d5f623ec60Dake Gu        if (ACTION_ID_CONFIRM == action.getId()) {
14786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            GuidedStepFragment fragment = new WizardExample3rdStepFragment();
14886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            fragment.setArguments(getArguments());
14986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            add(getFragmentManager(), fragment);
15086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        }
15186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
15286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn}
153