From 1ebe916248210d6528c8722e265dfcfd73796df3 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Tue, 6 Oct 2020 22:02:58 +0300 Subject: [PATCH] refactor --- .../playback/managers/PlayerUiManager.java | 4 +- .../tv/ui/browse/BrowseFragment.java | 62 +------------------ ...eaderItem.java => FragmentHeaderItem.java} | 8 +-- .../tv/ui/browse/HeaderFragmentFactory.java | 4 +- .../tv/ui/browse/row/DynamicRowsFragment.java | 2 +- .../tv/ui/playback/PlaybackActivity.java | 29 ++++----- .../tv/ui/playback/PlaybackFragment.java | 11 +++- 7 files changed, 36 insertions(+), 84 deletions(-) rename smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/{BrowseHeaderItem.java => FragmentHeaderItem.java} (61%) diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/PlayerUiManager.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/PlayerUiManager.java index b02bbffb6..4266d371b 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/PlayerUiManager.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/PlayerUiManager.java @@ -73,9 +73,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada if (KeyHelpers.isBackKey(keyCode)) { enableSuggestionsResetTimeout(); - } else { - enableUiAutoHideTimeout(); } + + enableUiAutoHideTimeout(); } @Override diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseFragment.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseFragment.java index 42e3abf73..6d8de759a 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseFragment.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseFragment.java @@ -54,8 +54,6 @@ public class BrowseFragment extends BrowseSupportFragment implements BrowseView setupAdapter(); setupUi(); - // Prepare the manager that maintains the same background image between activities. - //prepareBackgroundManager(); setupEventListeners(); enableMainFragmentScaling(false); @@ -102,7 +100,7 @@ public class BrowseFragment extends BrowseSupportFragment implements BrowseView private int getHeaderResId(Object o) { if (o instanceof PageRow) { - return ((BrowseHeaderItem) ((PageRow) o).getHeaderItem()).getResId(); + return ((FragmentHeaderItem) ((PageRow) o).getHeaderItem()).getResId(); } return -1; @@ -113,28 +111,8 @@ public class BrowseFragment extends BrowseSupportFragment implements BrowseView Intent intent = new Intent(getActivity(), SearchActivity.class); startActivity(intent); }); - - // Listener moved to PageRowFragmentFactory - //getHeadersSupportFragment().setOnHeaderViewSelectedListener(new HeaderViewSelectedListener()); } - //private void initSampleRow() { - // setOnItemViewClickedListener(new ItemViewClickedListener()); - // setOnItemViewSelectedListener(new ItemViewSelectedListener()); - // - // // Create a row for this special case with more samples. - // HeaderItem gridHeader = new HeaderItem(getString(R.string.more_samples)); - // GridItemPresenter gridPresenter = new GridItemPresenter(this); - // ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(gridPresenter); - // gridRowAdapter.add(getString(R.string.grid_view)); - // gridRowAdapter.add(getString(R.string.guidedstep_first_title)); - // gridRowAdapter.add(getString(R.string.error_fragment)); - // gridRowAdapter.add(getString(R.string.personal_settings)); - // mCategoryRowAdapter.add(new ListRow(gridHeader, gridRowAdapter)); - // - // startEntranceTransition(); // TODO: Move startEntranceTransition to after all - //} - @Override public void updateHeaderIfEmpty(ErrorFragmentData data) { mHandler.postDelayed(() -> showErrorIfEmpty(data), 500); // need delay because header may be not updated @@ -181,7 +159,7 @@ public class BrowseFragment extends BrowseSupportFragment implements BrowseView } private void createHeader(Header header) { - HeaderItem headerItem = new BrowseHeaderItem(header.getId(), header.getTitle(), header.getType(), header.getResId());; + HeaderItem headerItem = new FragmentHeaderItem(header.getId(), header.getTitle(), header.getType(), header.getResId());; PageRow pageRow = new PageRow(headerItem); mCategoryRowAdapter.add(pageRow); @@ -218,42 +196,6 @@ public class BrowseFragment extends BrowseSupportFragment implements BrowseView } } - //private final class ItemViewClickedListener implements OnItemViewClickedListener { - // @Override - // public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, - // RowPresenter.ViewHolder rowViewHolder, Row row) { - // - // if (item instanceof String) { - // if (((String) item).contains(getString(R.string.grid_view))) { - // Intent intent = new Intent(getActivity(), VerticalGridActivity.class); - // Bundle bundle = - // ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) - // .toBundle(); - // startActivity(intent, bundle); - // } else if (((String) item).contains(getString(R.string.guidedstep_first_title))) { - // Intent intent = new Intent(getActivity(), GuidedStepActivity.class); - // Bundle bundle = - // ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) - // .toBundle(); - // startActivity(intent, bundle); - // } else if (((String) item).contains(getString(R.string.error_fragment))) { - // BrowseErrorFragment errorFragment = new BrowseErrorFragment(); - // getFragmentManager().beginTransaction().replace(R.id.main_frame, errorFragment) - // .addToBackStack(null).commit(); - // } else if(((String) item).contains(getString(R.string.personal_settings))) { - // Intent intent = new Intent(getActivity(), SettingsActivity.class); - // Bundle bundle = - // ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) - // .toBundle(); - // startActivity(intent, bundle); - // } else { - // Toast.makeText(getActivity(), ((String) item), Toast.LENGTH_SHORT) - // .show(); - // } - // } - // } - //} - //private final class ItemViewSelectedListener implements OnItemViewSelectedListener { // @Override // public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseHeaderItem.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/FragmentHeaderItem.java similarity index 61% rename from smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseHeaderItem.java rename to smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/FragmentHeaderItem.java index f923ecd0f..8899d5f0e 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseHeaderItem.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/FragmentHeaderItem.java @@ -2,21 +2,21 @@ package com.liskovsoft.smartyoutubetv2.tv.ui.browse; import androidx.leanback.widget.HeaderItem; -public class BrowseHeaderItem extends HeaderItem { +public class FragmentHeaderItem extends HeaderItem { private int mType = -1; private int mResId = -1; - public BrowseHeaderItem(long id, String name, int type, int resId) { + public FragmentHeaderItem(long id, String name, int type, int resId) { super(id, name); mType = type; mResId = resId; } - public BrowseHeaderItem(long id, String name) { + public FragmentHeaderItem(long id, String name) { super(id, name); } - public BrowseHeaderItem(String name) { + public FragmentHeaderItem(String name) { super(name); } diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/HeaderFragmentFactory.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/HeaderFragmentFactory.java index 252e1be80..87217593d 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/HeaderFragmentFactory.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/HeaderFragmentFactory.java @@ -38,8 +38,8 @@ public class HeaderFragmentFactory extends BrowseSupportFragment.FragmentFactory HeaderItem header = row.getHeaderItem(); Fragment fragment = null; - if (header instanceof BrowseHeaderItem) { - int type = ((BrowseHeaderItem) header).getType(); + if (header instanceof FragmentHeaderItem) { + int type = ((FragmentHeaderItem) header).getType(); if (type == Header.TYPE_ROW) { fragment = new HeaderRowsFragment(); diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/row/DynamicRowsFragment.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/row/DynamicRowsFragment.java index ad38e17ad..49ac891e1 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/row/DynamicRowsFragment.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/row/DynamicRowsFragment.java @@ -31,7 +31,7 @@ import java.util.Map; public abstract class DynamicRowsFragment extends RowsSupportFragment implements VideoGroupFragment { private static final String TAG = DynamicRowsFragment.class.getSimpleName(); - private static final int ZOOM_FACTOR = FocusHighlight.ZOOM_FACTOR_MEDIUM; + private static final int ZOOM_FACTOR = FocusHighlight.ZOOM_FACTOR_SMALL; private UriBackgroundManager mBackgroundManager; private Handler mHandler; private ArrayObjectAdapter mRowsAdapter; diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackActivity.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackActivity.java index 1337f5006..25bfe1515 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackActivity.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackActivity.java @@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment; import android.view.KeyEvent; import android.view.MotionEvent; +import com.liskovsoft.sharedutils.helpers.Helpers; import com.liskovsoft.sharedutils.mylogger.Log; import com.liskovsoft.smartyoutubetv2.tv.R; import com.liskovsoft.smartyoutubetv2.tv.ui.common.LeanbackActivity; @@ -81,27 +82,27 @@ public class PlaybackActivity extends LeanbackActivity { // Also, avoid enter pip on stop! // More info: https://developer.android.com/guide/topics/ui/picture-in-picture#continuing_playback - if (wannaEnterToPIP()) { - Log.d(TAG, "Entering PIP mode..."); + if (Helpers.isPictureInPictureSupported(this)) { + if (wannaEnterToPIP()) { + Log.d(TAG, "Entering PIP mode..."); - try { - if (Build.VERSION.SDK_INT >= 26) { - PictureInPictureParams.Builder params = new PictureInPictureParams.Builder(); - enterPictureInPictureMode(params.build()); - } else { - enterPictureInPictureMode(); + try { + if (Build.VERSION.SDK_INT >= 26) { + PictureInPictureParams.Builder params = new PictureInPictureParams.Builder(); + enterPictureInPictureMode(params.build()); + } else { + enterPictureInPictureMode(); + } + } catch (Exception e) { + // Device doesn't support picture-in-picture mode + Log.e(TAG, e.getMessage()); } - } catch (Exception e) { - // Device doesn't support picture-in-picture mode - Log.e(TAG, e.getMessage()); } } } private boolean wannaEnterToPIP() { - boolean pipIsSupported = Build.VERSION.SDK_INT >= 24 && getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); - - return pipIsSupported && !isInPictureInPictureMode() && mPlaybackFragment.isPIPEnabled(); + return !isInPictureInPictureMode() && mPlaybackFragment.isPIPEnabled(); } @Override diff --git a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java index 32cff9a95..9cdc4fbcc 100644 --- a/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java +++ b/smartyoutubetv2/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java @@ -286,7 +286,16 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi Row row) { if (item instanceof Video) { - mEventListener.onSuggestionItemClicked((Video) item); + if (getActivity() instanceof LeanbackActivity) { + boolean longClick = ((LeanbackActivity) getActivity()).isLongClick(); + Log.d(TAG, "Is long click: " + longClick); + + if (longClick) { + mEventListener.onSuggestionItemLongClicked((Video) item); + } else { + mEventListener.onSuggestionItemClicked((Video) item); + } + } } } }