Skip to content

Commit

Permalink
Update UI
Browse files Browse the repository at this point in the history
  • Loading branch information
vshcryabets committed Jan 27, 2025
1 parent e7c6c85 commit 5108d08
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 19 deletions.
10 changes: 4 additions & 6 deletions app/src/main/java/com/vsh/activity/DevicesActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.example.cupcake.ui.theme.CupcakeTheme
import com.example.cupcake.ui.theme.AusbcTheme
import com.jiangdg.demo.MainActivity
import com.vsh.screens.CupcakeApp
import com.vsh.screens.DeviceListScreen
import com.vsh.screens.AusbcApp
import com.vsh.screens.DeviceListViewModel
import com.vsh.screens.DeviceListViewModelFactory
import kotlinx.coroutines.launch
Expand All @@ -47,9 +46,8 @@ class DevicesActivity : ComponentActivity() {
)
).get(DeviceListViewModel::class.java)
setContent {
CupcakeTheme {
CupcakeApp(viewModel = viewModel)
//DeviceListScreen.ScreenContent(viewModel = viewModel)
AusbcTheme {
AusbcApp(viewModel = viewModel)
}
}
}
Expand Down
64 changes: 52 additions & 12 deletions app/src/main/java/com/vsh/screens/DeviceListScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.Icon
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
Expand All @@ -44,9 +46,16 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.jiangdg.demo.R

enum class AusbcScreen() {
Start,
Benchmarks,
}

object DeviceListScreen {
@Composable
fun ProductItem(product: UsbDevice, onItemClick: (UsbDevice) -> Unit) {
Expand All @@ -72,8 +81,12 @@ object DeviceListScreen {
}

@Composable
fun ScreenContent(viewModel: DeviceListViewModel) {
val state by viewModel.state.collectAsState(DeviceListViewState())
fun ScreenContent(
uiState: DeviceListViewState,
onBenchmarks: () -> Unit,
onReload: () -> Unit,
onSelectUsbDevice: (UsbDevice) -> Unit
) {
Column(
modifier = Modifier
.padding(8.dp)
Expand All @@ -84,37 +97,45 @@ object DeviceListScreen {
) {
Button(
modifier = Modifier.padding(start = 16.dp),
onClick = { viewModel.onBenchmarks() }) {
onClick = onBenchmarks
) {
Text("Benchmarks")
}
Button(
modifier = Modifier.padding(start = 16.dp),
onClick = { viewModel.onEnumarate() }) {
onClick = onReload
) {
Text("Reload USB devices")
}
}

LazyColumn(
contentPadding = PaddingValues(horizontal = 8.dp, vertical = 8.dp),
) {
this.items(state.devices) {
ProductItem(product = it) {
viewModel.onClick(it)
}
this.items(uiState.devices) {
ProductItem(product = it, onItemClick = onSelectUsbDevice)
}
}
}
}

@Composable
fun Benchmarks(viewModel: DeviceListViewModel) {

}
}

@Composable
fun CupcakeAppBar(
fun AusbcAppBar(
canNavigateBack: Boolean,
navigateUp: () -> Unit,
modifier: Modifier = Modifier
) {
TopAppBar(
title = { Text(stringResource(id = R.string.app_name)) },
colors = TopAppBarDefaults.mediumTopAppBarColors(
containerColor = MaterialTheme.colorScheme.primaryContainer
),
modifier = modifier,
navigationIcon = {
if (canNavigateBack) {
Expand All @@ -130,19 +151,38 @@ fun CupcakeAppBar(
}

@Composable
fun CupcakeApp(
fun AusbcApp(
viewModel: DeviceListViewModel,
navController: NavHostController = rememberNavController()
) {

Scaffold(
topBar = {
CupcakeAppBar(
AusbcAppBar(
canNavigateBack = false,
navigateUp = { /* TODO: implement back navigation */ }
)
}
) { innerPadding ->
val uiState by viewModel.state.collectAsState()

NavHost(
navController = navController,
startDestination = AusbcScreen.Start.name,
modifier = Modifier.padding(innerPadding)
) {
composable(route = AusbcScreen.Start.name) {
DeviceListScreen.ScreenContent(
uiState = uiState,
onBenchmarks = {
viewModel.onBenchmarks()
navController.navigate(AusbcScreen.Benchmarks.name)
},
onReload = { viewModel.onEnumarate() },
onSelectUsbDevice = { viewModel.onClick(it) })
}
composable(route = AusbcScreen.Benchmarks.name) {
DeviceListScreen.Benchmarks(viewModel)
}
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/java/com/vsh/theme/Theme.kt
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private val DarkColors = darkColorScheme(
)

@Composable
fun CupcakeTheme(
fun AusbcTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
// Dynamic color is available on Android 12+ but turned off for training purposes
dynamicColor: Boolean = false,
Expand Down

0 comments on commit 5108d08

Please sign in to comment.