Skip to content

Commit 431256b

Browse files
committed
update UI
1 parent 1182098 commit 431256b

File tree

2 files changed

+84
-24
lines changed

2 files changed

+84
-24
lines changed

.idea/misc.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/hoc081098/datastoresample/ui/MainScreen.kt

Lines changed: 82 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@ package com.hoc081098.datastoresample.ui
22

33
import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.animation.ExperimentalAnimationApi
5+
import androidx.compose.foundation.background
56
import androidx.compose.foundation.layout.Arrangement
67
import androidx.compose.foundation.layout.Box
78
import androidx.compose.foundation.layout.Column
8-
import androidx.compose.foundation.layout.PaddingValues
99
import androidx.compose.foundation.layout.Row
1010
import androidx.compose.foundation.layout.Spacer
1111
import androidx.compose.foundation.layout.fillMaxHeight
12+
import androidx.compose.foundation.layout.fillMaxSize
1213
import androidx.compose.foundation.layout.fillMaxWidth
1314
import androidx.compose.foundation.layout.height
1415
import androidx.compose.foundation.layout.padding
16+
import androidx.compose.foundation.layout.requiredHeight
17+
import androidx.compose.foundation.layout.requiredWidth
1518
import androidx.compose.foundation.layout.width
1619
import androidx.compose.foundation.layout.wrapContentWidth
1720
import androidx.compose.foundation.lazy.LazyColumn
@@ -31,18 +34,22 @@ import androidx.compose.material.Text
3134
import androidx.compose.material.TopAppBar
3235
import androidx.compose.material.icons.Icons
3336
import androidx.compose.material.icons.filled.Check
37+
import androidx.compose.material.icons.filled.DateRange
3438
import androidx.compose.material.icons.filled.Reorder
3539
import androidx.compose.material.icons.filled.Sort
3640
import androidx.compose.runtime.Composable
3741
import androidx.compose.ui.Alignment
3842
import androidx.compose.ui.Modifier
43+
import androidx.compose.ui.graphics.Color
3944
import androidx.compose.ui.graphics.Shape
40-
import androidx.compose.ui.tooling.preview.Preview
4145
import androidx.compose.ui.unit.dp
42-
import com.hoc081098.datastoresample.domain.usecase.FilteredSortedTasks
4346
import com.hoc081098.datastoresample.domain.model.SortOrder
4447
import com.hoc081098.datastoresample.domain.model.Task
45-
import com.hoc081098.datastoresample.ui.theme.DataStoreSampleTheme
48+
import com.hoc081098.datastoresample.domain.model.TaskPriority
49+
import com.hoc081098.datastoresample.domain.model.TaskPriority.*
50+
import com.hoc081098.datastoresample.domain.usecase.FilteredSortedTasks
51+
import java.text.SimpleDateFormat
52+
import java.util.*
4653

4754
@Composable
4855
fun MainScreen(
@@ -67,7 +74,7 @@ fun MainScreen(
6774
}
6875
)
6976
},
70-
) {
77+
) { innerPadding ->
7178
if (state == null) {
7279
Column(
7380
modifier = Modifier
@@ -84,7 +91,10 @@ fun MainScreen(
8491
.fillMaxHeight()
8592
.fillMaxWidth(),
8693
) {
87-
MainTasksList(state.tasks, Modifier.weight(1f))
94+
MainTasksList(state.tasks,
95+
Modifier
96+
.weight(1f)
97+
.padding(innerPadding))
8898

8999
Row(modifier = Modifier.padding(all = 16.dp)) {
90100
Icon(
@@ -145,7 +155,6 @@ fun MainScreen(
145155
fun MainTasksList(tasks: List<Task>, modifier: Modifier = Modifier) {
146156
LazyColumn(
147157
modifier = modifier,
148-
contentPadding = PaddingValues(all = 8.dp)
149158
) {
150159
items(tasks) { task ->
151160
TaskRow(task = task)
@@ -156,20 +165,57 @@ fun MainTasksList(tasks: List<Task>, modifier: Modifier = Modifier) {
156165
}
157166
}
158167

168+
private val TaskPriority.color: Color
169+
get() {
170+
return when (this) {
171+
HIGH -> Color.Red.copy(alpha = 0.8f)
172+
MEDIUM -> Color.Magenta.copy(alpha = 0.8f)
173+
LOW -> Color.Green.copy(alpha = 0.8f)
174+
}
175+
}
176+
private val dateFormat = SimpleDateFormat("MMM dd, yyyy", Locale.US)
177+
159178
@Composable
160179
fun TaskRow(task: Task) {
180+
val bgColor = if (task.completed) {
181+
LocalContentColor.current.copy(alpha = 0.1f)
182+
} else {
183+
Color.Unspecified
184+
}
185+
161186
Column(
162187
verticalArrangement = Arrangement.SpaceBetween,
163-
modifier = Modifier.padding(all = 12.dp)
188+
modifier = Modifier
189+
.fillMaxSize()
190+
.background(bgColor)
191+
.padding(all = 12.dp)
164192
) {
165193
Text(
166194
text = task.name,
167195
style = MaterialTheme.typography.subtitle1,
168196
)
197+
Spacer(modifier = Modifier.requiredHeight(8.dp))
169198
Text(
170-
text = "Priority: ${task.priority.name}",
171-
style = MaterialTheme.typography.subtitle2,
199+
text = "Priority ${task.priority.name}",
200+
style = MaterialTheme.typography.subtitle2.copy(
201+
color = task.priority.color
202+
),
172203
)
204+
Spacer(modifier = Modifier.requiredHeight(8.dp))
205+
Row(
206+
verticalAlignment = Alignment.CenterVertically
207+
) {
208+
Icon(
209+
imageVector = Icons.Default.DateRange,
210+
contentDescription = null,
211+
tint = LocalContentColor.current.copy(alpha = 0.5f),
212+
)
213+
Spacer(modifier = Modifier.requiredWidth(8.dp))
214+
Text(
215+
dateFormat.format(task.deadline),
216+
style = MaterialTheme.typography.caption,
217+
)
218+
}
173219
}
174220
}
175221

@@ -222,17 +268,29 @@ fun SortChip(
222268
}
223269
}
224270

225-
@Preview
226-
@Composable
227-
fun MainScreenPreview() {
228-
DataStoreSampleTheme {
229-
MainScreen(
230-
state = null,
231-
changeShowCompleted = {},
232-
enableSortByDeadline = {},
233-
enableSortByPriority = {},
234-
lightTheme = false,
235-
changeTheme = {}
236-
)
237-
}
238-
}
271+
//@Preview
272+
//@Composable
273+
//fun MainScreenPreview() {
274+
// DataStoreSampleTheme {
275+
// MainScreen(
276+
// state = null,
277+
// changeShowCompleted = {},
278+
// enableSortByDeadline = {},
279+
// enableSortByPriority = {},
280+
// lightTheme = false,
281+
// changeTheme = {}
282+
// )
283+
// }
284+
//}
285+
//
286+
//@Preview
287+
//@Composable
288+
//fun TaskRowPreview() {
289+
// TaskRow(
290+
// task = Task(
291+
// name = "Complete graduate project",
292+
// deadline = Date(),
293+
// priority = HIGH,
294+
// ),
295+
// )
296+
//}

0 commit comments

Comments
 (0)