@@ -7,30 +7,35 @@ import androidx.compose.foundation.layout.Box
77import androidx.compose.foundation.layout.Column
88import androidx.compose.foundation.layout.padding
99import androidx.compose.foundation.layout.size
10+ import androidx.compose.foundation.shape.CircleShape
1011import androidx.compose.foundation.shape.RoundedCornerShape
12+ import androidx.compose.foundation.verticalScroll
1113import androidx.compose.material3.Text
1214import androidx.compose.runtime.Composable
1315import androidx.compose.ui.Alignment
1416import androidx.compose.ui.Modifier
1517import androidx.compose.ui.draw.clip
1618import androidx.compose.ui.graphics.painter.Painter
19+ import androidx.compose.ui.layout.ContentScale
20+ import androidx.compose.ui.platform.LocalContext
1721import androidx.compose.ui.res.painterResource
1822import androidx.compose.ui.res.stringResource
1923import androidx.compose.ui.text.style.TextOverflow
2024import androidx.compose.ui.tooling.preview.Preview
2125import androidx.compose.ui.unit.dp
26+ import coil3.compose.rememberAsyncImagePainter
27+ import coil3.request.ImageRequest
2228import com.giraffe.tudeeapp.R
2329import com.giraffe.tudeeapp.design_system.color.LocalTudeeColors
2430import com.giraffe.tudeeapp.design_system.theme.Theme
31+ import com.giraffe.tudeeapp.domain.entity.Category
2532
2633@Composable
2734fun CategoryItem (
28- icon : Painter ,
29- categoryName : String ,
3035 modifier : Modifier = Modifier ,
31- count : Int = 0,
3236 isShowCount : Boolean = true,
3337 isSelected : Boolean = false,
38+ category : Category ,
3439 onClick : () -> Unit = {}
3540) {
3641
@@ -46,13 +51,35 @@ fun CategoryItem(
4651 .clickable(onClick = onClick),
4752 contentAlignment = Alignment .Center
4853 ) {
49- Image (
50- painter = icon,
51- contentDescription = stringResource(R .string.category_icon),
52- modifier = Modifier
53- .padding(23 .dp)
54- .size(32 .dp),
55- )
54+ if (category.isEditable) {
55+ Image (
56+ painter = rememberAsyncImagePainter(
57+ ImageRequest
58+ .Builder (LocalContext .current)
59+ .data(data = category.imageUri)
60+ .build()
61+ ),
62+ contentDescription = stringResource(R .string.category_icon),
63+ contentScale = ContentScale .FillBounds ,
64+ modifier = Modifier
65+ .padding(23 .dp)
66+ .size(32 .dp)
67+ .clip(CircleShape )
68+ )
69+ }else {
70+ Image (
71+ painter = rememberAsyncImagePainter(
72+ ImageRequest
73+ .Builder (LocalContext .current)
74+ .data(data = category.imageUri)
75+ .build()
76+ ),
77+ contentDescription = stringResource(R .string.category_icon),
78+ modifier = Modifier
79+ .padding(23 .dp)
80+ .size(32 .dp)
81+ )
82+ }
5683 }
5784 if (isSelected) {
5885 Box (
@@ -78,7 +105,7 @@ fun CategoryItem(
78105 .align(Alignment .TopEnd ),
79106 ) {
80107 Text (
81- text = count .toString(),
108+ text = category.taskCount .toString(),
82109 style = Theme .textStyle.label.small,
83110 color = LocalTudeeColors .current.hint,
84111 modifier = Modifier .align(Alignment .Center )
@@ -88,7 +115,7 @@ fun CategoryItem(
88115 }
89116
90117 Text (
91- text = categoryName ,
118+ text = category.name ,
92119 style = Theme .textStyle.label.small,
93120 color = LocalTudeeColors .current.body,
94121 maxLines = 1 ,
@@ -101,19 +128,11 @@ fun CategoryItem(
101128@Preview(showBackground = true )
102129@Composable
103130fun CategoryItemWithCountPreview () {
104- CategoryItem (
105- icon = painterResource(R .drawable.user_multiple),
106- categoryName = " Education" ,
107- count = 16
108- )
131+
109132}
110133
111134@Preview(showBackground = true )
112135@Composable
113136fun CategoryItemWithSelectedPreview () {
114- CategoryItem (
115- icon = painterResource(R .drawable.user_multiple),
116- categoryName = " Education" ,
117- isSelected = true
118- )
137+
119138}
0 commit comments