From 330d0ecd965cf5164b737f1a62c1d7bb2acf1638 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Thu, 18 Jul 2024 13:45:28 +0200 Subject: [PATCH] prepare desired library layout --- .../java/net/newpipe/newplayer/NewPlayer.kt | 15 +++++++++--- .../net/newpipe/newplayer/VideoPlayerView.kt | 3 ++- .../internal/VideoPlayerComponent.kt | 5 ++-- .../newplayer/internal/VideoPlayerFragment.kt | 2 -- .../internal/model/VideoPlayerViewModel.kt | 23 +++++++++---------- app/src/main/res/layout/video_player_view.xml | 2 +- 6 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/net/newpipe/newplayer/NewPlayer.kt b/app/src/main/java/net/newpipe/newplayer/NewPlayer.kt index 6fcb829..9598152 100644 --- a/app/src/main/java/net/newpipe/newplayer/NewPlayer.kt +++ b/app/src/main/java/net/newpipe/newplayer/NewPlayer.kt @@ -1,11 +1,20 @@ package net.newpipe.newplayer +import android.app.Application +import androidx.media3.common.Player +import androidx.media3.exoplayer.ExoPlayer + + interface NewPlayer { + val player: Player - interface Listener { - + data class Builder(val app: Application) { + fun build(): NewPlayer { + return NewPlayerImpl(ExoPlayer.Builder(app).build()) + } } } -class NewPlayerImpl { +class NewPlayerImpl(internal_player: Player) : NewPlayer { + override val player = internal_player } \ No newline at end of file diff --git a/app/src/main/java/net/newpipe/newplayer/VideoPlayerView.kt b/app/src/main/java/net/newpipe/newplayer/VideoPlayerView.kt index 02e1120..9ff57bc 100644 --- a/app/src/main/java/net/newpipe/newplayer/VideoPlayerView.kt +++ b/app/src/main/java/net/newpipe/newplayer/VideoPlayerView.kt @@ -5,8 +5,10 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.compose.ui.platform.ComposeView +import androidx.fragment.app.findFragment import androidx.fragment.app.viewModels import dagger.hilt.android.AndroidEntryPoint +import net.newpipe.newplayer.internal.VideoPlayerFragment import net.newpipe.newplayer.internal.model.VideoPlayerViewModel import net.newpipe.newplayer.internal.model.VideoPlayerViewModelImpl @@ -19,6 +21,5 @@ class VideoPlayerView : FrameLayout { defStyleAttr: Int = 0 ) : super(context, attrs, defStyleAttr) { val view = LayoutInflater.from(context).inflate(R.layout.video_player_view, this) - val composeView = view.findViewById(R.id.player_copose_view) } } \ No newline at end of file diff --git a/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt index 299ce92..02fb3b7 100644 --- a/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt +++ b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt @@ -27,6 +27,7 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import net.newpipe.newplayer.NewPlayer import javax.inject.Singleton @Module @@ -34,7 +35,7 @@ import javax.inject.Singleton object VideoPlayerComponent { @Provides @Singleton - fun provideVideoPlayer(app: Application) : Player { - return ExoPlayer.Builder(app).build() + fun provideNewPlayer(app: Application) : NewPlayer { + return NewPlayer.Builder(app).build() } } \ No newline at end of file diff --git a/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerFragment.kt b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerFragment.kt index e405e72..6e8cb71 100644 --- a/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerFragment.kt +++ b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerFragment.kt @@ -49,8 +49,6 @@ class VideoPlayerFragment() : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { - - val window = activity?.window!! val insetsController = WindowCompat.getInsetsController(window, window.decorView) insetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE diff --git a/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt b/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt index de60d75..3c39e3c 100644 --- a/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt +++ b/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt @@ -42,6 +42,7 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import net.newpipe.newplayer.internal.utils.VideoSize import kotlinx.parcelize.Parcelize +import net.newpipe.newplayer.NewPlayer val VIDEOPLAYER_UI_STATE = "video_player_ui_state" @@ -60,6 +61,7 @@ data class VideoPlayerUIState( } interface VideoPlayerViewModel { + val new_player: NewPlayer? val player: Player? val uiState: StateFlow var listener: Listener? @@ -88,26 +90,22 @@ interface VideoPlayerViewModel { @HiltViewModel class VideoPlayerViewModelImpl @Inject constructor( private val savedStateHandle: SavedStateHandle, - override val player: Player, + override val new_player: NewPlayer, application: Application ) : AndroidViewModel(application), VideoPlayerViewModel { - val app = getApplication() - - private val mutableUiState = MutableStateFlow( - VideoPlayerUIState.DEFAULT - ) - + // private + private val app = getApplication() + private val mutableUiState = MutableStateFlow(VideoPlayerUIState.DEFAULT) private val mutableEvent = MutableSharedFlow() + private var current_video_size = VideoSize.DEFAULT - override val events: SharedFlow = mutableEvent - - + //interface override val uiState = mutableUiState.asStateFlow() - + override val events: SharedFlow = mutableEvent override var listener: VideoPlayerViewModel.Listener? = null + override val player = new_player.player - var current_video_size = VideoSize.DEFAULT init { @@ -203,6 +201,7 @@ class VideoPlayerViewModelImpl @Inject constructor( companion object { val dummy = object : VideoPlayerViewModel { + override val new_player = null override val player = null override val uiState = MutableStateFlow(VideoPlayerUIState.DEFAULT) override var listener: VideoPlayerViewModel.Listener? = null diff --git a/app/src/main/res/layout/video_player_view.xml b/app/src/main/res/layout/video_player_view.xml index 1ce1b9a..cc62ff7 100644 --- a/app/src/main/res/layout/video_player_view.xml +++ b/app/src/main/res/layout/video_player_view.xml @@ -21,7 +21,7 @@