Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ class PlaybackVideoFragment : VideoSupportFragment() {
var skipBack = PreferenceManager.getDefaultSharedPreferences(requireContext())
.getInt("skip_back_time", 10)

playerAdapter = BasicMediaPlayerAdapter(requireActivity(), skipForward, skipBack)
playerAdapter =
BasicMediaPlayerAdapter(requireActivity(), skipForward, skipBack, scene?.duration)

mTransportControlGlue = BasicTransportControlsGlue(activity, playerAdapter)
mTransportControlGlue.host = glueHost
Expand Down Expand Up @@ -80,14 +81,24 @@ class PlaybackVideoFragment : VideoSupportFragment() {
class BasicMediaPlayerAdapter(
context: Context,
private var skipForward: Int,
private var skipBack: Int
private var skipBack: Int,
private val duration: Double?
) :
MediaPlayerAdapter(context) {

override fun fastForward() = seekTo(currentPosition + skipForward * 1000)

override fun rewind() = seekTo(currentPosition - skipBack * 1000)

override fun getDuration(): Long {
val dur = super.getDuration()
return if (dur < 1) {
duration?.times(1000)?.toLong() ?: -1
} else {
dur
}
}

override fun getSupportedActions(): Long {
return (ACTION_REWIND xor
ACTION_PLAY_PAUSE xor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
Expand All @@ -30,6 +33,7 @@ import com.bumptech.glide.request.transition.Transition
import com.github.damontecres.stashapp.data.Scene
import com.github.damontecres.stashapp.data.fromSlimSceneDataTag
import com.github.damontecres.stashapp.presenters.PerformerPresenter
import com.github.damontecres.stashapp.presenters.ScenePresenter
import com.github.damontecres.stashapp.presenters.TagPresenter
import kotlinx.coroutines.launch

Expand Down Expand Up @@ -91,31 +95,32 @@ class VideoDetailsFragment : DetailsSupportFragment() {
}
}

override fun onStart() {
super.onStart()
if (performersAdapter.size() == 0) {
val queryEngine = QueryEngine(requireContext(), true)
// TODO: this is not efficient, but it does prevent duplicates during navigation
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val queryEngine = QueryEngine(requireContext(), true)
if (mSelectedMovie != null) {
viewLifecycleOwner.lifecycleScope.launch {
if (mSelectedMovie != null) {
val scene =
queryEngine.findScenes(sceneIds = listOf(mSelectedMovie!!.id.toInt()))
.first()
if (scene.tags.isNotEmpty()) {
tagsAdapter.addAll(0, scene.tags.map { fromSlimSceneDataTag(it) })
}

val performerIds = scene.performers.map {
it.id.toInt()
}
if (performerIds.isNotEmpty()) {
val perfs = queryEngine.findPerformers(performerIds = performerIds)
performersAdapter.addAll(0, perfs)
}
val scene =
queryEngine.findScenes(sceneIds = listOf(mSelectedMovie!!.id.toInt()))
.first()
if (scene.tags.isNotEmpty()) {
tagsAdapter.addAll(0, scene.tags.map { fromSlimSceneDataTag(it) })
}

val performerIds = scene.performers.map {
it.id.toInt()
}
if (performerIds.isNotEmpty()) {
val perfs = queryEngine.findPerformers(performerIds = performerIds)
performersAdapter.addAll(0, perfs)
}

}
}
return super.onCreateView(inflater, container, savedInstanceState)
}

private fun initializeBackground(movie: Scene?) {
Expand Down Expand Up @@ -159,16 +164,17 @@ class VideoDetailsFragment : DetailsSupportFragment() {
.getString("stashApiKey", "")
val url = createGlideUrl(screenshotUrl, apiKey)
Glide.with(requireActivity())
.asBitmap()
.load(url)
.centerCrop()
.error(R.drawable.default_background)
.into<SimpleTarget<Drawable>>(object : SimpleTarget<Drawable>(width, height) {
.into<SimpleTarget<Bitmap>>(object : SimpleTarget<Bitmap>(width, height) {
override fun onResourceReady(
drawable: Drawable,
transition: Transition<in Drawable>?
drawable: Bitmap,
transition: Transition<in Bitmap>?
) {
Log.d(TAG, "details overview card image url ready: " + drawable)
row.imageDrawable = drawable
row.setImageBitmap(requireContext(), drawable)
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size())
}
})
Expand Down Expand Up @@ -234,8 +240,8 @@ class VideoDetailsFragment : DetailsSupportFragment() {
private val ACTION_PLAY_SCENE = 1L
private val ACTION_RESUME_SCENE = 2L

private val DETAIL_THUMB_WIDTH = 274
private val DETAIL_THUMB_HEIGHT = 274
private val DETAIL_THUMB_WIDTH = ScenePresenter.CARD_WIDTH
private val DETAIL_THUMB_HEIGHT = ScenePresenter.CARD_HEIGHT

private val NUM_COLS = 10

Expand Down
16 changes: 12 additions & 4 deletions app/src/main/java/com/github/damontecres/stashapp/data/Scene.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ data class Scene(
var screenshotUrl: String?,
var studioId: String?,
var studioName: String?,
var streams: Map<String, String>
var streams: Map<String, String>,
val duration: Double?
) : Parcelable

fun sceneFromSlimSceneData(data: SlimSceneData): Scene {
Expand All @@ -32,9 +33,16 @@ fun sceneFromSlimSceneData(data: SlimSceneData): Scene {
} else {
data.title
}
val duration = data.files.firstOrNull()?.videoFileData?.duration
return Scene(
id = data.id.toLong(), title = title, details = data.details,
streamUrl = data.paths.stream, screenshotUrl = data.paths.screenshot,
studioId = data.studio?.id, studioName = data.studio?.name, streams
id = data.id.toLong(),
title = title,
details = data.details,
streamUrl = data.paths.stream,
screenshotUrl = data.paths.screenshot,
studioId = data.studio?.id,
studioName = data.studio?.name,
streams = streams,
duration = duration
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class ScenePresenter : Presenter() {
companion object {
private val TAG = "CardPresenter"

private val CARD_WIDTH = 351
private val CARD_HEIGHT = 198
const val CARD_WIDTH = 351
const val CARD_HEIGHT = 198
}
}