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 androidx.leanback.app;
15
16import android.view.View;
17
18import androidx.leanback.media.PlaybackGlueHost;
19import androidx.leanback.widget.Action;
20import androidx.leanback.widget.OnActionClickedListener;
21import androidx.leanback.widget.OnItemViewClickedListener;
22import androidx.leanback.widget.PlaybackRowPresenter;
23import androidx.leanback.widget.PlaybackSeekUi;
24import androidx.leanback.widget.Presenter;
25import androidx.leanback.widget.Row;
26import androidx.leanback.widget.RowPresenter;
27
28/**
29 * {@link PlaybackGlueHost} implementation
30 * the interaction between this class and {@link PlaybackSupportFragment}.
31 */
32public class PlaybackSupportFragmentGlueHost extends PlaybackGlueHost implements PlaybackSeekUi {
33    private final PlaybackSupportFragment mFragment;
34
35    public PlaybackSupportFragmentGlueHost(PlaybackSupportFragment fragment) {
36        this.mFragment = fragment;
37    }
38
39    @Override
40    public void setControlsOverlayAutoHideEnabled(boolean enabled) {
41        mFragment.setControlsOverlayAutoHideEnabled(enabled);
42    }
43
44    @Override
45    public boolean isControlsOverlayAutoHideEnabled() {
46        return mFragment.isControlsOverlayAutoHideEnabled();
47    }
48
49    @Override
50    public void setOnKeyInterceptListener(View.OnKeyListener onKeyListener) {
51        mFragment.setOnKeyInterceptListener(onKeyListener);
52    }
53
54    @Override
55    public void setOnActionClickedListener(final OnActionClickedListener listener) {
56        if (listener == null) {
57            mFragment.setOnPlaybackItemViewClickedListener(null);
58        } else {
59            mFragment.setOnPlaybackItemViewClickedListener(new OnItemViewClickedListener() {
60                @Override
61                public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
62                                          RowPresenter.ViewHolder rowViewHolder, Row row) {
63                    if (item instanceof Action) {
64                        listener.onActionClicked((Action) item);
65                    }
66                }
67            });
68        }
69    }
70
71    @Override
72    public void setHostCallback(HostCallback callback) {
73        mFragment.setHostCallback(callback);
74    }
75
76    @Override
77    public void notifyPlaybackRowChanged() {
78        mFragment.notifyPlaybackRowChanged();
79    }
80
81    @Override
82    public void setPlaybackRowPresenter(PlaybackRowPresenter presenter) {
83        mFragment.setPlaybackRowPresenter(presenter);
84    }
85
86    @Override
87    public void setPlaybackRow(Row row) {
88        mFragment.setPlaybackRow(row);
89    }
90
91    @Override
92    public void fadeOut() {
93        mFragment.fadeOut();
94    }
95
96    @Override
97    public boolean isControlsOverlayVisible() {
98        return mFragment.isControlsOverlayVisible();
99    }
100
101    @Override
102    public void hideControlsOverlay(boolean runAnimation) {
103        mFragment.hideControlsOverlay(runAnimation);
104    }
105
106    @Override
107    public void showControlsOverlay(boolean runAnimation) {
108        mFragment.showControlsOverlay(runAnimation);
109    }
110
111    @Override
112    public void setPlaybackSeekUiClient(Client client) {
113        mFragment.setPlaybackSeekUiClient(client);
114    }
115
116    final PlayerCallback mPlayerCallback =
117            new PlayerCallback() {
118                @Override
119                public void onBufferingStateChanged(boolean start) {
120                    mFragment.onBufferingStateChanged(start);
121                }
122
123                @Override
124                public void onError(int errorCode, CharSequence errorMessage) {
125                    mFragment.onError(errorCode, errorMessage);
126                }
127
128                @Override
129                public void onVideoSizeChanged(int videoWidth, int videoHeight) {
130                    mFragment.onVideoSizeChanged(videoWidth, videoHeight);
131                }
132            };
133
134    @Override
135    public PlayerCallback getPlayerCallback() {
136        return mPlayerCallback;
137    }
138}
139