From 4f3dbcac6e4c23a360418d1e0ad4930c7f452d87 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Tue, 7 Oct 2025 15:37:42 -0400 Subject: [PATCH] More options for movies --- .../dolphin/data/model/BaseItem.kt | 8 ++ .../dolphin/ui/detail/movie/MovieDetails.kt | 78 ++++++++++++++++++- .../ui/detail/series/SeriesOverview.kt | 16 ++-- 3 files changed, 92 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/dolphin/data/model/BaseItem.kt b/app/src/main/java/com/github/damontecres/dolphin/data/model/BaseItem.kt index bc5e2c9a..cba14dbd 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/data/model/BaseItem.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/data/model/BaseItem.kt @@ -9,6 +9,7 @@ import org.jellyfin.sdk.api.client.extensions.imageApi import org.jellyfin.sdk.model.api.BaseItemDto import org.jellyfin.sdk.model.api.BaseItemKind import org.jellyfin.sdk.model.api.ImageType +import org.jellyfin.sdk.model.extensions.ticks @Serializable data class BaseItem( @@ -25,6 +26,13 @@ data class BaseItem( @Transient val indexNumber = data.indexNumber + @Transient + val resumeMs = + data.userData + ?.playbackPositionTicks + ?.ticks + ?.inWholeMilliseconds + fun destination(): Destination { val result = // Redirect episodes & seasons to their series if possible diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/detail/movie/MovieDetails.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/detail/movie/MovieDetails.kt index 29cf69e3..a6961e41 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/detail/movie/MovieDetails.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/detail/movie/MovieDetails.kt @@ -11,6 +11,9 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.relocation.BringIntoViewRequester import androidx.compose.foundation.relocation.bringIntoViewRequester +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.material.icons.filled.Settings import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -41,6 +44,9 @@ import com.github.damontecres.dolphin.data.model.Video import com.github.damontecres.dolphin.preferences.UserPreferences import com.github.damontecres.dolphin.ui.cards.ChapterRow import com.github.damontecres.dolphin.ui.cards.PersonRow +import com.github.damontecres.dolphin.ui.components.DialogItem +import com.github.damontecres.dolphin.ui.components.DialogParams +import com.github.damontecres.dolphin.ui.components.DialogPopup import com.github.damontecres.dolphin.ui.components.ErrorMessage import com.github.damontecres.dolphin.ui.components.ExpandablePlayButtons import com.github.damontecres.dolphin.ui.components.LoadingPage @@ -55,9 +61,11 @@ import com.github.damontecres.dolphin.ui.tryRequestFocus import com.github.damontecres.dolphin.util.ExceptionHandler import com.github.damontecres.dolphin.util.LoadingState import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch import org.jellyfin.sdk.api.client.ApiClient +import org.jellyfin.sdk.api.client.extensions.playStateApi import org.jellyfin.sdk.model.extensions.ticks import java.util.UUID import javax.inject.Inject @@ -69,14 +77,16 @@ class MovieViewModel constructor( api: ApiClient, ) : LoadingItemViewModel