blob: f630d59697a4e3cb6ef2bd49517a7855c508aa21 [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package android.support.v17.leanback.supportleanbackshowcase.app.wizard;
import android.app.FragmentManager;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v17.leanback.app.GuidedStepFragment;
import android.support.v17.leanback.supportleanbackshowcase.R;
import android.support.v17.leanback.widget.GuidanceStylist;
import android.support.v17.leanback.widget.GuidedAction;
import android.support.v17.leanback.widget.GuidedActionsStylist;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
/**
* Displays the second screen of the rental wizard which requires the user to confirm his purchase.
*/
public class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment {
private static final String ARG_HD = "hd";
private static final int ACTION_ID_CONFIRM = 1;
private static final int ACTION_ID_PAYMENT_METHOD = ACTION_ID_CONFIRM + 1;
private static final int ACTION_ID_NEW_PAYMENT = ACTION_ID_PAYMENT_METHOD + 1;
protected static ArrayList<String> sCards = new ArrayList();
protected static int sSelectedCard = -1;
static {
sCards.add("Visa-1234");
sCards.add("Master-4321");
}
public static GuidedStepFragment build(boolean hd, WizardExampleBaseStepFragment previousFragment) {
GuidedStepFragment fragment = new WizardExample2ndStepFragment();
// Reuse the same arguments this fragment was given.
Bundle args = previousFragment.getArguments();
args.putBoolean(ARG_HD, hd);
fragment.setArguments(args);
return fragment;
}
@NonNull
@Override
public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
GuidanceStylist.Guidance guidance = new GuidanceStylist.Guidance(mMovie.getTitle(),
getString(R.string.wizard_example_rental_period),
mMovie.getBreadcrump(), null);
return guidance;
}
@Override
public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
boolean rentHighDefinition = getArguments().getBoolean(ARG_HD);
GuidedAction action = new GuidedAction.Builder(getActivity())
.id(ACTION_ID_CONFIRM)
.title(R.string.wizard_example_rent)
.description(rentHighDefinition ? mMovie.getPriceHd() : mMovie.getPriceSd())
.editable(false)
.build();
action.setEnabled(false);
actions.add(action);
List<GuidedAction> subActions = new ArrayList();
action = new GuidedAction.Builder(getActivity())
.id(ACTION_ID_PAYMENT_METHOD)
.title(R.string.wizard_example_payment_method)
.editTitle("")
.description(R.string.wizard_example_input_credit)
.subActions(subActions)
.build();
actions.add(action);
}
@Override
public void onResume() {
super.onResume();
GuidedAction payment = findActionById(ACTION_ID_PAYMENT_METHOD);
List<GuidedAction> paymentSubActions = payment.getSubActions();
paymentSubActions.clear();
for (int i = 0; i < sCards.size(); i++) {
paymentSubActions.add(new GuidedAction.Builder(getActivity())
.title(sCards.get(i))
.description("")
.checkSetId(GuidedAction.DEFAULT_CHECK_SET_ID)
.build()
);
}
paymentSubActions.add(new GuidedAction.Builder(getActivity())
.id(ACTION_ID_NEW_PAYMENT)
.title("Add New Card")
.description("")
.editable(false)
.build()
);
if ( sSelectedCard >= 0 && sSelectedCard < sCards.size() ) {
payment.setDescription(sCards.get(sSelectedCard));
findActionById(ACTION_ID_CONFIRM).setEnabled(true);
} else
findActionById(ACTION_ID_CONFIRM).setEnabled(false);
notifyActionChanged(findActionPositionById(ACTION_ID_CONFIRM));
}
@Override
public boolean onSubGuidedActionClicked(GuidedAction action) {
if (action.isChecked()) {
String payment = action.getTitle().toString();
if ( (sSelectedCard = sCards.indexOf(payment)) != -1 ) {
findActionById(ACTION_ID_PAYMENT_METHOD).setDescription(payment);
notifyActionChanged(findActionPositionById(ACTION_ID_PAYMENT_METHOD));
findActionById(ACTION_ID_CONFIRM).setEnabled(true);
notifyActionChanged(findActionPositionById(ACTION_ID_CONFIRM));
}
return true;
} else {
FragmentManager fm = getFragmentManager();
GuidedStepFragment fragment = new WizardNewPaymentStepFragment();
fragment.setArguments(getArguments());
add(fm, fragment);
return false;
}
}
@Override
public void onGuidedActionClicked(GuidedAction action) {
if (ACTION_ID_CONFIRM == action.getId()) {
GuidedStepFragment fragment = new WizardExample3rdStepFragment();
fragment.setArguments(getArguments());
add(getFragmentManager(), fragment);
}
}
}