1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the License 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 * or implied. See the License for the specific language governing permissions and limitations under 12 * the License. 13 */ 14package android.support.v17.leanback.app; 15 16import android.support.v17.leanback.media.PlaybackGlueHost; 17import android.support.v17.leanback.widget.Action; 18import android.support.v17.leanback.widget.OnActionClickedListener; 19import android.support.v17.leanback.widget.OnItemViewClickedListener; 20import android.support.v17.leanback.widget.PlaybackRowPresenter; 21import android.support.v17.leanback.widget.PlaybackSeekUi; 22import android.support.v17.leanback.widget.Presenter; 23import android.support.v17.leanback.widget.Row; 24import android.support.v17.leanback.widget.RowPresenter; 25import android.view.View; 26 27/** 28 * {@link PlaybackGlueHost} implementation 29 * the interaction between this class and {@link PlaybackFragment}. 30 */ 31public class PlaybackFragmentGlueHost extends PlaybackGlueHost implements PlaybackSeekUi { 32 private final PlaybackFragment mFragment; 33 34 public PlaybackFragmentGlueHost(PlaybackFragment fragment) { 35 this.mFragment = fragment; 36 } 37 38 @Override 39 public void setControlsOverlayAutoHideEnabled(boolean enabled) { 40 mFragment.setControlsOverlayAutoHideEnabled(enabled); 41 } 42 43 @Override 44 public boolean isControlsOverlayAutoHideEnabled() { 45 return mFragment.isControlsOverlayAutoHideEnabled(); 46 } 47 48 @Override 49 public void setOnKeyInterceptListener(View.OnKeyListener onKeyListener) { 50 mFragment.setOnKeyInterceptListener(onKeyListener); 51 } 52 53 @Override 54 public void setOnActionClickedListener(final OnActionClickedListener listener) { 55 if (listener == null) { 56 mFragment.setOnPlaybackItemViewClickedListener(null); 57 } else { 58 mFragment.setOnPlaybackItemViewClickedListener(new OnItemViewClickedListener() { 59 @Override 60 public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 61 RowPresenter.ViewHolder rowViewHolder, Row row) { 62 if (item instanceof Action) { 63 listener.onActionClicked((Action) item); 64 } 65 } 66 }); 67 } 68 } 69 70 @Override 71 public void setHostCallback(HostCallback callback) { 72 mFragment.setHostCallback(callback); 73 } 74 75 @Override 76 public void notifyPlaybackRowChanged() { 77 mFragment.notifyPlaybackRowChanged(); 78 } 79 80 @Override 81 public void setPlaybackRowPresenter(PlaybackRowPresenter presenter) { 82 mFragment.setPlaybackRowPresenter(presenter); 83 } 84 85 @Override 86 public void setPlaybackRow(Row row) { 87 mFragment.setPlaybackRow(row); 88 } 89 90 @Override 91 public void fadeOut() { 92 mFragment.fadeOut(); 93 } 94 95 @Override 96 public boolean isControlsOverlayVisible() { 97 return mFragment.isControlsOverlayVisible(); 98 } 99 100 @Override 101 public void hideControlsOverlay(boolean runAnimation) { 102 mFragment.hideControlsOverlay(runAnimation); 103 } 104 105 @Override 106 public void showControlsOverlay(boolean runAnimation) { 107 mFragment.showControlsOverlay(runAnimation); 108 } 109 110 @Override 111 public void setPlaybackSeekUiClient(Client client) { 112 mFragment.setPlaybackSeekUiClient(client); 113 } 114 115 final PlayerCallback mPlayerCallback = 116 new PlayerCallback() { 117 @Override 118 public void onBufferingStateChanged(boolean start) { 119 mFragment.onBufferingStateChanged(start); 120 } 121 122 @Override 123 public void onError(int errorCode, CharSequence errorMessage) { 124 mFragment.onError(errorCode, errorMessage); 125 } 126 127 @Override 128 public void onVideoSizeChanged(int videoWidth, int videoHeight) { 129 mFragment.onVideoSizeChanged(videoWidth, videoHeight); 130 } 131 }; 132 133 @Override 134 public PlayerCallback getPlayerCallback() { 135 return mPlayerCallback; 136 } 137} 138