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