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