From 08f0d69701a3f209481ca0fc3a81aacccbde829a Mon Sep 17 00:00:00 2001 From: AbdallahMehiz Date: Sat, 24 Aug 2024 23:54:06 +0100 Subject: [PATCH] fix: crash on crash activity (ironic) on apis less than 26 * use MaterialTheme.spacing everywhere * feat: allow disabling gestures in panels --- .../mpvkt/preferences/PlayerPreferences.kt | 2 ++ .../presentation/components/ConfirmDialog.kt | 6 +++--- .../presentation/components/ExpandableCard.kt | 5 +++-- .../components/OutlinedNumericChooser.kt | 4 +++- .../presentation/components/SliderItem.kt | 6 +++--- .../components/TintedSliderItem.kt | 8 ++++---- .../mpvkt/presentation/crash/CrashActivity.kt | 20 ++++++++++++------- .../preferences/MultiChoiceSegmentedButton.kt | 5 +++-- .../mehiz/mpvkt/ui/player/PlayerViewModel.kt | 1 - .../ui/player/controls/GestureHandler.kt | 6 ++++++ .../controls/components/CurrentChapter.kt | 2 +- .../controls/components/VerticalSliders.kt | 5 +++-- .../panels/SubtitleSettingsPanel.kt | 8 +++++--- .../components/sheets/AudioTracksSheet.kt | 7 ++++--- .../components/sheets/GenericTracksSheet.kt | 6 ++++-- .../controls/components/sheets/MoreSheet.kt | 4 ++-- .../components/sheets/SubtitleTracksSheet.kt | 13 +++--------- .../ui/preferences/PlayerPreferencesScreen.kt | 5 +++++ app/src/main/res/values/strings.xml | 1 + 19 files changed, 68 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/live/mehiz/mpvkt/preferences/PlayerPreferences.kt b/app/src/main/java/live/mehiz/mpvkt/preferences/PlayerPreferences.kt index b693c76..6d1207e 100644 --- a/app/src/main/java/live/mehiz/mpvkt/preferences/PlayerPreferences.kt +++ b/app/src/main/java/live/mehiz/mpvkt/preferences/PlayerPreferences.kt @@ -30,4 +30,6 @@ class PlayerPreferences( val automaticallyEnterPip = preferenceStore.getBoolean("automatic_pip") val closeAfterReachingEndOfVideo = preferenceStore.getBoolean("close_after_eof") + + val allowGesturesInPanels = preferenceStore.getBoolean("allow_gestures_in_panels") } diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/components/ConfirmDialog.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/components/ConfirmDialog.kt index dbcae2e..3facc27 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/components/ConfirmDialog.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/components/ConfirmDialog.kt @@ -15,8 +15,8 @@ import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp import live.mehiz.mpvkt.R +import live.mehiz.mpvkt.ui.theme.spacing @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -37,8 +37,8 @@ fun ConfirmDialog( tonalElevation = AlertDialogDefaults.TonalElevation, ) { Column( - modifier = Modifier.padding(16.dp), - verticalArrangement = Arrangement.spacedBy(16.dp) + modifier = Modifier.padding(MaterialTheme.spacing.medium), + verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.medium) ) { Text( title, diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/components/ExpandableCard.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/components/ExpandableCard.kt index b713c8c..d754149 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/components/ExpandableCard.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/components/ExpandableCard.kt @@ -17,6 +17,7 @@ import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardElevation import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -28,7 +29,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp +import live.mehiz.mpvkt.ui.theme.spacing @SuppressLint("UnrememberedMutableState") @Composable @@ -54,7 +55,7 @@ fun ExpandableCard( Row( modifier = Modifier .clickable(onClick = { onExpand(!isExpanded) }) - .padding(start = 16.dp), + .padding(start = MaterialTheme.spacing.medium), verticalAlignment = Alignment.CenterVertically, ) { title(isExpanded) diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/components/OutlinedNumericChooser.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/components/OutlinedNumericChooser.kt index 7135532..9b1d853 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/components/OutlinedNumericChooser.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/components/OutlinedNumericChooser.kt @@ -7,6 +7,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AddCircle import androidx.compose.material.icons.filled.RemoveCircle import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,6 +22,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import live.mehiz.mpvkt.R +import live.mehiz.mpvkt.ui.theme.spacing @Composable fun OutlinedNumericChooser( @@ -37,7 +39,7 @@ fun OutlinedNumericChooser( Row( modifier = modifier, verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller), ) { RepeatingIconButton(onClick = { onChange(value - step) }) { Icon(Icons.Filled.RemoveCircle, null) diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/components/SliderItem.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/components/SliderItem.kt index 86235bf..6c141a9 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/components/SliderItem.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/components/SliderItem.kt @@ -41,11 +41,11 @@ fun SliderItem( modifier = modifier .fillMaxWidth() .padding( - horizontal = 16.dp, - vertical = 8.dp, + horizontal = MaterialTheme.spacing.medium, + vertical = MaterialTheme.spacing.smaller, ), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(24.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.large), ) { icon() Column(modifier = Modifier.weight(0.5f)) { diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/components/TintedSliderItem.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/components/TintedSliderItem.kt index 8c15118..2864f2b 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/components/TintedSliderItem.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/components/TintedSliderItem.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp +import live.mehiz.mpvkt.ui.theme.spacing import kotlin.math.max import kotlin.math.min @@ -40,11 +40,11 @@ fun TintedSliderItem( modifier = modifier .fillMaxWidth() .padding( - horizontal = 16.dp, - vertical = 8.dp, + horizontal = MaterialTheme.spacing.medium, + vertical = MaterialTheme.spacing.smaller, ), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(24.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.large), ) { icon() Column(modifier = Modifier.weight(0.5f)) { diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/crash/CrashActivity.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/crash/CrashActivity.kt index 43ca381..6a3c4e4 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/crash/CrashActivity.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/crash/CrashActivity.kt @@ -57,6 +57,7 @@ import live.mehiz.mpvkt.BuildConfig import live.mehiz.mpvkt.MainActivity import live.mehiz.mpvkt.R import live.mehiz.mpvkt.ui.theme.MpvKtTheme +import live.mehiz.mpvkt.ui.theme.spacing import java.io.BufferedReader import java.io.File import java.io.InputStreamReader @@ -83,7 +84,12 @@ class CrashActivity : ComponentActivity() { val process = Runtime.getRuntime() val reader = BufferedReader(InputStreamReader(process.exec("logcat -d").inputStream)) val logcat = StringBuilder() - reader.lines().forEach(logcat::appendLine) + // reader.lines() looks much nicer so why not use it on devices that support it? + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + reader.lines().forEach(logcat::append) + } else { + reader.readLines().forEach(logcat::appendLine) + } // clear logcat so it doesn't pollute subsequent crashes process.exec("logcat -c") return logcat.toString() @@ -147,11 +153,11 @@ class CrashActivity : ComponentActivity() { strokeWidth = Dp.Hairline.value, ) } - .padding(vertical = 8.dp, horizontal = 16.dp), - verticalArrangement = Arrangement.spacedBy(4.dp), + .padding(vertical = MaterialTheme.spacing.smaller, horizontal = MaterialTheme.spacing.medium), + verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall), ) { Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller), ) { Button( onClick = { @@ -189,9 +195,9 @@ class CrashActivity : ComponentActivity() { Column( modifier = Modifier .padding(paddingValues) - .padding(horizontal = 16.dp) + .padding(horizontal = MaterialTheme.spacing.medium) .verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(16.dp), + verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.medium), ) { Spacer(Modifier.height(paddingValues.calculateTopPadding())) Icon( @@ -239,7 +245,7 @@ class CrashActivity : ComponentActivity() { text = logs, fontFamily = FontFamily.Monospace, style = MaterialTheme.typography.labelMedium, - modifier = Modifier.padding(horizontal = 8.dp, vertical = 8.dp), + modifier = Modifier.padding(MaterialTheme.spacing.smaller), ) } } diff --git a/app/src/main/java/live/mehiz/mpvkt/presentation/preferences/MultiChoiceSegmentedButton.kt b/app/src/main/java/live/mehiz/mpvkt/presentation/preferences/MultiChoiceSegmentedButton.kt index bafcccc..806a77a 100644 --- a/app/src/main/java/live/mehiz/mpvkt/presentation/preferences/MultiChoiceSegmentedButton.kt +++ b/app/src/main/java/live/mehiz/mpvkt/presentation/preferences/MultiChoiceSegmentedButton.kt @@ -3,14 +3,15 @@ package live.mehiz.mpvkt.presentation.preferences import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MultiChoiceSegmentedButtonRow import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp import kotlinx.collections.immutable.ImmutableList +import live.mehiz.mpvkt.ui.theme.spacing @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -23,7 +24,7 @@ fun MultiChoiceSegmentedButton( MultiChoiceSegmentedButtonRow( modifier = modifier .fillMaxWidth() - .padding(16.dp), + .padding(MaterialTheme.spacing.medium), ) { choices.forEachIndexed { index, choice -> SegmentedButton( diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/PlayerViewModel.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/PlayerViewModel.kt index 4dd12ae..4b7c080 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/PlayerViewModel.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/PlayerViewModel.kt @@ -241,7 +241,6 @@ class PlayerViewModel( val trackCount = MPVLib.getPropertyInt("track-list/count") MPVLib.command(arrayOf("audio-add", path, "cached")) if (trackCount == MPVLib.getPropertyInt("track-list/count")) return - if (activity.player.aid != audioTracks.value.size) return _audioTracks.update { it.plus(Track(activity.player.aid, path, null)) } _selectedAudio.update { activity.player.aid } } diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/GestureHandler.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/GestureHandler.kt index e65e0a7..1b94ce8 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/GestureHandler.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/GestureHandler.kt @@ -46,6 +46,7 @@ import live.mehiz.mpvkt.preferences.PlayerPreferences import live.mehiz.mpvkt.preferences.preference.collectAsState import live.mehiz.mpvkt.presentation.components.LeftSideOvalShape import live.mehiz.mpvkt.presentation.components.RightSideOvalShape +import live.mehiz.mpvkt.ui.player.Panels import live.mehiz.mpvkt.ui.player.PlayerUpdates import live.mehiz.mpvkt.ui.player.PlayerViewModel import live.mehiz.mpvkt.ui.player.controls.components.DoubleTapSeekSecondsView @@ -57,6 +58,8 @@ import org.koin.compose.koinInject fun GestureHandler(modifier: Modifier = Modifier) { val viewModel = koinInject() val playerPreferences = koinInject() + val panelShown by viewModel.panelShown.collectAsState() + val allowGesturesInPanels by playerPreferences.allowGesturesInPanels.collectAsState() val duration by viewModel.duration.collectAsState() val position by viewModel.pos.collectAsState() val controlsShown by viewModel.controlsShown.collectAsState() @@ -169,6 +172,9 @@ fun GestureHandler(modifier: Modifier = Modifier) { } }, onPress = { + if (panelShown != Panels.None && !allowGesturesInPanels) { + viewModel.panelShown.update { Panels.None } + } val press = PressInteraction.Press( it.copy(x = if (it.x > size.width * 3 / 5) it.x - size.width * 0.6f else it.x), ) diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/CurrentChapter.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/CurrentChapter.kt index bf09d49..f772396 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/CurrentChapter.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/CurrentChapter.kt @@ -62,7 +62,7 @@ fun CurrentChapter( ) { currentChapter -> Row( verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(4.dp) + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall) ) { Icon( imageVector = Icons.Default.Bookmarks, diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/VerticalSliders.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/VerticalSliders.kt index 6855a76..74f7019 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/VerticalSliders.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/VerticalSliders.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp +import live.mehiz.mpvkt.ui.theme.spacing val percentage: (Float, ClosedFloatingPointRange) -> Float = { value, range -> ((value - range.start) / (range.endInclusive - range.start)).coerceIn(0f, 1f) @@ -95,7 +96,7 @@ fun BrightnessSlider( Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(8.dp) + verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller) ) { Text( (brightness * 100).toInt().toString(), @@ -126,7 +127,7 @@ fun VolumeSlider( Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(8.dp) + verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller) ) { Text( volume.toString(), diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/panels/SubtitleSettingsPanel.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/panels/SubtitleSettingsPanel.kt index 7835f01..9acfe15 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/panels/SubtitleSettingsPanel.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/panels/SubtitleSettingsPanel.kt @@ -35,8 +35,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.constraintlayout.compose.ConstraintLayout +import live.mehiz.mpvkt.R import live.mehiz.mpvkt.ui.theme.spacing @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) @@ -86,8 +88,8 @@ fun SubtitleSettingsPanel( state = pagerState, pageSize = PageSize.Fixed(LocalConfiguration.current.screenWidthDp.dp * 0.9f), verticalAlignment = Alignment.Top, - pageSpacing = 8.dp, - contentPadding = PaddingValues(horizontal = 8.dp), + pageSpacing = MaterialTheme.spacing.smaller, + contentPadding = PaddingValues(horizontal = MaterialTheme.spacing.smaller), beyondBoundsPageCount = 1, ) { page -> cards(page, Modifier.fillMaxWidth()) @@ -111,7 +113,7 @@ fun SubtitleSettingsPanel( horizontalArrangement = Arrangement.SpaceBetween, ) { Text( - text = "Subtitle settings", + text = stringResource(id = R.string.player_sheets_subtitles_settings_title), style = MaterialTheme.typography.headlineMedium.copy( shadow = Shadow(blurRadius = 20f), ), diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/AudioTracksSheet.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/AudioTracksSheet.kt index 97362e2..26feae4 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/AudioTracksSheet.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/AudioTracksSheet.kt @@ -9,6 +9,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreTime import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -17,10 +18,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp import kotlinx.collections.immutable.ImmutableList import live.mehiz.mpvkt.R import live.mehiz.mpvkt.ui.player.Track +import live.mehiz.mpvkt.ui.theme.spacing @Composable fun AudioTracksSheet( @@ -68,9 +69,9 @@ fun AudioTrackRow( modifier = modifier .fillMaxWidth() .clickable(onClick = onClick) - .padding(start = 8.dp, end = 16.dp), + .padding(start = MaterialTheme.spacing.smaller, end = MaterialTheme.spacing.medium), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller), ) { RadioButton( isSelected, diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/GenericTracksSheet.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/GenericTracksSheet.kt index 1d85972..52692c2 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/GenericTracksSheet.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/GenericTracksSheet.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,6 +26,7 @@ import kotlinx.collections.immutable.ImmutableList import live.mehiz.mpvkt.R import live.mehiz.mpvkt.presentation.components.PlayerSheet import live.mehiz.mpvkt.ui.player.Track +import live.mehiz.mpvkt.ui.theme.spacing @Composable fun GenericTracksSheet( @@ -64,9 +66,9 @@ fun AddTrackRow( .fillMaxWidth() .clickable(onClick = onClick) .height(48.dp) - .padding(start = 16.dp), + .padding(start = MaterialTheme.spacing.medium), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller), ) { Icon( Icons.Default.Add, diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/MoreSheet.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/MoreSheet.kt index 14f1f9b..4d8fbae 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/MoreSheet.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/MoreSheet.kt @@ -86,7 +86,7 @@ fun MoreSheet( ) Row( verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(4.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall), ) { var isSleepTimerDialogShown by remember { mutableStateOf(false) } IconButton(onClick = { isSleepTimerDialogShown = true }) { @@ -106,7 +106,7 @@ fun MoreSheet( TextButton(onClick = onEnterFiltersPanel) { Row( verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(4.dp), + horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall), ) { Icon(imageVector = Icons.Default.Tune, contentDescription = null) Text(text = stringResource(id = R.string.player_sheets_filters_title)) diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/SubtitleTracksSheet.kt b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/SubtitleTracksSheet.kt index f62e916..ccd1006 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/SubtitleTracksSheet.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/player/controls/components/sheets/SubtitleTracksSheet.kt @@ -11,6 +11,7 @@ import androidx.compose.material.icons.filled.Palette import androidx.compose.material3.Checkbox import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -18,10 +19,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp import kotlinx.collections.immutable.ImmutableList import live.mehiz.mpvkt.R import live.mehiz.mpvkt.ui.player.Track +import live.mehiz.mpvkt.ui.theme.spacing import me.zhanghai.compose.preference.FooterPreference import me.zhanghai.compose.preference.ProvidePreferenceLocals @@ -84,7 +85,7 @@ fun SubtitleTrackRow( modifier = modifier .fillMaxWidth() .clickable(onClick = onClick) - .padding(start = 8.dp, end = 16.dp), + .padding(start = MaterialTheme.spacing.smaller, end = MaterialTheme.spacing.medium), verticalAlignment = Alignment.CenterVertically, ) { Checkbox( @@ -106,11 +107,3 @@ fun SubtitleTrackRow( } } } - -/* -@Preview -@Composable -fun PreviewSubtitlesSheet() { - SubtitlesSheet(Tracks(mutableListOf(1), mutableListOf(Track(1, "hello", "en"))), {}) {} -} -*/ diff --git a/app/src/main/java/live/mehiz/mpvkt/ui/preferences/PlayerPreferencesScreen.kt b/app/src/main/java/live/mehiz/mpvkt/ui/preferences/PlayerPreferencesScreen.kt index 4fac6dc..3edf91e 100644 --- a/app/src/main/java/live/mehiz/mpvkt/ui/preferences/PlayerPreferencesScreen.kt +++ b/app/src/main/java/live/mehiz/mpvkt/ui/preferences/PlayerPreferencesScreen.kt @@ -135,6 +135,11 @@ object PlayerPreferencesScreen : Screen() { "controls", title = { Text(stringResource(R.string.pref_player_controls)) }, ) + switchPreference( + preferences.allowGesturesInPanels.key(), + defaultValue = preferences.allowGesturesInPanels.defaultValue(), + title = { Text(text = "Allow gestures in panels") }, + ) switchPreference( preferences.showChaptersButton.key(), defaultValue = preferences.showChaptersButton.defaultValue(), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e60b59f..9345be3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -107,6 +107,7 @@ #%d: %s #%d: %s Secondary subtitles will have no ASS/SSA Styling. + Subtitles settings Text Border Background