17
17
package com.example.fruitties.android.ui
18
18
19
19
import androidx.compose.foundation.layout.Column
20
+ import androidx.compose.foundation.layout.Row
20
21
import androidx.compose.foundation.layout.Spacer
21
22
import androidx.compose.foundation.layout.WindowInsets
22
23
import androidx.compose.foundation.layout.WindowInsetsSides
@@ -25,15 +26,20 @@ import androidx.compose.foundation.layout.only
25
26
import androidx.compose.foundation.layout.padding
26
27
import androidx.compose.foundation.layout.safeDrawing
27
28
import androidx.compose.foundation.layout.systemBars
29
+ import androidx.compose.foundation.layout.width
28
30
import androidx.compose.foundation.layout.windowInsetsBottomHeight
29
31
import androidx.compose.foundation.lazy.LazyColumn
30
32
import androidx.compose.foundation.lazy.items
31
33
import androidx.compose.material.icons.Icons
32
34
import androidx.compose.material.icons.automirrored.filled.ArrowBack
33
35
import androidx.compose.material3.CenterAlignedTopAppBar
34
36
import androidx.compose.material3.ExperimentalMaterial3Api
37
+ import androidx.compose.material3.FilledIconButton
38
+ import androidx.compose.material3.HorizontalDivider
35
39
import androidx.compose.material3.Icon
36
40
import androidx.compose.material3.IconButton
41
+ import androidx.compose.material3.IconButtonColors
42
+ import androidx.compose.material3.IconButtonDefaults
37
43
import androidx.compose.material3.MaterialTheme
38
44
import androidx.compose.material3.Scaffold
39
45
import androidx.compose.material3.Text
@@ -43,12 +49,15 @@ import androidx.compose.runtime.collectAsState
43
49
import androidx.compose.runtime.getValue
44
50
import androidx.compose.ui.Alignment
45
51
import androidx.compose.ui.Modifier
52
+ import androidx.compose.ui.graphics.Color
46
53
import androidx.compose.ui.platform.LocalContext
47
54
import androidx.compose.ui.res.stringResource
55
+ import androidx.compose.ui.text.style.TextAlign
48
56
import androidx.compose.ui.unit.dp
49
57
import androidx.lifecycle.viewmodel.compose.viewModel
50
58
import com.example.fruitties.android.R
51
59
import com.example.fruitties.android.di.App
60
+ import com.example.fruitties.model.CartItemDetails
52
61
import com.example.fruitties.viewmodel.CartViewModel
53
62
import com.example.fruitties.viewmodel.creationExtras
54
63
@@ -81,7 +90,7 @@ fun CartScreen(onNavBarBack: () -> Unit) {
81
90
}
82
91
},
83
92
title = {
84
- Text (text = stringResource(R .string.frutties ))
93
+ Text (text = stringResource(R .string.cart ))
85
94
},
86
95
colors = TopAppBarDefaults .topAppBarColors(
87
96
containerColor = MaterialTheme .colorScheme.primary,
@@ -108,14 +117,17 @@ fun CartScreen(onNavBarBack: () -> Unit) {
108
117
val cartItemCount = cartState.totalItemCount
109
118
Text (
110
119
text = " Cart has $cartItemCount items" ,
111
- modifier = Modifier .padding(8 .dp),
112
120
)
121
+ HorizontalDivider ()
113
122
LazyColumn (
114
123
modifier = Modifier .fillMaxWidth(),
115
- horizontalAlignment = Alignment .CenterHorizontally ,
116
124
) {
117
125
items(cartState.cartDetails) { cartItem ->
118
- Text (text = " ${cartItem.fruittie.name} : ${cartItem.count} " )
126
+ CartItem (
127
+ cartItem = cartItem,
128
+ decreaseCountClick = viewModel::decreaseCountClick,
129
+ increaseCountClick = viewModel::increaseCountClick,
130
+ )
119
131
}
120
132
item {
121
133
Spacer (
@@ -128,3 +140,39 @@ fun CartScreen(onNavBarBack: () -> Unit) {
128
140
}
129
141
}
130
142
}
143
+
144
+ @Composable
145
+ fun CartItem (
146
+ cartItem : CartItemDetails ,
147
+ increaseCountClick : (CartItemDetails ) -> Unit ,
148
+ decreaseCountClick : (CartItemDetails ) -> Unit ,
149
+ ) {
150
+ Row (
151
+ verticalAlignment = Alignment .CenterVertically ,
152
+ ) {
153
+ Text (text = " ${cartItem.count} x" )
154
+ Spacer (Modifier .width(8 .dp))
155
+ Text (text = cartItem.fruittie.name)
156
+ Spacer (Modifier .weight(1f ))
157
+ FilledIconButton (
158
+ onClick = { decreaseCountClick(cartItem) },
159
+ colors = IconButtonDefaults .filledIconButtonColors(containerColor = Color .Red ),
160
+ ) {
161
+ Text (
162
+ text = " -" ,
163
+ color = MaterialTheme .colorScheme.onPrimary,
164
+ textAlign = TextAlign .Center ,
165
+ )
166
+ }
167
+ FilledIconButton (
168
+ onClick = { increaseCountClick(cartItem) },
169
+ colors = IconButtonDefaults .filledIconButtonColors(containerColor = Color .Green ),
170
+ ) {
171
+ Text (
172
+ text = " +" ,
173
+ color = MaterialTheme .colorScheme.onPrimary,
174
+ textAlign = TextAlign .Center ,
175
+ )
176
+ }
177
+ }
178
+ }
0 commit comments