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 {
31ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    public static final int ACTION_DONE = Integer.MAX_VALUE;
321abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
337d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    @Override
347d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    public View onCreateView(LayoutInflater inflater, ViewGroup container,
357d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko            Bundle savedInstanceState) {
367d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        View view = super.onCreateView(inflater, container, savedInstanceState);
371abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        SetupGuidedStepFragment contentFragment = onCreateContentFragment();
381abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        getChildFragmentManager().beginTransaction()
391abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                .replace(R.id.guided_step_fragment_container, contentFragment).commit();
407d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        if (needsDoneButton()) {
41ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            setOnClickAction(view.findViewById(R.id.button_done), getActionCategory(), ACTION_DONE);
427d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        } else {
431abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            View doneButtonContainer = view.findViewById(R.id.done_button_container);
44ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            // Use content view to check layout direction while view is being created.
45ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            if (getResources().getConfiguration().getLayoutDirection()
46ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                    == View.LAYOUT_DIRECTION_LTR) {
471abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                ((MarginLayoutParams) doneButtonContainer.getLayoutParams()).rightMargin =
481abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                        -getResources().getDimensionPixelOffset(
491abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                                R.dimen.setup_done_button_container_width);
501abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            } else {
511abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                ((MarginLayoutParams) doneButtonContainer.getLayoutParams()).leftMargin =
521abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                        -getResources().getDimensionPixelOffset(
531abddd9f6225298066094e20a6c29061b6af4590Nick Chalko                                R.dimen.setup_done_button_container_width);
541abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            }
551abddd9f6225298066094e20a6c29061b6af4590Nick Chalko            view.findViewById(R.id.button_done).setFocusable(false);
567d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        }
577d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return view;
587d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
597d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
607d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    @Override
617d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    protected int getLayoutResourceId() {
627d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return R.layout.fragment_setup_multi_pane;
637d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
647d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
651abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    abstract protected SetupGuidedStepFragment onCreateContentFragment();
667d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko
67ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    abstract protected String getActionCategory();
68ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko
697d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    protected boolean needsDoneButton() {
707d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        return true;
717d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    }
721abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
731abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    @Override
741abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    protected int[] getParentIdsForDelay() {
751abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        return new int[] {R.id.content_fragment, R.id.guidedactions_list};
761abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
771abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
781abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    @Override
791abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public int[] getSharedElementIds() {
80ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        return new int[] {R.id.action_fragment_background, R.id.done_button_container};
811abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
827d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko}
83