From 79ed64760c4b6ab425b5401dcc0ab52538f3a600 Mon Sep 17 00:00:00 2001 From: KaasKop- Date: Fri, 7 Apr 2023 13:04:23 +0200 Subject: [PATCH] Freezer item listt working, updated path, updated navigation updated home --- .idea/deploymentTargetDropDown.xml | 17 ---- app/src/main/AndroidManifest.xml | 1 + .../com/mitchelbv/thuis_c/MainActivity.kt | 30 +++++-- .../com/mitchelbv/thuis_c/ThuisDestination.kt | 32 ++++++- .../thuis_c/network/thuis/ThuisService.kt | 2 +- .../network/thuis/responses/Freezer.kt | 2 +- .../thuis/responses/FreezerItemsInFreezer.kt | 13 --- .../thuis_c/views/freezer/FreezerView.kt | 88 +++++++++---------- .../thuis_c/views/freezer/FreezerViewModel.kt | 7 +- .../freezer/detailed/FreezerDetailedView.kt | 10 --- .../freezer/detailed/FreezerEditViewModel.kt | 30 ------- .../views/freezer/edit/FreezerEditView.kt | 30 ------- .../freezer/item_list/FreezerItemListView.kt | 46 ++++++++++ .../item_list/FreezerItemListViewModel.kt | 34 +++++++ .../com/mitchelbv/thuis_c/views/home/Home.kt | 48 +++++----- app/src/main/res/values/strings.xml | 4 +- 16 files changed, 207 insertions(+), 187 deletions(-) delete mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt delete mode 100644 app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerDetailedView.kt delete mode 100644 app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerEditViewModel.kt delete mode 100644 app/src/main/java/com/mitchelbv/thuis_c/views/freezer/edit/FreezerEditView.kt create mode 100644 app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListView.kt create mode 100644 app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListViewModel.kt diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index afe833a..0000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1cc0729..3e4379e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Thuis" + android:usesCleartextTraffic="true" tools:targetApi="31"> NavHost( navController = navController, - startDestination = Home.route, + startDestination = HomeDestination.route, modifier = Modifier.padding(innerPadding) ) { - composable(route = Home.route) { + // Navigation items + composable(route = HomeDestination.route) { HomeScreen(onClickFreezers = { navController.navigate( - Home.route + FreezerListDestination.route ) - }) + }, onClickCards = { navController.navigate(CardsDestination.route) }) + } + composable(route = RecipesDestination.route) { RecipeScreen() } + composable(route = MatchesDestination.route) { MatchesScreen() } + + // Freezer screens + composable(route = FreezerListDestination.route) { + FreezerScreen( + onClickToFreezer = {freezer_id -> + navController.navigate("${FreezerItemListDestination.route}/${freezer_id}") + } + ) + } + + composable(route = "${FreezerItemListDestination.route}/{freezer_id}") { backStackEntry -> + FreezerItemListScreen(freezer_id = backStackEntry.arguments?.getString("freezer_id")!!.toInt(), onClickItem = {}) } - composable(route = Recipes.route) { RecipeScreen() } - composable(route = Matches.route) { MatchesScreen() } } } } diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ThuisDestination.kt b/app/src/main/java/com/mitchelbv/thuis_c/ThuisDestination.kt index 8be666c..ed52e31 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ThuisDestination.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ThuisDestination.kt @@ -10,20 +10,46 @@ interface ThuisDestination { val route: String } -object Home : ThuisDestination { +object HomeDestination : ThuisDestination { override val icon = Icons.Default.Home override val destinationName = R.string.nav_home override val route = "home" } -object Recipes : ThuisDestination { +object RecipesDestination : ThuisDestination { override val icon = Icons.Default.List override val destinationName = R.string.nav_recipes override val route = "recipes" } -object Matches : ThuisDestination { +object MatchesDestination : ThuisDestination { override val icon = Icons.Default.DateRange override val destinationName = R.string.nav_matches override val route = "matches" +} + +// Freezers +object FreezerListDestination : ThuisDestination { + override val icon = Icons.Default.DateRange + override val destinationName = R.string.home_card_freezer + override val route = "freezer_list" +} + +object FreezerItemListDestination : ThuisDestination { + override val icon = Icons.Default.DateRange + override val destinationName = R.string.home_card_freezer + override val route = "freezer_item_list/" +} + +object FreezerItemDetail : ThuisDestination { + override val icon = Icons.Default.DateRange + override val destinationName = R.string.home_card_freezer + override val route = "freezer_item_detail" +} + +// Cards +object CardsDestination : ThuisDestination { + override val icon = Icons.Default.DateRange + override val destinationName = R.string.home_card_cards + override val route = "cards" } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt index a1ffe5f..5599066 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt @@ -46,7 +46,7 @@ interface ThuisService { suspend fun getFreezerItem(id: Int): FreezerItem @GET("api/FreezerItem/InFreezer/{id}") - suspend fun getFreezerItemsInFreezer(id: Int): FreezerItemsInFreezer + suspend fun getFreezerItemsInFreezer(@Path("id") id: Int): List // Post @POST("api/FreezerItem") diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt index d99e314..458cc5a 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt @@ -4,6 +4,6 @@ import com.google.gson.annotations.SerializedName data class Freezer( @SerializedName("freezerId") var freezerId: Int? = null, - @SerializedName("location") var location: String? = null, + @SerializedName("name") var name: String? = null, @SerializedName("amountInFreezer") var amountInFreezer: Int? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt deleted file mode 100644 index adf76c8..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.mitchelbv.thuis_c.network.thuis.responses - -import com.google.gson.annotations.SerializedName - - -data class FreezerItemsInFreezer( - @SerializedName("freezerItemId") var freezerItemId: Int? = null, - @SerializedName("item") var item: String? = null, - @SerializedName("amount") var amount: Int? = null, - @SerializedName("drawer") var drawer: Int? = null, - @SerializedName("dateTimeAdded") var dateTimeAdded: String? = null, - @SerializedName("freezerId") var freezerId: Int? = null -) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerView.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerView.kt index ddcdb3e..6887ce3 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerView.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerView.kt @@ -1,13 +1,16 @@ package com.mitchelbv.thuis_c.views.freezer import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowForward import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.* import androidx.compose.runtime.Composable +import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment @@ -21,29 +24,38 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController import com.mitchelbv.thuis_c.R import com.mitchelbv.thuis_c.network.thuis.responses.Freezer +import com.mitchelbv.thuis_c.ui.theme.ThuisTypography +import kotlinx.coroutines.flow.StateFlow + +lateinit var freezerUiState: State @Composable fun FreezerScreen( - navHostController: NavHostController, - freezerViewModel: FreezerViewModel = viewModel() + freezerViewModel: FreezerViewModel = viewModel(), + onClickToFreezer: (freezer_id: Int) -> Unit ) { - val freezerUiState by freezerViewModel.uiState.collectAsState() - FreezerList(freezerUiState.freezers, navHostController, Modifier) - FloatingActionButton(onClick = { navHostController.navigate("edit_freezer") }) { - Icon(Icons.Default.Edit, contentDescription = "Edit") - } + freezerUiState = freezerViewModel.uiState.collectAsState() + FreezerList(onClickToFreezer, Modifier) } @Composable -fun FreezerList(freezers: List, navHostController: NavHostController, modifier: Modifier) { - if (freezers.isNotEmpty()) { +fun FreezerList( + onClickToFreezer: (freezer_id: Int) -> Unit, + modifier: Modifier +) { + if (freezerUiState.value.loading) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + CircularProgressIndicator() + } + } + if (freezerUiState.value.freezers.isNotEmpty()) { LazyColumn { - items(freezers) { freezer -> -// FreezerListItem( -// freezer = freezer, -// navigateTo = { navHostController.navigate("${Screen.FreezerDetails.route}/${freezer.freezerId}") }, -// modifier = modifier -// ) + items(freezerUiState.value.freezers) { freezer -> + FreezerListItem( + freezer = freezer, + navigateTo = { freezer.freezerId?.let { onClickToFreezer(it) } }, + modifier = modifier + ) } } @@ -54,36 +66,18 @@ fun FreezerList(freezers: List, navHostController: NavHostController, m } +@OptIn(ExperimentalMaterial3Api::class) @Composable fun FreezerListItem(freezer: Freezer, navigateTo: () -> Unit, modifier: Modifier) { - Row( - modifier = modifier - .fillMaxWidth() - .height(150.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text(freezer.location!!) - Column( - horizontalAlignment = Alignment.End, - verticalArrangement = Arrangement.Center, - modifier = modifier.fillMaxHeight() - ) { - Icon( - painter = painterResource(id = R.drawable.arrow), - contentDescription = "arrow", - modifier = modifier.size(20.dp) - ) - Text("${freezer.amountInFreezer} artikelen") - } - + Column { + ListItem( + headlineText = { Text(freezer.name!!) }, + supportingText = { Text(" ${freezer.amountInFreezer} " + stringResource(id = R.string.freezer_item_count_partial)) }, + trailingContent = { Icon(Icons.Default.ArrowForward, "")}, + modifier = modifier.clickable { navigateTo() } + ) + Divider() } - Spacer( - modifier = Modifier - .fillMaxWidth() - .background(Color(0f, 0f, 0f, .5f)) - .height(1.dp) - ) } @OptIn(ExperimentalMaterial3Api::class) @@ -95,13 +89,17 @@ fun FreezerCard(freezer: Freezer, navigateTo: () -> Unit) { .height(100.dp) .padding(10.dp) ) { - Text(freezer.location!!) + Text(freezer.name!!) } } @Preview(widthDp = 250, showBackground = true, heightDp = 300) @Composable fun FreezerListItemPreview() { - val freezer = Freezer(freezerId = 1, location = "Keuken", amountInFreezer = 5) - FreezerListItem(freezer = freezer, modifier = Modifier, navigateTo = {}) + val freezer = Freezer(freezerId = 1, name = "Keuken", amountInFreezer = 5) + Column { + FreezerListItem(freezer = freezer, modifier = Modifier, navigateTo = {}) + FreezerListItem(freezer = freezer, modifier = Modifier, navigateTo = {}) + FreezerListItem(freezer = freezer, modifier = Modifier, navigateTo = {}) + } } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerViewModel.kt index 3f55c63..e8a26e7 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerViewModel.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/FreezerViewModel.kt @@ -13,7 +13,8 @@ import kotlinx.coroutines.launch import java.net.ConnectException data class FreezerUiState( - val freezers: List = listOf() + val freezers: List = listOf(), + val loading: Boolean = true ) class FreezerViewModel : ViewModel() { @@ -28,9 +29,9 @@ class FreezerViewModel : ViewModel() { viewModelScope.launch(Dispatchers.IO) { try { val apiResponse = ThuisRetrofitHelper.thuis.getFreezers() - _uiState.value = FreezerUiState(apiResponse) + _uiState.value = FreezerUiState(freezers = apiResponse, loading = false) } catch (e: ConnectException) { - _uiState.value = FreezerUiState(listOf()) + _uiState.value = FreezerUiState(listOf(), loading = false) } } diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerDetailedView.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerDetailedView.kt deleted file mode 100644 index 45a4dc7..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerDetailedView.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.mitchelbv.thuis_c.views.freezer.detailed - -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.navigation.NavHostController - -@Composable -fun FreezerDetailedScreen(navHostController: NavHostController, freezerId: String?) { - Text("Hi!, requesting for freezer $freezerId") -} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerEditViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerEditViewModel.kt deleted file mode 100644 index f8aefeb..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/detailed/FreezerEditViewModel.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.mitchelbv.thuis_c.views.freezer.detailed - -import android.util.Log -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.mitchelbv.thuis_c.network.thuis.ThuisRetrofitHelper -import com.mitchelbv.thuis_c.network.thuis.responses.Freezer -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.launch -import java.net.ConnectException - -data class FreezerEditUiState( - var freezerName: String = "", -) - -class FreezerEditViewModel : ViewModel() { - private val _uiState = MutableStateFlow(FreezerEditUiState()) - val uiState: StateFlow = _uiState.asStateFlow() - - init { - fillFreezerTextField() - } - - private fun fillFreezerTextField() { - // Todo - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/edit/FreezerEditView.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/edit/FreezerEditView.kt deleted file mode 100644 index 3b50541..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/edit/FreezerEditView.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.mitchelbv.thuis_c.views.freezer.edit - -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Button -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Text -import androidx.compose.material3.TextField -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.lifecycle.viewmodel.compose.viewModel -import androidx.navigation.NavHostController -import com.mitchelbv.thuis_c.views.freezer.detailed.FreezerEditViewModel - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun FreezerEditScreen( - navHostController: NavHostController, - freezerEditViewModel: FreezerEditViewModel = viewModel(), - freezerId: String?) { - val freezerUiState by freezerEditViewModel.uiState.collectAsState() - val freezerName by remember { mutableStateOf(freezerUiState.freezerName)} - - Text("Hi!, editing (or creating) freezer. $freezerId") - Column { - TextField(value = freezerName, onValueChange = { freezerUiState.freezerName = it }) - Button(onClick = { /* TODO */ }) { - - } - } -} diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListView.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListView.kt new file mode 100644 index 0000000..bbdbea6 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListView.kt @@ -0,0 +1,46 @@ +package com.mitchelbv.thuis_c.views.freezer.item_list + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ListItem +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.res.stringResource +import androidx.lifecycle.viewmodel.CreationExtras +import androidx.lifecycle.viewmodel.compose.viewModel +import com.mitchelbv.thuis_c.R +import com.mitchelbv.thuis_c.network.thuis.responses.FreezerItem +import com.mitchelbv.thuis_c.views.freezer.FreezerListItem + +// Is the destination of FreezerItemListDestination +@Composable +fun FreezerItemListScreen( + freezer_id: Int, + freezerItemListViewModel: FreezerItemListViewModel = viewModel(), + onClickItem: (item_id: Int) -> Unit +) { + val freezerItemListUiState by freezerItemListViewModel.uiState.collectAsState() + freezerItemListViewModel.fillItemList(freezer_id) + FreezerItemList(freezerItemListUiState.items) +} + +@Composable +fun FreezerItemList(freezerItems: List) { + freezerItems.forEach { freezerItem -> + FreezerItemElement(freezerItem) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FreezerItemElement(freezerItem: FreezerItem) { + ListItem( + headlineText = { Text(freezerItem.item!!) }, + supportingText = { Text("${stringResource(R.string.freezer_item_drawer_partial)} ${freezerItem.drawer!!}") }, + trailingContent = { + // - 5 + with calls to api and such... + + } + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListViewModel.kt new file mode 100644 index 0000000..2529dd6 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/views/freezer/item_list/FreezerItemListViewModel.kt @@ -0,0 +1,34 @@ +package com.mitchelbv.thuis_c.views.freezer.item_list + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.mitchelbv.thuis_c.network.thuis.ThuisRetrofitHelper +import com.mitchelbv.thuis_c.network.thuis.responses.FreezerItem +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import java.net.ConnectException + +data class FreezerItemListUiState(val items: List = listOf()) + +class FreezerItemListViewModel : ViewModel() { + private val _uiState = MutableStateFlow(FreezerItemListUiState()) + val uiState: StateFlow = _uiState.asStateFlow() + +// init { +// fillItemList() +// } + + fun fillItemList(freezer_id: Int) { + viewModelScope.launch(Dispatchers.IO) { + try { + val apiResponse = ThuisRetrofitHelper.thuis.getFreezerItemsInFreezer(id = freezer_id) + _uiState.value = FreezerItemListUiState(apiResponse) + } catch (e: ConnectException) { + _uiState.value = FreezerItemListUiState(listOf(FreezerItem(item = "error"))) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/views/home/Home.kt b/app/src/main/java/com/mitchelbv/thuis_c/views/home/Home.kt index 740b629..88f6715 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/views/home/Home.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/views/home/Home.kt @@ -1,5 +1,6 @@ package com.mitchelbv.thuis_c.views.home +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* import androidx.compose.material3.* import androidx.compose.runtime.Composable @@ -13,43 +14,38 @@ import com.mitchelbv.thuis_c.ui.theme.ThuisTypography import com.mitchelbv.thuis_c.R @Composable -fun HomeScreen(onClickFreezers: () -> Unit) { +fun HomeScreen(onClickFreezers: () -> Unit, onClickCards: () -> Unit) { Column( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(stringResource(id = R.string.app_name), style = ThuisTypography.bodySmall) -// Row(modifier = Modifier.height(100.dp).width(180.dp)) { -// HomeCard(cardId = R.drawable.storefront, cardText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController) -// HomeCard(cardId = R.drawable.feyenoord, cardText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController) -// HomeButton(buttonText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController) -// HomeButton(buttonText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController) -// } +// HomeButton(buttonText = R.string.home_card_freezer, onButtonClick = onClickFreezers) + HomeCard( + cardText = R.string.home_card_freezer, + cardImage = "", + navigateTo = onClickFreezers + ) + } +} + +@Composable +fun HomeButton(buttonText: Int, onButtonClick: () -> Unit) { + Button(onClick = { onButtonClick() }) { + Text(stringResource(id = buttonText)) } } @OptIn(ExperimentalMaterial3Api::class) @Composable -fun HomeCard(cardId: Int, cardText: Int, routeTo: String, navController: NavHostController) { - Card(onClick = { navController.navigate(routeTo) }) { - Row(modifier = Modifier.fillMaxSize()) { - Icon( - painterResource(cardId), contentDescription = null, modifier = Modifier - .padding(end = 10.dp) - ) - Text( - text = stringResource(id = cardText), - Modifier - .padding(10.dp) - ) +fun HomeCard(cardText: Int, cardImage: String, navigateTo: () -> Unit) { + Column { + Card(onClick = { navigateTo() }, modifier = Modifier.size(width = 180.dp, height = 100.dp)) { + Column { + // TODO Some sort of image here. + Text(stringResource(id = cardText), style = ThuisTypography.displayMedium) + } } } -} - -@Composable -fun HomeButton(buttonText: Int, routeTo: String, navController: NavHostController) { - Button(onClick = { navController.navigate(routeTo) }) { - Text(stringResource(id = buttonText)) - } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8693faf..ba3d918 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,8 +6,10 @@ Home Cards - Freezer + Freezers No freezer(s) Edit freezer + items + Drawer \ No newline at end of file