1ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu// CHECKSTYLE:OFF Generated code
2ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu/* This file is auto-generated from BrowseTestSupportFragment.java.  DO NOT MODIFY. */
3ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu
4255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu/*
5255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Copyright (C) 2015 The Android Open Source Project
6255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu *
7255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * in compliance with the License. You may obtain a copy of the License at
9255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu *
10255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * http://www.apache.org/licenses/LICENSE-2.0
11255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu *
12255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License
13255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * or implied. See the License for the specific language governing permissions and limitations under
15255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * the License.
16255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu */
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app;
18255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_HEADERS_STATE;
20ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_LOAD_DATA_DELAY;
21ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_NUM_ROWS;
22ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_REPEAT_PER_ROW;
23ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD;
24ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_TEST_ENTRANCE_TRANSITION;
253103f63e99d47573823957f7aa34308555873221Aurimas Liutikas
26255e7911fa9ef664618b74bb9959e00479a9bec1Dake Guimport android.os.Bundle;
27255e7911fa9ef664618b74bb9959e00479a9bec1Dake Guimport android.os.Handler;
288619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.util.Log;
298619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.View;
308619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas
31ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ArrayObjectAdapter;
32ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.HeaderItem;
33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRow;
34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRowPresenter;
35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewClickedListener;
36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewSelectedListener;
37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter;
38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Row;
39ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.RowPresenter;
40ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.VerticalGridView;
41255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
42255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gupublic class BrowseTestFragment extends BrowseFragment {
43255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    private static final String TAG = "BrowseTestFragment";
44255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
45255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    final static int DEFAULT_NUM_ROWS = 100;
46255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    final static int DEFAULT_REPEAT_PER_ROW = 20;
47255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    final static long DEFAULT_LOAD_DATA_DELAY = 2000;
48255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    final static boolean DEFAULT_TEST_ENTRANCE_TRANSITION = true;
4935d7a6c31606ed4ca38deda3cacae080a95c95c9susnata    final static boolean DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD = false;
50255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
51255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    private ArrayObjectAdapter mRowsAdapter;
52255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
53255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    // For good performance, it's important to use a single instance of
54255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    // a card presenter for all rows using that presenter.
55255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    final static StringPresenter sCardPresenter = new StringPresenter();
56255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
57804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu    int NUM_ROWS;
58804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu    int REPEAT_PER_ROW;
594ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    boolean mEntranceTransitionStarted;
604ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    boolean mEntranceTransitionEnded;
61804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu
62255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    @Override
63255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    public void onCreate(Bundle savedInstanceState) {
64255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        Log.i(TAG, "onCreate");
65255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        super.onCreate(savedInstanceState);
66255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
67804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        Bundle arguments = getArguments();
68804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        NUM_ROWS = arguments.getInt(EXTRA_NUM_ROWS, BrowseTestFragment.DEFAULT_NUM_ROWS);
69804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        REPEAT_PER_ROW = arguments.getInt(EXTRA_REPEAT_PER_ROW,
70804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                DEFAULT_REPEAT_PER_ROW);
71804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        long LOAD_DATA_DELAY = arguments.getLong(EXTRA_LOAD_DATA_DELAY,
72804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                DEFAULT_LOAD_DATA_DELAY);
73804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        boolean TEST_ENTRANCE_TRANSITION = arguments.getBoolean(
74804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                EXTRA_TEST_ENTRANCE_TRANSITION,
75804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                DEFAULT_TEST_ENTRANCE_TRANSITION);
76804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu        final boolean SET_ADAPTER_AFTER_DATA_LOAD = arguments.getBoolean(
77804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                EXTRA_SET_ADAPTER_AFTER_DATA_LOAD,
78804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD);
79804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu
8035d7a6c31606ed4ca38deda3cacae080a95c95c9susnata        if (!SET_ADAPTER_AFTER_DATA_LOAD) {
8135d7a6c31606ed4ca38deda3cacae080a95c95c9susnata            setupRows();
8235d7a6c31606ed4ca38deda3cacae080a95c95c9susnata        }
8335d7a6c31606ed4ca38deda3cacae080a95c95c9susnata
84255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        setTitle("BrowseTestFragment");
85f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu        setHeadersState(arguments.getInt(EXTRA_HEADERS_STATE, HEADERS_ENABLED));
86255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
87255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        setOnSearchClickedListener(new View.OnClickListener() {
88255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            @Override
89255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            public void onClick(View view) {
90255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                Log.i(TAG, "onSearchClicked");
91255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            }
92255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        });
93255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
94255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        setOnItemViewClickedListener(new ItemViewClickedListener());
95255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
96255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            @Override
97255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
98255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                    RowPresenter.ViewHolder rowViewHolder, Row row) {
998da2c8555e4a9b8689f9f973089f3010ec44ed6cDake Gu                Log.i(TAG, "onItemSelected: " + item + " row " + row);
100255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            }
101255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        });
102255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        if (TEST_ENTRANCE_TRANSITION) {
103255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            // don't run entrance transition if fragment is restored.
104255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            if (savedInstanceState == null) {
105255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                prepareEntranceTransition();
106255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            }
107255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        }
108255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        // simulates in a real world use case  data being loaded two seconds later
109255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        new Handler().postDelayed(new Runnable() {
110255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            @Override
111255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            public void run() {
112804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                if (getActivity() == null || getActivity().isDestroyed()) {
113804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                    return;
114804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu                }
11535d7a6c31606ed4ca38deda3cacae080a95c95c9susnata                if (SET_ADAPTER_AFTER_DATA_LOAD) {
11635d7a6c31606ed4ca38deda3cacae080a95c95c9susnata                    setupRows();
11735d7a6c31606ed4ca38deda3cacae080a95c95c9susnata                }
118255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                loadData();
119255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                startEntranceTransition();
120255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            }
121255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        }, LOAD_DATA_DELAY);
122255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    }
123255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
124255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    private void setupRows() {
125255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        ListRowPresenter lrp = new ListRowPresenter();
126255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
127255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        mRowsAdapter = new ArrayObjectAdapter(lrp);
128255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
129255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        setAdapter(mRowsAdapter);
130255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    }
131255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
1324ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    @Override
1334ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    protected void onEntranceTransitionStart() {
1344ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu        super.onEntranceTransitionStart();
1354ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu        mEntranceTransitionStarted = true;
1364ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    }
1374ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu
1384ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    @Override
1394ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    protected void onEntranceTransitionEnd() {
1404ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu        super.onEntranceTransitionEnd();
1414ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu        mEntranceTransitionEnded = true;
1424ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu    }
1434ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu
144255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    private void loadData() {
145255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        for (int i = 0; i < NUM_ROWS; ++i) {
146255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(sCardPresenter);
1473bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu            int index = 0;
148255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            for (int j = 0; j < REPEAT_PER_ROW; ++j) {
1493bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Hello world-" + (index++));
1503bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("This is a test-" + (index++));
1513bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Android TV-" + (index++));
1523bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Leanback-" + (index++));
1533bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Hello world-" + (index++));
1543bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Android TV-" + (index++));
1553bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("Leanback-" + (index++));
1563bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu                listRowAdapter.add("GuidedStepFragment-" + (index++));
157255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            }
158255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            HeaderItem header = new HeaderItem(i, "Row " + i);
159255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            mRowsAdapter.add(new ListRow(header, listRowAdapter));
160255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        }
161255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    }
162255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu
163255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    private final class ItemViewClickedListener implements OnItemViewClickedListener {
164255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        @Override
165255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
166255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu                RowPresenter.ViewHolder rowViewHolder, Row row) {
167255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu            Log.i(TAG, "onItemClicked: " + item + " row " + row);
168255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu        }
169255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu    }
170d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata
171d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata    public VerticalGridView getGridView() {
172d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata        return getRowsFragment().getVerticalGridView();
173d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata    }
174255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu}
175