1ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu// CHECKSTYLE:OFF Generated code
2ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu/* This file is auto-generated from DetailsTestSupportFragment.java.  DO NOT MODIFY. */
3ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu
4180dc4030628425a8081fe058bdc1d529c505ae8susnata/*
5180dc4030628425a8081fe058bdc1d529c505ae8susnata * Copyright (C) 2016 The Android Open Source Project
6180dc4030628425a8081fe058bdc1d529c505ae8susnata *
7180dc4030628425a8081fe058bdc1d529c505ae8susnata * Licensed under the Apache License, Version 2.0 (the "License");
8180dc4030628425a8081fe058bdc1d529c505ae8susnata * you may not use this file except in compliance with the License.
9180dc4030628425a8081fe058bdc1d529c505ae8susnata * You may obtain a copy of the License at
10180dc4030628425a8081fe058bdc1d529c505ae8susnata *
11180dc4030628425a8081fe058bdc1d529c505ae8susnata *      http://www.apache.org/licenses/LICENSE-2.0
12180dc4030628425a8081fe058bdc1d529c505ae8susnata *
13180dc4030628425a8081fe058bdc1d529c505ae8susnata * Unless required by applicable law or agreed to in writing, software
14180dc4030628425a8081fe058bdc1d529c505ae8susnata * distributed under the License is distributed on an "AS IS" BASIS,
15180dc4030628425a8081fe058bdc1d529c505ae8susnata * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16180dc4030628425a8081fe058bdc1d529c505ae8susnata * See the License for the specific language governing permissions and
17180dc4030628425a8081fe058bdc1d529c505ae8susnata * limitations under the License.
18180dc4030628425a8081fe058bdc1d529c505ae8susnata */
19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app;
20180dc4030628425a8081fe058bdc1d529c505ae8susnata
21180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.content.res.Resources;
22180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.os.Bundle;
23180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.os.Handler;
248619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.ViewGroup;
258619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas
26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.test.R;
27ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.AbstractDetailsDescriptionPresenter;
28ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Action;
29ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ArrayObjectAdapter;
30ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ClassPresenterSelector;
31ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.DetailsOverviewRow;
32ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter;
33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.HeaderItem;
34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ImageCardView;
35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRow;
36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRowPresenter;
37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter;
38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.SparseArrayObjectAdapter;
39180dc4030628425a8081fe058bdc1d529c505ae8susnata
409869eb38607552105baa88a0fcba610461045eb5Dake Gu/**
419869eb38607552105baa88a0fcba610461045eb5Dake Gu * Base class provides overview row and some related rows.
429869eb38607552105baa88a0fcba610461045eb5Dake Gu */
43ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspublic class DetailsTestFragment extends androidx.leanback.app.DetailsFragment {
44180dc4030628425a8081fe058bdc1d529c505ae8susnata    private static final int NUM_ROWS = 3;
45180dc4030628425a8081fe058bdc1d529c505ae8susnata    private ArrayObjectAdapter mRowsAdapter;
46180dc4030628425a8081fe058bdc1d529c505ae8susnata    private PhotoItem mPhotoItem;
47180dc4030628425a8081fe058bdc1d529c505ae8susnata    private final Presenter mCardPresenter = new Presenter() {
48180dc4030628425a8081fe058bdc1d529c505ae8susnata        @Override
49180dc4030628425a8081fe058bdc1d529c505ae8susnata        public ViewHolder onCreateViewHolder(ViewGroup parent) {
50180dc4030628425a8081fe058bdc1d529c505ae8susnata            ImageCardView cardView = new ImageCardView(getActivity());
51180dc4030628425a8081fe058bdc1d529c505ae8susnata            cardView.setFocusable(true);
52180dc4030628425a8081fe058bdc1d529c505ae8susnata            cardView.setFocusableInTouchMode(true);
53180dc4030628425a8081fe058bdc1d529c505ae8susnata            return new ViewHolder(cardView);
54180dc4030628425a8081fe058bdc1d529c505ae8susnata        }
55180dc4030628425a8081fe058bdc1d529c505ae8susnata
56180dc4030628425a8081fe058bdc1d529c505ae8susnata        @Override
57180dc4030628425a8081fe058bdc1d529c505ae8susnata        public void onBindViewHolder(ViewHolder viewHolder, Object item) {
58180dc4030628425a8081fe058bdc1d529c505ae8susnata            ImageCardView imageCardView = (ImageCardView) viewHolder.view;
59180dc4030628425a8081fe058bdc1d529c505ae8susnata            imageCardView.setTitleText("Android Tv");
60180dc4030628425a8081fe058bdc1d529c505ae8susnata            imageCardView.setContentText("Android Tv Production Inc.");
61180dc4030628425a8081fe058bdc1d529c505ae8susnata            imageCardView.setMainImageDimensions(313, 176);
62180dc4030628425a8081fe058bdc1d529c505ae8susnata        }
63180dc4030628425a8081fe058bdc1d529c505ae8susnata
64180dc4030628425a8081fe058bdc1d529c505ae8susnata        @Override
65180dc4030628425a8081fe058bdc1d529c505ae8susnata        public void onUnbindViewHolder(ViewHolder viewHolder) {
66180dc4030628425a8081fe058bdc1d529c505ae8susnata        }
67180dc4030628425a8081fe058bdc1d529c505ae8susnata    };
68180dc4030628425a8081fe058bdc1d529c505ae8susnata
69180dc4030628425a8081fe058bdc1d529c505ae8susnata    private static final int ACTION_RENT = 2;
70180dc4030628425a8081fe058bdc1d529c505ae8susnata    private static final int ACTION_BUY = 3;
71180dc4030628425a8081fe058bdc1d529c505ae8susnata
729869eb38607552105baa88a0fcba610461045eb5Dake Gu    protected long mTimeToLoadOverviewRow = 1000;
739869eb38607552105baa88a0fcba610461045eb5Dake Gu    protected long mTimeToLoadRelatedRow = 2000;
74180dc4030628425a8081fe058bdc1d529c505ae8susnata
75180dc4030628425a8081fe058bdc1d529c505ae8susnata    private Action mActionRent;
76180dc4030628425a8081fe058bdc1d529c505ae8susnata    private Action mActionBuy;
77180dc4030628425a8081fe058bdc1d529c505ae8susnata
789869eb38607552105baa88a0fcba610461045eb5Dake Gu    protected int mMinVerticalOffset = -100;
79180dc4030628425a8081fe058bdc1d529c505ae8susnata
80180dc4030628425a8081fe058bdc1d529c505ae8susnata    @Override
81180dc4030628425a8081fe058bdc1d529c505ae8susnata    public void onCreate(Bundle savedInstanceState) {
82180dc4030628425a8081fe058bdc1d529c505ae8susnata        super.onCreate(savedInstanceState);
83180dc4030628425a8081fe058bdc1d529c505ae8susnata        setTitle("Leanback Sample App");
84180dc4030628425a8081fe058bdc1d529c505ae8susnata
85180dc4030628425a8081fe058bdc1d529c505ae8susnata        mActionRent = new Action(ACTION_RENT, "Rent", "$3.99",
86180dc4030628425a8081fe058bdc1d529c505ae8susnata                getResources().getDrawable(R.drawable.ic_action_a));
87180dc4030628425a8081fe058bdc1d529c505ae8susnata        mActionBuy = new Action(ACTION_BUY, "Buy $9.99");
88180dc4030628425a8081fe058bdc1d529c505ae8susnata
89180dc4030628425a8081fe058bdc1d529c505ae8susnata        ClassPresenterSelector ps = new ClassPresenterSelector();
90180dc4030628425a8081fe058bdc1d529c505ae8susnata        FullWidthDetailsOverviewRowPresenter dorPresenter =
91180dc4030628425a8081fe058bdc1d529c505ae8susnata                new FullWidthDetailsOverviewRowPresenter(new AbstractDetailsDescriptionPresenter() {
92180dc4030628425a8081fe058bdc1d529c505ae8susnata                    @Override
93180dc4030628425a8081fe058bdc1d529c505ae8susnata                    protected void onBindDescription(
94180dc4030628425a8081fe058bdc1d529c505ae8susnata                            AbstractDetailsDescriptionPresenter.ViewHolder vh, Object item) {
95180dc4030628425a8081fe058bdc1d529c505ae8susnata                        vh.getTitle().setText("Funny Movie");
96180dc4030628425a8081fe058bdc1d529c505ae8susnata                        vh.getSubtitle().setText("Android TV Production Inc.");
97180dc4030628425a8081fe058bdc1d529c505ae8susnata                        vh.getBody().setText("What a great movie!");
98180dc4030628425a8081fe058bdc1d529c505ae8susnata                    }
99180dc4030628425a8081fe058bdc1d529c505ae8susnata                });
100180dc4030628425a8081fe058bdc1d529c505ae8susnata
101180dc4030628425a8081fe058bdc1d529c505ae8susnata        ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter);
102180dc4030628425a8081fe058bdc1d529c505ae8susnata        ps.addClassPresenter(ListRow.class, new ListRowPresenter());
103180dc4030628425a8081fe058bdc1d529c505ae8susnata        mRowsAdapter = new ArrayObjectAdapter(ps);
104180dc4030628425a8081fe058bdc1d529c505ae8susnata    }
105180dc4030628425a8081fe058bdc1d529c505ae8susnata
106180dc4030628425a8081fe058bdc1d529c505ae8susnata    public void setItem(PhotoItem photoItem) {
107180dc4030628425a8081fe058bdc1d529c505ae8susnata        mPhotoItem = photoItem;
108180dc4030628425a8081fe058bdc1d529c505ae8susnata        mRowsAdapter.clear();
109180dc4030628425a8081fe058bdc1d529c505ae8susnata        new Handler().postDelayed(new Runnable() {
110e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas            @Override
111180dc4030628425a8081fe058bdc1d529c505ae8susnata            public void run() {
112738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                if (getActivity() == null) {
113738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                    return;
114738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                }
115180dc4030628425a8081fe058bdc1d529c505ae8susnata                Resources res = getActivity().getResources();
116180dc4030628425a8081fe058bdc1d529c505ae8susnata                DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle());
117180dc4030628425a8081fe058bdc1d529c505ae8susnata                dor.setImageDrawable(res.getDrawable(mPhotoItem.getImageResourceId()));
118180dc4030628425a8081fe058bdc1d529c505ae8susnata                SparseArrayObjectAdapter adapter = new SparseArrayObjectAdapter();
119180dc4030628425a8081fe058bdc1d529c505ae8susnata                adapter.set(ACTION_RENT, mActionRent);
120180dc4030628425a8081fe058bdc1d529c505ae8susnata                adapter.set(ACTION_BUY, mActionBuy);
121180dc4030628425a8081fe058bdc1d529c505ae8susnata                dor.setActionsAdapter(adapter);
122180dc4030628425a8081fe058bdc1d529c505ae8susnata                mRowsAdapter.add(0, dor);
123180dc4030628425a8081fe058bdc1d529c505ae8susnata                setSelectedPosition(0, true);
124180dc4030628425a8081fe058bdc1d529c505ae8susnata            }
1259869eb38607552105baa88a0fcba610461045eb5Dake Gu        }, mTimeToLoadOverviewRow);
126180dc4030628425a8081fe058bdc1d529c505ae8susnata
127180dc4030628425a8081fe058bdc1d529c505ae8susnata
128180dc4030628425a8081fe058bdc1d529c505ae8susnata        new Handler().postDelayed(new Runnable() {
129e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas            @Override
130180dc4030628425a8081fe058bdc1d529c505ae8susnata            public void run() {
131738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                if (getActivity() == null) {
132738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                    return;
133738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu                }
134180dc4030628425a8081fe058bdc1d529c505ae8susnata                for (int i = 0; i < NUM_ROWS; ++i) {
135180dc4030628425a8081fe058bdc1d529c505ae8susnata                    ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter);
136180dc4030628425a8081fe058bdc1d529c505ae8susnata                    listRowAdapter.add(new PhotoItem("Hello world", R.drawable.spiderman));
137180dc4030628425a8081fe058bdc1d529c505ae8susnata                    listRowAdapter.add(new PhotoItem("This is a test", R.drawable.spiderman));
138180dc4030628425a8081fe058bdc1d529c505ae8susnata                    listRowAdapter.add(new PhotoItem("Android TV", R.drawable.spiderman));
139180dc4030628425a8081fe058bdc1d529c505ae8susnata                    listRowAdapter.add(new PhotoItem("Leanback", R.drawable.spiderman));
140180dc4030628425a8081fe058bdc1d529c505ae8susnata                    HeaderItem header = new HeaderItem(i, "Row " + i);
141180dc4030628425a8081fe058bdc1d529c505ae8susnata                    mRowsAdapter.add(new ListRow(header, listRowAdapter));
142180dc4030628425a8081fe058bdc1d529c505ae8susnata                }
143180dc4030628425a8081fe058bdc1d529c505ae8susnata            }
1449869eb38607552105baa88a0fcba610461045eb5Dake Gu        }, mTimeToLoadRelatedRow);
145180dc4030628425a8081fe058bdc1d529c505ae8susnata
146180dc4030628425a8081fe058bdc1d529c505ae8susnata        setAdapter(mRowsAdapter);
147180dc4030628425a8081fe058bdc1d529c505ae8susnata    }
148180dc4030628425a8081fe058bdc1d529c505ae8susnata
149180dc4030628425a8081fe058bdc1d529c505ae8susnata}
150