Add equalizer shortcut to PlayerView

This commit is contained in:
vfsfitvnm
2022-07-11 17:13:16 +02:00
parent ce7b8aa8fd
commit fc9b773044
3 changed files with 70 additions and 7 deletions

View File

@@ -193,6 +193,8 @@ fun BaseMediaItemMenu(
mediaItem: MediaItem,
onDismiss: () -> Unit,
modifier: Modifier = Modifier,
onGoToEqualizer: (() -> Unit)? = null,
onSetSleepTimer: (() -> Unit)? = null,
onStartRadio: (() -> Unit)? = null,
onPlaySingle: (() -> Unit)? = null,
onPlayNext: (() -> Unit)? = null,
@@ -211,6 +213,8 @@ fun BaseMediaItemMenu(
MediaItemMenu(
mediaItem = mediaItem,
onDismiss = onDismiss,
onGoToEqualizer = onGoToEqualizer,
onSetSleepTimer = onSetSleepTimer,
onStartRadio = onStartRadio,
onPlayNext = onPlayNext,
onPlaySingle = onPlaySingle,
@@ -247,6 +251,8 @@ fun MediaItemMenu(
mediaItem: MediaItem,
onDismiss: () -> Unit,
modifier: Modifier = Modifier,
onGoToEqualizer: (() -> Unit)? = null,
onSetSleepTimer: (() -> Unit)? = null,
onStartRadio: (() -> Unit)? = null,
onPlaySingle: (() -> Unit)? = null,
onPlayNext: (() -> Unit)? = null,
@@ -267,9 +273,7 @@ fun MediaItemMenu(
val viewPlaylistsRoute = rememberCreatePlaylistRoute()
Menu(
modifier = modifier
) {
Menu(modifier = modifier) {
RouteHandler(
transitionSpec = {
when (targetState.route) {
@@ -345,6 +349,28 @@ fun MediaItemMenu(
detectTapGestures { }
}
) {
onGoToEqualizer?.let { onGoToEqualizer ->
MenuEntry(
icon = R.drawable.equalizer,
text = "Equalizer",
onClick = {
onDismiss()
onGoToEqualizer()
}
)
}
onSetSleepTimer?.let { onSetSleepTimer ->
MenuEntry(
icon = R.drawable.time,
text = "Sleep timer",
onClick = {
onDismiss()
onSetSleepTimer()
}
)
}
onStartRadio?.let { onStartRadio ->
MenuEntry(
icon = R.drawable.radio,

View File

@@ -1,7 +1,13 @@
package it.vfsfitvnm.vimusic.ui.views
import android.content.Intent
import android.media.audiofx.AudioEffect
import android.text.format.DateUtils
import android.text.format.Formatter
import android.widget.Toast
import androidx.activity.compose.LocalActivityResultRegistryOwner
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.*
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
@@ -41,8 +47,8 @@ import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.models.Song
import it.vfsfitvnm.vimusic.query
import it.vfsfitvnm.vimusic.ui.components.*
import it.vfsfitvnm.vimusic.ui.components.themed.BaseMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.LoadingOrError
import it.vfsfitvnm.vimusic.ui.components.themed.QueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.styling.*
import it.vfsfitvnm.vimusic.utils.*
import it.vfsfitvnm.youtubemusic.YouTube
@@ -201,11 +207,27 @@ fun PlayerView(
modifier = Modifier
.clickable {
menuState.display {
QueuedMediaItemMenu(
val resultRegistryOwner = LocalActivityResultRegistryOwner.current
BaseMediaItemMenu(
mediaItem = playerState.mediaItem,
indexInQueue = null,
onGoToEqualizer = {
val intent = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL).apply {
putExtra(AudioEffect.EXTRA_AUDIO_SESSION, player.audioSessionId)
putExtra(AudioEffect.EXTRA_PACKAGE_NAME, context.packageName)
putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC)
}
if (intent.resolveActivity(context.packageManager) != null) {
val contract = ActivityResultContracts.StartActivityForResult()
resultRegistryOwner?.activityResultRegistry?.register("", contract) {}?.launch(intent)
} else {
Toast.makeText(context, "No equalizer app found!", Toast.LENGTH_SHORT).show()
}
},
onDismiss = menuState::hide,
onGlobalRouteEmitted = layoutState.collapse
onGlobalRouteEmitted = layoutState.collapse,
)
}
}