From cfd31f47a8fc29bc0ce97dd50e1a98aca4c22c1c Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Mon, 21 Sep 2020 06:37:30 +0300 Subject: [PATCH] refactor --- .../playback/MainPlayerEventBridge.java | 4 ++-- .../playback/PlayerEventListenerHelper.java | 6 +++--- ...ontroller.java => PlaybackController.java} | 2 +- ...ler.java => PlaybackEngineController.java} | 2 +- ...troller.java => PlaybackUiController.java} | 2 +- .../listener/PlayerEventListener.java | 4 ++-- .../managers/AutoFrameRateManager.java | 20 +++++++++---------- .../playback/managers/PlayerUiManager.java | 5 ++--- .../common/app/views/PlaybackView.java | 4 ++-- .../common/app/views/ViewManager.java | 4 +++- .../tv/ui/playback/PlaybackActivity.java | 6 ++++++ .../tv/ui/playback/PlaybackFragment.java | 7 +++++-- 12 files changed, 38 insertions(+), 28 deletions(-) rename common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/{PlayerController.java => PlaybackController.java} (78%) rename common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/{PlayerEngineController.java => PlaybackEngineController.java} (91%) rename common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/{PlayerUiController.java => PlaybackUiController.java} (88%) diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/MainPlayerEventBridge.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/MainPlayerEventBridge.java index 5f421ccbc..d26df6d27 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/MainPlayerEventBridge.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/MainPlayerEventBridge.java @@ -1,7 +1,7 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback; import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.AutoFrameRateManager; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.HistoryUpdater; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.PlayerUiManager; @@ -43,7 +43,7 @@ public class MainPlayerEventBridge implements PlayerEventListener { } @Override - public void setController(PlayerController controller) { + public void setController(PlaybackController controller) { process(listener -> listener.setController(controller)); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/PlayerEventListenerHelper.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/PlayerEventListenerHelper.java index 5003ce15c..cdbf367fc 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/PlayerEventListenerHelper.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/PlayerEventListenerHelper.java @@ -3,17 +3,17 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback; import android.app.Activity; import androidx.fragment.app.Fragment; import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener; import com.liskovsoft.smartyoutubetv2.common.autoframerate.FormatItem; public abstract class PlayerEventListenerHelper implements PlayerEventListener { - protected PlayerController mController; + protected PlaybackController mController; protected Activity mActivity; protected Activity mParentActivity; @Override - public void setController(PlayerController controller) { + public void setController(PlaybackController controller) { mController = controller; mActivity = ((Fragment) controller).getActivity(); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerController.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackController.java similarity index 78% rename from common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerController.java rename to common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackController.java index 2586e4323..454bdb2b9 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerController.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackController.java @@ -4,7 +4,7 @@ import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video; // is paused, position, tracks (audio, video, subs), codecs, aspect, speed // title, subtitle (description), subscribed/liked nums, published date, toggle buttons, simple buttons -public interface PlayerController extends PlayerEngineController, PlayerUiController { +public interface PlaybackController extends PlaybackEngineController, PlaybackUiController { void setVideo(Video item); Video getVideo(); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerEngineController.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackEngineController.java similarity index 91% rename from common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerEngineController.java rename to common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackEngineController.java index 6af65fb6f..10b7c4a26 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerEngineController.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackEngineController.java @@ -5,7 +5,7 @@ import com.liskovsoft.smartyoutubetv2.common.autoframerate.FormatItem; import java.io.InputStream; import java.util.List; -public interface PlayerEngineController { +public interface PlaybackEngineController { void openDash(InputStream dashManifest); void openHls(String hlsPlaylistUrl); long getPositionMs(); diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerUiController.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackUiController.java similarity index 88% rename from common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerUiController.java rename to common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackUiController.java index 890354787..3d7492586 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlayerUiController.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controller/PlaybackUiController.java @@ -2,7 +2,7 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller; import com.liskovsoft.smartyoutubetv2.common.app.models.data.VideoGroup; -public interface PlayerUiController { +public interface PlaybackUiController { void updateSuggestions(VideoGroup group); void resetSuggestedPosition(); void clearSuggestions(); diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEventListener.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEventListener.java index 5253bd5ab..609ce30dd 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEventListener.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEventListener.java @@ -1,12 +1,12 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener; import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; // is paused, position, tracks (audio, video, subs), codecs, aspect, speed // title, subtitle (description), subscribed/liked nums, published date, toggle buttons, simple buttons public interface PlayerEventListener extends PlayerUiEventListener, PlayerEngineEventListener, ViewEventListener { void openVideo(Video item); - void setController(PlayerController controller); + void setController(PlaybackController controller); void setParentView(Object parentView); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/AutoFrameRateManager.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/AutoFrameRateManager.java index 1de276235..1fe3baacc 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/AutoFrameRateManager.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/managers/AutoFrameRateManager.java @@ -2,7 +2,7 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers; import com.liskovsoft.smartyoutubetv2.common.R; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.PlayerEventListenerHelper; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.OptionItem; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.UiOptionItem; import com.liskovsoft.smartyoutubetv2.common.autoframerate.AutoFrameRateHelper; @@ -22,7 +22,7 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper { } @Override - public void setController(PlayerController controller) { + public void setController(PlaybackController controller) { super.setController(controller); if (!mRunOnce) { @@ -32,9 +32,9 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper { String title = mActivity.getString(R.string.auto_frame_rate_enable); String fpsCorrection = mActivity.getString(R.string.auto_frame_rate_correction, "(30 => 29.97)"); mUiManager.addHQSwitch(title, - UiOptionItem.from(title, this::onAfrChange, mEnabled)); + UiOptionItem.from(title, this::onAfrOptionClick, mEnabled)); mUiManager.addHQSwitch(title, - UiOptionItem.from(fpsCorrection, this::onFpsCorrection, mCorrectionEnabled) + UiOptionItem.from(fpsCorrection, this::onFpsCorrectionClick, mCorrectionEnabled) ); mRunOnce = true; @@ -55,7 +55,7 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper { } } - private void onAfrChange(OptionItem optionItem) { + private void onAfrOptionClick(OptionItem optionItem) { mEnabled = optionItem.isSelected(); if (mEnabled) { @@ -65,6 +65,11 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper { } } + private void onFpsCorrectionClick(OptionItem optionItem) { + mCorrectionEnabled = optionItem.isSelected(); + mAutoFrameRateHelper.setFpsCorrectionEnabled(mCorrectionEnabled); + } + private void restoreAfr() { mAutoFrameRateHelper.restoreOriginalState(); mParentAutoFrameRateHelper.restoreOriginalState(); @@ -74,9 +79,4 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper { mAutoFrameRateHelper.apply(track); mParentAutoFrameRateHelper.apply(track); } - - private void onFpsCorrection(OptionItem optionItem) { - mCorrectionEnabled = optionItem.isSelected(); - mAutoFrameRateHelper.setFpsCorrectionEnabled(mCorrectionEnabled); - } } 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 066b658e4..d3dca5df1 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 @@ -2,12 +2,11 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers; import android.os.Handler; import android.os.Looper; -import androidx.core.util.Pair; import com.liskovsoft.sharedutils.helpers.KeyHelpers; import com.liskovsoft.sharedutils.mylogger.Log; import com.liskovsoft.smartyoutubetv2.common.R; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.PlayerEventListenerHelper; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.OptionItem; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.UiOptionItem; import com.liskovsoft.smartyoutubetv2.common.app.presenters.VideoSettingsPresenter; @@ -36,7 +35,7 @@ public class PlayerUiManager extends PlayerEventListenerHelper { } @Override - public void setController(PlayerController controller) { + public void setController(PlaybackController controller) { super.setController(controller); mSettingsPresenter = VideoSettingsPresenter.instance(mActivity); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/PlaybackView.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/PlaybackView.java index eede9a30d..8f5dd3546 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/PlaybackView.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/PlaybackView.java @@ -1,9 +1,9 @@ package com.liskovsoft.smartyoutubetv2.common.app.views; -import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener; public interface PlaybackView { void setEventListener(PlayerEventListener stateBridge); - PlayerController getController(); + PlaybackController getController(); } diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/ViewManager.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/ViewManager.java index 8700f3b52..7cb20a105 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/ViewManager.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/views/ViewManager.java @@ -109,7 +109,9 @@ public class ViewManager { try { Log.d(TAG, "Launching parent activity..."); setDefault(null); // current activity is finished, so do reset - activity.startActivity(new Intent(activity, parentActivity)); + Intent intent = new Intent(activity, parentActivity); + //intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + activity.startActivity(intent); } catch (ActivityNotFoundException e) { e.printStackTrace(); Log.e(TAG, "Parent activity not found."); 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 8990dc483..e30fef909 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 @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment; import android.view.KeyEvent; import android.view.MotionEvent; +import com.liskovsoft.smartyoutubetv2.common.app.views.ViewManager; import com.liskovsoft.smartyoutubetv2.tv.R; import com.liskovsoft.smartyoutubetv2.tv.ui.common.LeanbackActivity; @@ -66,4 +67,9 @@ public class PlaybackActivity extends LeanbackActivity { } return super.onGenericMotionEvent(event); } + + @Override + public void finish() { + ViewManager.instance(this).startParentView(this); + } } 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 02c32ebd8..fcb9600e3 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 @@ -29,6 +29,7 @@ import com.google.android.exoplayer2.util.Util; import com.liskovsoft.sharedutils.mylogger.Log; import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video; import com.liskovsoft.smartyoutubetv2.common.app.models.data.VideoGroup; +import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener; import com.liskovsoft.smartyoutubetv2.common.app.presenters.PlaybackPresenter; import com.liskovsoft.smartyoutubetv2.common.app.views.PlaybackView; @@ -50,7 +51,7 @@ import java.util.Map; * Plays selected video, loads playlist and related videos, and delegates playback to * {@link VideoPlayerGlue}. */ -public class PlaybackFragment extends VideoSupportFragment implements PlaybackView, com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController { +public class PlaybackFragment extends VideoSupportFragment implements PlaybackView, PlaybackController { private static final String TAG = PlaybackFragment.class.getSimpleName(); private static final int UPDATE_DELAY = 16; private VideoPlayerGlue mPlayerGlue; @@ -409,7 +410,7 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi } @Override - public com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController getController() { + public PlaybackController getController() { return this; } @@ -423,6 +424,8 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi public void onDestroy() { super.onDestroy(); + Log.d(TAG, "Destroying PlaybackFragment..."); + // Fix situations when engine didn't properly destroyed. // E.g. after closing dialogs. unblockEngine();