fix: 修复临近待办显示超过今天的待办
This commit is contained in:
parent
da0728d390
commit
2f3e84b8f9
5 changed files with 29 additions and 5 deletions
|
|
@ -38,7 +38,7 @@ android {
|
||||||
applicationId = "cn.super12138.todo"
|
applicationId = "cn.super12138.todo"
|
||||||
minSdk = 24
|
minSdk = 24
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 971
|
versionCode = 976
|
||||||
versionName = "2.3.3"
|
versionName = "2.3.3"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import cn.super12138.todo.ui.components.TopAppBarScaffold
|
||||||
import cn.super12138.todo.ui.pages.overview.components.RoundedCornerCardLarge
|
import cn.super12138.todo.ui.pages.overview.components.RoundedCornerCardLarge
|
||||||
import cn.super12138.todo.ui.pages.overview.components.UpcomingTaskCard
|
import cn.super12138.todo.ui.pages.overview.components.UpcomingTaskCard
|
||||||
import cn.super12138.todo.ui.viewmodels.MainViewModel
|
import cn.super12138.todo.ui.viewmodels.MainViewModel
|
||||||
|
import java.util.Calendar
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
|
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -27,10 +28,29 @@ fun OverviewPage(
|
||||||
viewModel: MainViewModel,
|
viewModel: MainViewModel,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
|
val today = Calendar.getInstance().apply {
|
||||||
|
// 将时间设置为当天的开始(00:00:00.000)
|
||||||
|
// 兼容API24
|
||||||
|
set(Calendar.HOUR_OF_DAY, 0)
|
||||||
|
set(Calendar.MINUTE, 0)
|
||||||
|
set(Calendar.SECOND, 0)
|
||||||
|
set(Calendar.MILLISECOND, 0)
|
||||||
|
}
|
||||||
|
|
||||||
val toDos by viewModel.sortedTodos.collectAsState(initial = emptyList())
|
val toDos by viewModel.sortedTodos.collectAsState(initial = emptyList())
|
||||||
val totalTasks by remember { derivedStateOf { toDos.size } }
|
val totalTasks by remember { derivedStateOf { toDos.size } }
|
||||||
val completedTasks by remember { derivedStateOf { toDos.count { it.isCompleted } } }
|
val completedTasks by remember { derivedStateOf { toDos.count { it.isCompleted } } }
|
||||||
val nextWeekTodo by remember { derivedStateOf { toDos.filter { it.dueDate != null && it.dueDate < System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000 } } }
|
val nextWeekTodo by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
val weekFromNow = now + 7L * 24 * 60 * 60 * 1000
|
||||||
|
toDos.filter { todo ->
|
||||||
|
val due = todo.dueDate ?: return@filter false
|
||||||
|
due >= today.timeInMillis && due < weekFromNow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TopAppBarScaffold(
|
TopAppBarScaffold(
|
||||||
title = stringResource(R.string.page_overview),
|
title = stringResource(R.string.page_overview),
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,9 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import cn.super12138.todo.R
|
||||||
import cn.super12138.todo.logic.database.TodoEntity
|
import cn.super12138.todo.logic.database.TodoEntity
|
||||||
import cn.super12138.todo.ui.TodoDefaults
|
import cn.super12138.todo.ui.TodoDefaults
|
||||||
import cn.super12138.todo.ui.pages.settings.components.SettingsItem
|
import cn.super12138.todo.ui.pages.settings.components.SettingsItem
|
||||||
|
|
@ -23,9 +25,9 @@ import cn.super12138.todo.utils.toLocalDateString
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun UpcomingTaskCard(
|
fun UpcomingTaskCard(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
nextWeekTodo: List<TodoEntity>,
|
nextWeekTodo: List<TodoEntity>,
|
||||||
containerColor: Color = TodoDefaults.ContainerColor,
|
containerColor: Color = TodoDefaults.ContainerColor
|
||||||
modifier: Modifier = Modifier
|
|
||||||
) {
|
) {
|
||||||
Card(
|
Card(
|
||||||
modifier = modifier.height(300.dp),
|
modifier = modifier.height(300.dp),
|
||||||
|
|
@ -40,7 +42,7 @@ fun UpcomingTaskCard(
|
||||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = "临近的任务",
|
text = stringResource(R.string.title_upcoming_task),
|
||||||
style = MaterialTheme.typography.titleMedium
|
style = MaterialTheme.typography.titleMedium
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,4 +118,5 @@
|
||||||
<string name="page_overview">概览</string>
|
<string name="page_overview">概览</string>
|
||||||
<string name="tip_short_category">尽量使用简短的分类名称</string>
|
<string name="tip_short_category">尽量使用简短的分类名称</string>
|
||||||
<string name="action_clear">清除</string>
|
<string name="action_clear">清除</string>
|
||||||
|
<string name="title_upcoming_task">临近的任务</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -119,4 +119,5 @@
|
||||||
<string name="page_overview">Overview</string>
|
<string name="page_overview">Overview</string>
|
||||||
<string name="tip_short_category">Keep category names concise</string>
|
<string name="tip_short_category">Keep category names concise</string>
|
||||||
<string name="action_clear">Clear</string>
|
<string name="action_clear">Clear</string>
|
||||||
|
<string name="title_upcoming_task">Upcoming Task</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in a new issue