Skip to content

Commit

Permalink
feat: rotation button
Browse files Browse the repository at this point in the history
  • Loading branch information
abdallahmehiz committed Aug 17, 2024
1 parent 2b5a8bd commit 73ed40b
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 21 deletions.
20 changes: 19 additions & 1 deletion app/src/main/java/live/mehiz/mpvkt/ui/player/PlayerViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package live.mehiz.mpvkt.ui.player

import android.content.pm.ActivityInfo
import android.media.AudioManager
import android.net.Uri
import android.os.Build
Expand Down Expand Up @@ -67,7 +68,7 @@ class PlayerViewModel(
val isVolumeSliderShown = MutableStateFlow(false)
val currentBrightness = MutableStateFlow(
Settings.System.getFloat(activity.contentResolver, Settings.System.SCREEN_BRIGHTNESS)
.normalize(0f, 255f, 0f, 1f)
.normalize(0f, 255f, 0f, 1f),
)
val currentVolume = MutableStateFlow(activity.audioManager.getStreamVolume(AudioManager.STREAM_MUSIC))

Expand Down Expand Up @@ -351,6 +352,23 @@ class PlayerViewModel(
}
}
}

fun cycleScreenRotations() {
activity.requestedOrientation = when (activity.requestedOrientation) {
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE,
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,
-> {
playerPreferences.orientation.set(PlayerOrientation.SensorPortrait)
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
}

else -> {
playerPreferences.orientation.set(PlayerOrientation.SensorLandscape)
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
}
}
}
}

data class Track(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.ScreenRotation
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
Expand Down Expand Up @@ -37,6 +38,10 @@ fun BottomLeftPlayerControls(modifier: Modifier = Modifier) {
Icons.Default.Lock,
onClick = { viewModel.lockControls() },
)
ControlsButton(
icon = Icons.Default.ScreenRotation,
onClick = { viewModel.cycleScreenRotations() }
)
val defaultSpeed by playerPreferences.defaultSpeed.collectAsState()
ControlsButton(
text = stringResource(R.string.player_speed, defaultSpeed),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import live.mehiz.mpvkt.ui.player.controls.LocalPlayerButtonsClickEvent
import live.mehiz.mpvkt.ui.theme.spacing

Expand Down Expand Up @@ -82,7 +81,7 @@ fun ControlsButton(
interactionSource = interactionSource,
indication = rememberRipple(),
)
.padding(16.dp),
.padding(MaterialTheme.spacing.medium),
) {
Text(
text,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ fun CurrentChapter(
imageVector = Icons.Default.Bookmarks,
contentDescription = null,
modifier = Modifier
.padding(end = 8.dp)
.padding(end = MaterialTheme.spacing.smaller)
.size(16.dp),
tint = MaterialTheme.colorScheme.onBackground
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DoubleArrow
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 @@ -19,6 +20,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import live.mehiz.mpvkt.ui.theme.spacing

@Composable
fun PlayerUpdate(
Expand All @@ -29,7 +31,7 @@ fun PlayerUpdate(
modifier = modifier
.clip(RoundedCornerShape(16.dp))
.background(Color.Black.copy(0.4f))
.padding(vertical = 8.dp, horizontal = 16.dp)
.padding(vertical = MaterialTheme.spacing.smaller, horizontal = MaterialTheme.spacing.medium)
.animateContentSize(),
contentAlignment = Alignment.Center,
) { content() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import androidx.constraintlayout.compose.ConstraintLayout
import `is`.xyz.mpv.MPVLib
import live.mehiz.mpvkt.R
import live.mehiz.mpvkt.preferences.AudioPreferences
import live.mehiz.mpvkt.ui.theme.spacing
import org.koin.compose.koinInject

@Composable
Expand All @@ -38,7 +39,7 @@ fun AudioDelayPanel(
ConstraintLayout(
modifier = modifier
.fillMaxSize()
.padding(16.dp),
.padding(MaterialTheme.spacing.medium),
) {
val delayControlCard = createRef()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import `is`.xyz.mpv.MPVLib
import live.mehiz.mpvkt.R
import live.mehiz.mpvkt.preferences.SubtitlesPreferences
import live.mehiz.mpvkt.presentation.components.OutlinedNumericChooser
import live.mehiz.mpvkt.ui.theme.spacing
import org.koin.compose.koinInject
import kotlin.math.round

Expand Down Expand Up @@ -172,8 +173,8 @@ fun DelayCard(
colors = SubtitleSettingsCardColors(),
) {
Column(
Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
Modifier.padding(horizontal = MaterialTheme.spacing.medium, vertical = MaterialTheme.spacing.smaller),
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller),
) {
title()
OutlinedNumericChooser(
Expand All @@ -189,7 +190,7 @@ fun DelayCard(
modifier = Modifier.animateContentSize()
) { extraSettings() }
Row(
horizontalArrangement = Arrangement.spacedBy(8.dp),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller),
) {
Button(
onClick = onApply,
Expand All @@ -214,7 +215,7 @@ fun SubtitleDelayTitle(
) {
Row(
verticalAlignment = Alignment.Bottom,
horizontalArrangement = Arrangement.spacedBy(4.dp),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall),
modifier = modifier.fillMaxWidth(),
) {
Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import androidx.compose.material.icons.filled.FormatColorText
import androidx.compose.material.icons.filled.Palette
import androidx.compose.material3.Icon
import androidx.compose.material3.IconToggleButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
Expand All @@ -31,7 +32,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.core.graphics.alpha
import androidx.core.graphics.blue
import androidx.core.graphics.green
Expand All @@ -44,6 +44,7 @@ import live.mehiz.mpvkt.preferences.preference.collectAsState
import live.mehiz.mpvkt.preferences.preference.deleteAndGet
import live.mehiz.mpvkt.presentation.components.ExpandableCard
import live.mehiz.mpvkt.presentation.components.TintedSliderItem
import live.mehiz.mpvkt.ui.theme.spacing
import org.koin.compose.koinInject

@Composable
Expand All @@ -57,7 +58,7 @@ fun SubtitleSettingsColorsCard(
onExpand = { isExpanded = !isExpanded },
title = {
Row(
horizontalArrangement = Arrangement.spacedBy(16.dp),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.medium),
) {
Icon(Icons.Default.Palette, null)
Text(stringResource(R.string.player_sheets_sub_colors_card_title))
Expand All @@ -75,7 +76,7 @@ fun SubtitleSettingsColorsCard(
modifier = Modifier
.fillMaxWidth()
.horizontalScroll(rememberScrollState())
.padding(start = 4.dp, end = 16.dp),
.padding(start = MaterialTheme.spacing.extraSmall, end = MaterialTheme.spacing.medium),
) {
SubColorType.entries.forEach { type ->
IconToggleButton(
Expand All @@ -102,7 +103,7 @@ fun SubtitleSettingsColorsCard(
Text(stringResource(currentColorType.titleRes))
Spacer(Modifier.weight(1f))
TextButton(onClick = { resetColors(preferences) }) {
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Row(horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall)) {
Icon(Icons.Default.FormatColorReset, null)
Text(stringResource(R.string.generic_reset))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import androidx.compose.ui.graphics.Shadow
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
import live.mehiz.mpvkt.ui.theme.spacing

@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
@Composable
Expand Down Expand Up @@ -65,7 +66,7 @@ fun SubtitleSettingsPanel(
top.linkTo(parent.top, 32.dp)
start.linkTo(parent.start)
},
verticalArrangement = Arrangement.spacedBy(4.dp)
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall)
) {
TopAppBar(
title = {
Expand Down Expand Up @@ -95,7 +96,7 @@ fun SubtitleSettingsPanel(
} else {
Column(
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.spacedBy(8.dp),
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.smaller),
modifier = Modifier
.constrainAs(subSettingsCards) {
top.linkTo(parent.top)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import androidx.compose.material.icons.filled.FormatSize
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.IconToggleButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -49,6 +50,7 @@ import live.mehiz.mpvkt.preferences.preference.deleteAndGet
import live.mehiz.mpvkt.presentation.components.ExpandableCard
import live.mehiz.mpvkt.presentation.components.ExposedTextDropDownMenu
import live.mehiz.mpvkt.presentation.components.SliderItem
import live.mehiz.mpvkt.ui.theme.spacing
import org.koin.compose.koinInject

@SuppressLint("MutableCollectionMutableState")
Expand Down Expand Up @@ -88,7 +90,7 @@ fun SubtitleSettingsTypographyCard(
onExpand = { isExpanded = !isExpanded },
title = {
Row(
horizontalArrangement = Arrangement.spacedBy(16.dp),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.medium),
) {
Icon(Icons.Default.FormatColorText, null)
Text(stringResource(R.string.player_sheets_sub_typography_card_title))
Expand All @@ -105,7 +107,7 @@ fun SubtitleSettingsTypographyCard(
Modifier
.fillMaxWidth()
.horizontalScroll(rememberScrollState())
.padding(start = 4.dp, end = 16.dp),
.padding(start = MaterialTheme.spacing.extraSmall, end = MaterialTheme.spacing.medium),
verticalAlignment = Alignment.CenterVertically,
) {
IconToggleButton(
Expand Down Expand Up @@ -152,16 +154,16 @@ fun SubtitleSettingsTypographyCard(
}
Spacer(Modifier.weight(1f))
TextButton(onClick = { resetTypography(preferences) }) {
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Row(horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.extraSmall)) {
Icon(Icons.Default.FormatClear, null)
Text(stringResource(R.string.generic_reset))
}
}
}
val font by preferences.font.collectAsState()
Row(
modifier = Modifier.padding(horizontal = 16.dp),
horizontalArrangement = Arrangement.spacedBy(16.dp),
modifier = Modifier.padding(horizontal = MaterialTheme.spacing.medium),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacing.medium),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
Expand Down

0 comments on commit 73ed40b

Please sign in to comment.