14702556bfd15c9819a7b2af759aee0f719cd631fsusnata/*
24702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Copyright (C) 2016 The Android Open Source Project
34702556bfd15c9819a7b2af759aee0f719cd631fsusnata *
44702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
54702556bfd15c9819a7b2af759aee0f719cd631fsusnata * in compliance with the License. You may obtain a copy of the License at
64702556bfd15c9819a7b2af759aee0f719cd631fsusnata *
74702556bfd15c9819a7b2af759aee0f719cd631fsusnata * http://www.apache.org/licenses/LICENSE-2.0
84702556bfd15c9819a7b2af759aee0f719cd631fsusnata *
94702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Unless required by applicable law or agreed to in writing, software distributed under the License
104702556bfd15c9819a7b2af759aee0f719cd631fsusnata * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
114702556bfd15c9819a7b2af759aee0f719cd631fsusnata * or implied. See the License for the specific language governing permissions and limitations under
124702556bfd15c9819a7b2af759aee0f719cd631fsusnata * the License.
134702556bfd15c9819a7b2af759aee0f719cd631fsusnata */
14afd999aba1b74d876ea2620775ba9157e6df7102susnatapackage android.support.v17.leanback.app;
15afd999aba1b74d876ea2620775ba9157e6df7102susnata
1695ac470f2bbea06114a64906d95c0da7d9412db0Dake Guimport android.support.v17.leanback.media.PlaybackGlueHost;
17afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.Action;
18afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.OnActionClickedListener;
19afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.OnItemViewClickedListener;
204702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.support.v17.leanback.widget.PlaybackRowPresenter;
213bcad88cbf4488e747d84893c35f2351b8f84afeDake Guimport android.support.v17.leanback.widget.PlaybackSeekUi;
22afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.Presenter;
23afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.Row;
24afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.support.v17.leanback.widget.RowPresenter;
25afd999aba1b74d876ea2620775ba9157e6df7102susnataimport android.view.View;
26afd999aba1b74d876ea2620775ba9157e6df7102susnata
27afd999aba1b74d876ea2620775ba9157e6df7102susnata/**
2895ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu * {@link PlaybackGlueHost} implementation
29afd999aba1b74d876ea2620775ba9157e6df7102susnata * the interaction between this class and {@link PlaybackFragment}.
30afd999aba1b74d876ea2620775ba9157e6df7102susnata */
313bcad88cbf4488e747d84893c35f2351b8f84afeDake Gupublic class PlaybackFragmentGlueHost extends PlaybackGlueHost implements PlaybackSeekUi {
32afd999aba1b74d876ea2620775ba9157e6df7102susnata    private final PlaybackFragment mFragment;
33afd999aba1b74d876ea2620775ba9157e6df7102susnata
34afd999aba1b74d876ea2620775ba9157e6df7102susnata    public PlaybackFragmentGlueHost(PlaybackFragment fragment) {
35afd999aba1b74d876ea2620775ba9157e6df7102susnata        this.mFragment = fragment;
36afd999aba1b74d876ea2620775ba9157e6df7102susnata    }
37afd999aba1b74d876ea2620775ba9157e6df7102susnata
38afd999aba1b74d876ea2620775ba9157e6df7102susnata    @Override
393bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public void setControlsOverlayAutoHideEnabled(boolean enabled) {
403bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        mFragment.setControlsOverlayAutoHideEnabled(enabled);
413bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
423bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
433bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
443bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public boolean isControlsOverlayAutoHideEnabled() {
453bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        return mFragment.isControlsOverlayAutoHideEnabled();
46afd999aba1b74d876ea2620775ba9157e6df7102susnata    }
47afd999aba1b74d876ea2620775ba9157e6df7102susnata
48afd999aba1b74d876ea2620775ba9157e6df7102susnata    @Override
49afd999aba1b74d876ea2620775ba9157e6df7102susnata    public void setOnKeyInterceptListener(View.OnKeyListener onKeyListener) {
50afd999aba1b74d876ea2620775ba9157e6df7102susnata        mFragment.setOnKeyInterceptListener(onKeyListener);
51afd999aba1b74d876ea2620775ba9157e6df7102susnata    }
52afd999aba1b74d876ea2620775ba9157e6df7102susnata
53afd999aba1b74d876ea2620775ba9157e6df7102susnata    @Override
54afd999aba1b74d876ea2620775ba9157e6df7102susnata    public void setOnActionClickedListener(final OnActionClickedListener listener) {
55ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu        if (listener == null) {
56ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu            mFragment.setOnPlaybackItemViewClickedListener(null);
57ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu        } else {
58ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu            mFragment.setOnPlaybackItemViewClickedListener(new OnItemViewClickedListener() {
59ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                @Override
60ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
61ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                                          RowPresenter.ViewHolder rowViewHolder, Row row) {
62ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                    if (item instanceof Action) {
63ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                        listener.onActionClicked((Action) item);
64ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu                    }
65afd999aba1b74d876ea2620775ba9157e6df7102susnata                }
66ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu            });
67ef05d5494fac2cc80f95d2627e1ec31615de360dDake Gu        }
68afd999aba1b74d876ea2620775ba9157e6df7102susnata    }
694702556bfd15c9819a7b2af759aee0f719cd631fsusnata
704702556bfd15c9819a7b2af759aee0f719cd631fsusnata    @Override
7195ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu    public void setHostCallback(HostCallback callback) {
7295ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu        mFragment.setHostCallback(callback);
734702556bfd15c9819a7b2af759aee0f719cd631fsusnata    }
744702556bfd15c9819a7b2af759aee0f719cd631fsusnata
754702556bfd15c9819a7b2af759aee0f719cd631fsusnata    @Override
764702556bfd15c9819a7b2af759aee0f719cd631fsusnata    public void notifyPlaybackRowChanged() {
774702556bfd15c9819a7b2af759aee0f719cd631fsusnata        mFragment.notifyPlaybackRowChanged();
784702556bfd15c9819a7b2af759aee0f719cd631fsusnata    }
794702556bfd15c9819a7b2af759aee0f719cd631fsusnata
804702556bfd15c9819a7b2af759aee0f719cd631fsusnata    @Override
814702556bfd15c9819a7b2af759aee0f719cd631fsusnata    public void setPlaybackRowPresenter(PlaybackRowPresenter presenter) {
824702556bfd15c9819a7b2af759aee0f719cd631fsusnata        mFragment.setPlaybackRowPresenter(presenter);
834702556bfd15c9819a7b2af759aee0f719cd631fsusnata    }
844702556bfd15c9819a7b2af759aee0f719cd631fsusnata
854702556bfd15c9819a7b2af759aee0f719cd631fsusnata    @Override
864702556bfd15c9819a7b2af759aee0f719cd631fsusnata    public void setPlaybackRow(Row row) {
874702556bfd15c9819a7b2af759aee0f719cd631fsusnata        mFragment.setPlaybackRow(row);
884702556bfd15c9819a7b2af759aee0f719cd631fsusnata    }
8995ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu
9095ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu    @Override
9195ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu    public void fadeOut() {
9295ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu        mFragment.fadeOut();
9395ac470f2bbea06114a64906d95c0da7d9412db0Dake Gu    }
943bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
953bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
963bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public boolean isControlsOverlayVisible() {
973bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        return mFragment.isControlsOverlayVisible();
983bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
993bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1003bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
1013bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public void hideControlsOverlay(boolean runAnimation) {
1023bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        mFragment.hideControlsOverlay(runAnimation);
1033bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
1043bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1053bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
1063bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public void showControlsOverlay(boolean runAnimation) {
1073bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        mFragment.showControlsOverlay(runAnimation);
1083bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
1093bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1103bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
1113bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public void setPlaybackSeekUiClient(Client client) {
1123bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        mFragment.setPlaybackSeekUiClient(client);
1133bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
1143bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1153bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    final PlayerCallback mPlayerCallback =
1163bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu            new PlayerCallback() {
1173bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                @Override
1183bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                public void onBufferingStateChanged(boolean start) {
1193bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                    mFragment.onBufferingStateChanged(start);
1203bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                }
1213bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1223bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                @Override
1233bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                public void onError(int errorCode, CharSequence errorMessage) {
1243bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                    mFragment.onError(errorCode, errorMessage);
1253bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                }
1263bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1273bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                @Override
1283bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                public void onVideoSizeChanged(int videoWidth, int videoHeight) {
1293bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                    mFragment.onVideoSizeChanged(videoWidth, videoHeight);
1303bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu                }
1313bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu            };
1323bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu
1333bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    @Override
1343bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    public PlayerCallback getPlayerCallback() {
1353bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu        return mPlayerCallback;
1363bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu    }
137afd999aba1b74d876ea2620775ba9157e6df7102susnata}
138