Skip to content
This repository has been archived by the owner on Aug 7, 2024. It is now read-only.

Commit

Permalink
Code cleanup, use dynamic colors for amoled theme
Browse files Browse the repository at this point in the history
  • Loading branch information
SuhasDissa authored and Bnyro committed Jul 16, 2023
1 parent 17d6025 commit 10ec510
Show file tree
Hide file tree
Showing 13 changed files with 140 additions and 122 deletions.
4 changes: 3 additions & 1 deletion app/src/main/java/com/bnyro/recorder/enums/ThemeMode.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import com.bnyro.recorder.util.Preferences
enum class ThemeMode {
SYSTEM,
LIGHT,
DARK;
DARK,
AMOLED,
;

companion object {
fun getCurrent() = valueOf(Preferences.getString(Preferences.themeModeKey, SYSTEM.name))
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/java/com/bnyro/recorder/ui/Destination.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.bnyro.recorder.ui

sealed class Destination(val route: String) {
object Home : Destination("home")
object Settings : Destination("settings")
object RecordingPlayer : Destination("player")
}
17 changes: 0 additions & 17 deletions app/src/main/java/com/bnyro/recorder/ui/Destinations.kt

This file was deleted.

17 changes: 9 additions & 8 deletions app/src/main/java/com/bnyro/recorder/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ package com.bnyro.recorder.ui
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.get
import androidx.navigation.compose.rememberNavController
import com.bnyro.recorder.enums.RecorderType
import com.bnyro.recorder.enums.ThemeMode
Expand All @@ -20,7 +19,7 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val themeModel: ThemeModel = ViewModelProvider(this).get()
val themeModel: ThemeModel by viewModels()

val initialRecorder = when (intent?.getStringExtra("action")) {
"audio" -> RecorderType.AUDIO
Expand All @@ -30,21 +29,23 @@ class MainActivity : ComponentActivity() {

setContent {
RecordYouTheme(
when (val mode = themeModel.themeMode) {
when (themeModel.themeMode) {
ThemeMode.SYSTEM -> isSystemInDarkTheme()
else -> mode == ThemeMode.DARK
}
ThemeMode.DARK -> true
else -> false
},
amoledDark = themeModel.themeMode == ThemeMode.AMOLED,
) {
val navController = rememberNavController()
Surface(
modifier = Modifier
.fillMaxSize(),
color = MaterialTheme.colorScheme.background
color = MaterialTheme.colorScheme.background,
) {
AppNavHost(
navController = navController,
modifier = Modifier,
initialRecorder = initialRecorder
initialRecorder = initialRecorder,
)
}
}
Expand Down
18 changes: 11 additions & 7 deletions app/src/main/java/com/bnyro/recorder/ui/NavHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,33 @@ import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import com.bnyro.recorder.enums.Recorder
import com.bnyro.recorder.enums.RecorderType
import com.bnyro.recorder.ui.screens.HomeScreen
import com.bnyro.recorder.ui.screens.PlayerScreen
import com.bnyro.recorder.ui.screens.SettingsScreen

@Composable
fun AppNavHost(
navController: NavHostController, modifier: Modifier = Modifier, initialRecorder: Recorder
navController: NavHostController,
modifier: Modifier = Modifier,
initialRecorder: RecorderType,
) {
NavHost(
navController = navController, startDestination = Home.route, modifier = modifier
navController = navController,
startDestination = Destination.Home.route,
modifier = modifier,
) {
composable(route = Home.route) {
composable(route = Destination.Home.route) {
HomeScreen(initialRecorder, onNavigate = { destination ->
navController.navigateTo(destination.route)
})
}

composable(route = Settings.route) {
composable(route = Destination.Settings.route) {
SettingsScreen()
}

composable(route = RecordingPlayer.route) {
composable(route = Destination.RecordingPlayer.route) {
PlayerScreen(showVideoModeInitially = false)
}
}
Expand All @@ -36,4 +40,4 @@ fun AppNavHost(
fun NavHostController.navigateTo(route: String) = this.navigate(route) {
launchSingleTop = true
restoreState = true
}
}
10 changes: 4 additions & 6 deletions app/src/main/java/com/bnyro/recorder/ui/common/BlobIconBox.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package com.bnyro.recorder.ui.common
import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
Expand All @@ -21,21 +20,20 @@ fun BlobIconBox(@DrawableRes icon: Int) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxWidth()
.height(350.dp)
.fillMaxSize()
.alpha(0.3f)
) {
Image(
modifier = Modifier.size(350.dp),
painter = painterResource(id = R.drawable.blob),
contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.tertiaryContainer)
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.secondaryContainer)
)
Image(
modifier = Modifier.size(250.dp),
painter = painterResource(id = icon),
contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onTertiaryContainer)
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSecondaryContainer)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ import com.bnyro.recorder.enums.ThemeMode

class ThemeModel : ViewModel() {
var themeMode by mutableStateOf(
ThemeMode.getCurrent()
ThemeMode.getCurrent(),
)
}
68 changes: 33 additions & 35 deletions app/src/main/java/com/bnyro/recorder/ui/screens/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,92 +25,90 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewmodel.compose.viewModel
import com.bnyro.recorder.R
import com.bnyro.recorder.enums.Recorder
import com.bnyro.recorder.enums.RecorderState
import com.bnyro.recorder.enums.RecorderType
import com.bnyro.recorder.ui.Destination
import com.bnyro.recorder.ui.RecordingPlayer
import com.bnyro.recorder.ui.Settings
import com.bnyro.recorder.ui.common.ClickableIcon
import com.bnyro.recorder.ui.models.RecorderModel
import kotlinx.coroutines.launch

@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
@Composable
fun HomeScreen(
initialRecorder: Recorder,
initialRecorder: RecorderType,
onNavigate: (Destination) -> Unit,
recorderModel: RecorderModel = viewModel()
recorderModel: RecorderModel = viewModel(),
) {
val pagerState = rememberPagerState { 2 }
val scope = rememberCoroutineScope()
Scaffold(modifier = Modifier.fillMaxSize(), topBar = {
TopAppBar(title = { Text(stringResource(R.string.app_name)) }, actions = {
ClickableIcon(
imageVector = Icons.Default.Settings,
contentDescription = stringResource(R.string.settings)
contentDescription = stringResource(R.string.settings),
) {
onNavigate(Settings)
onNavigate(Destination.Settings)
}
ClickableIcon(
imageVector = Icons.Default.VideoLibrary,
contentDescription = stringResource(R.string.recordings)
contentDescription = stringResource(R.string.recordings),
) {
onNavigate(RecordingPlayer)
onNavigate(Destination.RecordingPlayer)
}
})
}, bottomBar = {
Column {
AnimatedVisibility(recorderModel.recorderState == RecorderState.IDLE) {
NavigationBar {
NavigationBarItem(icon = {
Icon(
imageVector = Icons.Default.Mic,
contentDescription = stringResource(
id = R.string.record_sound
NavigationBarItem(
icon = {
Icon(
imageVector = Icons.Default.Mic,
contentDescription = stringResource(
id = R.string.record_sound,
),
)
)
},
},
label = { Text(stringResource(R.string.record_sound)) },
selected = (pagerState.currentPage == 0),
onClick = {
scope.launch {
pagerState.animateScrollToPage(
0
)
pagerState.animateScrollToPage(0)
}
})
NavigationBarItem(icon = {
Icon(
imageVector = Icons.Default.Videocam,
contentDescription = stringResource(
id = R.string.record_screen
},
)
NavigationBarItem(
icon = {
Icon(
imageVector = Icons.Default.Videocam,
contentDescription = stringResource(
id = R.string.record_screen,
),
)
)
},
},
label = { Text(stringResource(R.string.record_screen)) },
selected = (pagerState.currentPage == 1),
onClick = {
scope.launch {
pagerState.animateScrollToPage(
1
)
pagerState.animateScrollToPage(1)
}
})

},
)
}
}
}
}) { paddingValues ->
Column(
Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(paddingValues),
) {
HorizontalPager(
state = pagerState, modifier = Modifier.fillMaxSize()
state = pagerState,
modifier = Modifier.fillMaxSize(),
) { index ->
RecorderView(initialRecorder = initialRecorder, recordScreenMode = (index == 1))
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,20 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LargeTopAppBar
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.documentfile.provider.DocumentFile
import androidx.lifecycle.viewmodel.compose.viewModel
import com.bnyro.recorder.R
import com.bnyro.recorder.enums.SortOrder
import com.bnyro.recorder.obj.RecordingItemData
import com.bnyro.recorder.ui.common.ClickableIcon
import com.bnyro.recorder.ui.common.FullscreenDialog
import com.bnyro.recorder.ui.components.PlayerView
import com.bnyro.recorder.ui.models.PlayerModel

Expand Down
20 changes: 10 additions & 10 deletions app/src/main/java/com/bnyro/recorder/ui/screens/RecorderScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import android.os.Build
import android.text.format.DateUtils
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
Expand All @@ -24,12 +23,8 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExpandLess
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.material.icons.filled.Mic
import androidx.compose.material.icons.filled.Pause
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material.icons.filled.Stop
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ElevatedCard
Expand All @@ -52,12 +47,11 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.bnyro.recorder.R
import com.bnyro.recorder.enums.RecorderType
import com.bnyro.recorder.enums.RecorderState
import com.bnyro.recorder.enums.RecorderType
import com.bnyro.recorder.ui.common.BlobIconBox
import com.bnyro.recorder.ui.common.ClickableIcon
import com.bnyro.recorder.ui.components.AudioVisualizer
import com.bnyro.recorder.ui.components.SettingsBottomSheet
import com.bnyro.recorder.ui.models.RecorderModel

@Composable
Expand Down Expand Up @@ -147,7 +141,7 @@ fun RecorderView(

ElevatedCard(
colors = CardDefaults.elevatedCardColors(
containerColor = if (isSystemInDarkTheme()) Color(0xffee665b) else Color(
containerColor = if (isSystemInDarkTheme()) Color(0xA8EE665B) else Color(
0xffdd6f62
),
contentColor = Color.White
Expand Down Expand Up @@ -184,9 +178,15 @@ fun RecorderView(
else -> {
Box(
Modifier
.size(36.dp)
.size(40.dp)
.clip(CircleShape)
.background(Color(0x9FFFFFFF))
)
Box(
Modifier
.size(26.dp)
.clip(CircleShape)
.background(Color.White)
.background(Color(0x9FFFFFFF))
)
}
}
Expand Down
Loading

0 comments on commit 10ec510

Please sign in to comment.