Skip to content

Commit

Permalink
fix: crash on crash activity (ironic) on apis less than 26
Browse files Browse the repository at this point in the history
 * use MaterialTheme.spacing everywhere
 * feat: allow disabling gestures in panels
  • Loading branch information
abdallahmehiz committed Aug 24, 2024
1 parent b522254 commit 08f0d69
Show file tree
Hide file tree
Showing 19 changed files with 68 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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(
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
Expand Down Expand Up @@ -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 = {
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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),
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,7 +24,7 @@ fun MultiChoiceSegmentedButton(
MultiChoiceSegmentedButtonRow(
modifier = modifier
.fillMaxWidth()
.padding(16.dp),
.padding(MaterialTheme.spacing.medium),
) {
choices.forEachIndexed { index, choice ->
SegmentedButton(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -57,6 +58,8 @@ import org.koin.compose.koinInject
fun GestureHandler(modifier: Modifier = Modifier) {
val viewModel = koinInject<PlayerViewModel>()
val playerPreferences = koinInject<PlayerPreferences>()
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()
Expand Down Expand Up @@ -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),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>) -> Float = { value, range ->
((value - range.start) / (range.endInclusive - range.start)).coerceIn(0f, 1f)
Expand Down Expand Up @@ -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(),
Expand Down Expand Up @@ -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(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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())
Expand All @@ -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),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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(
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 <T> GenericTracksSheet(
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 }) {
Expand All @@ -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))
Expand Down
Loading

0 comments on commit 08f0d69

Please sign in to comment.