SetupMultiPaneFragment.java revision 1abddd9f6225298066094e20a6c29061b6af4590
17d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko/*
27d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * Copyright (C) 2015 The Android Open Source Project
37d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko *
47d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
57d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * you may not use this file except in compliance with the License.
67d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * You may obtain a copy of the License at
77d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko *
87d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
97d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko *
107d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * Unless required by applicable law or agreed to in writing, software
117d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
127d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * See the License for the specific language governing permissions and
147d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * limitations under the License.
157d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko */
167d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
177d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkopackage com.android.tv.common.ui.setup;
187d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
197d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport android.os.Bundle;
207d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport android.view.LayoutInflater;
217d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport android.view.View;
227d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport android.view.ViewGroup;
231abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport android.view.ViewGroup.MarginLayoutParams;
247d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
257d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport com.android.tv.common.R;
267d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
277d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko/**
287d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko * A fragment for channel source info/setup.
297d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko */
307d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkopublic abstract class SetupMultiPaneFragment extends SetupFragment {
317d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    public static final int ACTION_DONE = 1;
327d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
331abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public SetupMultiPaneFragment() {
341abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        enableFragmentTransition(FRAGMENT_ENTER_TRANSITION | FRAGMENT_EXIT_TRANSITION
351abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                | FRAGMENT_REENTER_TRANSITION | FRAGMENT_RETURN_TRANSITION);
361abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
371abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
387d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    @Override
397d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    public View onCreateView(LayoutInflater inflater, ViewGroup container,
407d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko            Bundle savedInstanceState) {
417d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        View view = super.onCreateView(inflater, container, savedInstanceState);
421abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        SetupGuidedStepFragment contentFragment = onCreateContentFragment();
431abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        getChildFragmentManager().beginTransaction()
441abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                .replace(R.id.guided_step_fragment_container, contentFragment).commit();
457d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        if (needsDoneButton()) {
461abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            setOnClickAction(view.findViewById(R.id.button_done), ACTION_DONE);
477d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        } else {
481abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            View doneButtonContainer = view.findViewById(R.id.done_button_container);
491abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            if (view.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
501abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                ((MarginLayoutParams) doneButtonContainer.getLayoutParams()).rightMargin =
511abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                        -getResources().getDimensionPixelOffset(
521abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                                R.dimen.setup_done_button_container_width);
531abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            } else {
541abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                ((MarginLayoutParams) doneButtonContainer.getLayoutParams()).leftMargin =
551abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                        -getResources().getDimensionPixelOffset(
561abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                                R.dimen.setup_done_button_container_width);
571abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            }
581abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            view.findViewById(R.id.button_done).setFocusable(false);
597d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        }
607d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return view;
617d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
627d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
637d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    @Override
647d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    protected int getLayoutResourceId() {
657d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return R.layout.fragment_setup_multi_pane;
667d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
677d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
681abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    abstract protected SetupGuidedStepFragment onCreateContentFragment();
697d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
707d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    protected boolean needsDoneButton() {
717d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return true;
727d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
731abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
741abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    @Override
751abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    protected int[] getParentIdsForDelay() {
761abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        return new int[] {R.id.content_fragment, R.id.guidedactions_list};
771abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
781abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
791abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    @Override
801abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public int[] getSharedElementIds() {
811abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        return new int[] {R.id.guidedactions_background, R.id.done_button_container};
821abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
837d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko}
84