From 0290eaf9eace5d0cef806c2f6fac5b268260e530 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Wed, 17 Jul 2024 16:39:16 +0200 Subject: [PATCH] switch to kotlin 2.0 and add parcelable to kotlin --- .idea/kotlinc.xml | 2 +- app/build.gradle.kts | 2 ++ .../newpipe/newplayer/model/VideoPlayerViewModel.kt | 11 ++++++----- .../java/net/newpipe/newplayer/ui/VideoPlayerUI.kt | 2 ++ build.gradle.kts | 2 ++ gradle/libs.versions.toml | 8 +++++--- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index fdf8d99..46cd6da 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 381b96c..98bb49b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -25,6 +25,8 @@ plugins { alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.kotlinAndroidKsp) alias(libs.plugins.androidHilt) + alias(libs.plugins.kotlinParcelize) + alias(libs.plugins.composeCompiler) } android { diff --git a/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt b/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt index 7823f1a..65cd2af 100644 --- a/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt +++ b/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt @@ -21,6 +21,7 @@ package net.newpipe.newplayer.model import android.app.Application +import android.os.Parcelable import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope @@ -37,13 +38,17 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import net.newpipe.newplayer.utils.VideoSize +import kotlinx.parcelize.Parcelize +val VIDEOPLAYER_UI_STATE = "video_player_ui_state" + +@Parcelize data class VideoPlayerUIState( val playing: Boolean, var fullscreen: Boolean, var uiVissible: Boolean, var contentRatio: Float -) { +) : Parcelable { companion object { val DEFAULT = VideoPlayerUIState( playing = false, fullscreen = false, uiVissible = false, 0F @@ -182,10 +187,6 @@ class VideoPlayerViewModelImpl @Inject constructor( //listener?.switchToFullscreen() } - override fun onCleared() { - super.onCleared() - } - companion object { val dummy = object : VideoPlayerViewModel { override val player = null diff --git a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt b/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt index 62e5638..7d7711f 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt @@ -42,6 +42,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import kotlinx.coroutines.flow.collectLatest import net.newpipe.newplayer.VideoPlayerActivity +import net.newpipe.newplayer.model.VIDEOPLAYER_UI_STATE import net.newpipe.newplayer.model.VideoPlayerViewModel import net.newpipe.newplayer.model.VideoPlayerViewModelImpl import net.newpipe.newplayer.ui.theme.VideoPlayerTheme @@ -81,6 +82,7 @@ fun VideoPlayerUI( VideoPlayerViewModel.Events.SwitchToFullscreen -> { val fullscreen_activity_intent = Intent(activity!!.findActivity(), VideoPlayerActivity::class.java) + fullscreen_activity_intent.putExtra(VIDEOPLAYER_UI_STATE, viewModel.uiState.value) activity.startActivity(fullscreen_activity_intent) } diff --git a/build.gradle.kts b/build.gradle.kts index 36bdc7c..9623718 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,4 +23,6 @@ plugins { alias(libs.plugins.jetbrains.kotlin.android) apply false alias(libs.plugins.androidHilt) apply false alias(libs.plugins.kotlinAndroidKsp) apply false + alias(libs.plugins.kotlinParcelize) apply false + alias(libs.plugins.composeCompiler) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 213f039..641a8fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ [versions] agp = "8.5.0" -kotlin = "1.9.0" +kotlin = "2.0.0" coreKtx = "1.13.1" junit = "4.13.2" junitVersion = "1.2.1" @@ -37,10 +37,10 @@ hiltCompiler = "1.2.0" hiltNavigationCompose = "1.2.0" lifecycleViewmodelCompose = "2.8.3" kspVersion = "1.9.0-1.0.13" -runtimeLivedata = "1.7.0-beta04" fragmentKtx = "1.8.1" lifecycleRuntimeKtx = "2.8.3" composeBom = "2024.04.01" +kotlinParcelize = "2.0.20-Beta2" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -72,9 +72,11 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } + [plugins] android-application = { id = "com.android.application", version.ref = "agp" } jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } androidHilt = { id = "com.google.dagger.hilt.android", version.ref = "hiltAndroid" } kotlinAndroidKsp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" } - +kotlinParcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinParcelize" } \ No newline at end of file