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