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
1786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.os.Bundle;
1886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.os.Handler;
1986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.annotation.NonNull;
2086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.app.GuidedStepFragment;
21ad31f63f5843898de645f6ee1ac244c872ded8ccRobert Hahnimport android.support.v17.leanback.supportleanbackshowcase.R;
2286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidanceStylist;
2386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidedAction;
2486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.GuidedActionsStylist;
2586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport java.util.List;
2786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/**
29ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn * This is the third screen of the rental wizard which will display a progressbar while waiting for
30ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn * the server to process the rental. The server communication is faked for the sake of this example
31ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn * by waiting four seconds until continuing.
3286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
3386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpublic class WizardExample3rdStepFragment extends WizardExampleBaseStepFragment {
3486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    private static final int ACTION_ID_PROCESSING = 1;
3686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    private final Handler mFakeHttpHandler = new Handler();
3786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
3986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public void onStart() {
4086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        super.onStart();
4186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
4286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        // Fake Http call by creating some sort of delay.
4386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        mFakeHttpHandler.postDelayed(fakeHttpRequestRunnable, 4000L);
4486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
4586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
4686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
4786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public GuidedActionsStylist onCreateActionsStylist() {
4886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        GuidedActionsStylist stylist = new GuidedActionsStylist() {
4986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            @Override
5086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            public int onProvideItemLayoutId() {
5186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                return R.layout.wizard_progress_action_item;
5286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            }
5386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
5486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        };
5586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return stylist;
5686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
5786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
5886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
599b4b53f49a0d4b5916a51aeceac78bdbbadec5bdKeyvan Amiri    public int onProvideTheme() {
609b4b53f49a0d4b5916a51aeceac78bdbbadec5bdKeyvan Amiri        return R.style.Theme_Example_LeanbackWizard_NoSelector;
619b4b53f49a0d4b5916a51aeceac78bdbbadec5bdKeyvan Amiri    }
629b4b53f49a0d4b5916a51aeceac78bdbbadec5bdKeyvan Amiri
639b4b53f49a0d4b5916a51aeceac78bdbbadec5bdKeyvan Amiri    @Override
6486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public void onStop() {
6586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        super.onStop();
6686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
6786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        // Make sure to cancel the execution of the Runnable in case the fragment is stopped.
6886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        mFakeHttpHandler.removeCallbacks(fakeHttpRequestRunnable);
6986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
7086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
7186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @NonNull
7286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
7386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
7486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        GuidanceStylist.Guidance guidance = new GuidanceStylist.Guidance(mMovie.getTitle(),
75ce0ee60535b13af96b3d7e8d6d8b47d42cb8e171Robert Hahn                getString(R.string.wizard_example_just_a_second),
7686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                mMovie.getBreadcrump(), null);
7786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        return guidance;
7886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
7986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
8086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    @Override
8186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
823150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri        GuidedAction action = new GuidedAction.Builder(getActivity())
8386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .id(ACTION_ID_PROCESSING)
843150f42b1391b1b8c35987758b3cee72ef3e8747Keyvan Amiri                .title(R.string.wizard_example_processing)
8586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .infoOnly(true)
8686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn                .build();
8786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        actions.add(action);
8886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
8986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
9086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    private final Runnable fakeHttpRequestRunnable = new Runnable() {
9186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        @Override
9286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        public void run() {
9386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            GuidedStepFragment fragment = new WizardExample4thStepFragment();
9486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            fragment.setArguments(getArguments());
9586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            add(getFragmentManager(), fragment);
9686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        }
9786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    };
9886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
9986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn}
100