prepare desired library layout
This commit is contained in:
parent
74fe0042c7
commit
330d0ecd96
|
@ -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
|
||||
}
|
|
@ -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<ComposeView>(R.id.player_copose_view)
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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<VideoPlayerUIState>
|
||||
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<Application>()
|
||||
|
||||
private val mutableUiState = MutableStateFlow(
|
||||
VideoPlayerUIState.DEFAULT
|
||||
)
|
||||
|
||||
// private
|
||||
private val app = getApplication<Application>()
|
||||
private val mutableUiState = MutableStateFlow(VideoPlayerUIState.DEFAULT)
|
||||
private val mutableEvent = MutableSharedFlow<VideoPlayerViewModel.Events>()
|
||||
private var current_video_size = VideoSize.DEFAULT
|
||||
|
||||
override val events: SharedFlow<VideoPlayerViewModel.Events> = mutableEvent
|
||||
|
||||
|
||||
//interface
|
||||
override val uiState = mutableUiState.asStateFlow()
|
||||
|
||||
override val events: SharedFlow<VideoPlayerViewModel.Events> = 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
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<androidx.fragment.app.FragmentContainerView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/player_frament_view"
|
||||
android:id="@+id/video_player_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="50dp"
|
||||
|
|
Loading…
Reference in New Issue