From 2f3e84b8f95881cd9c4a567f64fd111464a202c7 Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Sun, 8 Feb 2026 11:28:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=B4=E8=BF=91?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=98=BE=E7=A4=BA=E8=B6=85=E8=BF=87=E4=BB=8A?= =?UTF-8?q?=E5=A4=A9=E7=9A=84=E5=BE=85=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 +- .../todo/ui/pages/overview/OverviewPage.kt | 22 ++++++++++++++++++- .../overview/components/UpcomingTaskCard.kt | 8 ++++--- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d06ff25..3f842b6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -38,7 +38,7 @@ android { applicationId = "cn.super12138.todo" minSdk = 24 targetSdk = 36 - versionCode = 971 + versionCode = 976 versionName = "2.3.3" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/OverviewPage.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/OverviewPage.kt index 6c39473..414a169 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/OverviewPage.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/OverviewPage.kt @@ -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.UpcomingTaskCard import cn.super12138.todo.ui.viewmodels.MainViewModel +import java.util.Calendar @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable @@ -27,10 +28,29 @@ fun OverviewPage( viewModel: MainViewModel, 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 totalTasks by remember { derivedStateOf { toDos.size } } 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( title = stringResource(R.string.page_overview), diff --git a/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/components/UpcomingTaskCard.kt b/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/components/UpcomingTaskCard.kt index 3b8e41f..51daa3e 100644 --- a/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/components/UpcomingTaskCard.kt +++ b/app/src/main/kotlin/cn/super12138/todo/ui/pages/overview/components/UpcomingTaskCard.kt @@ -15,7 +15,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import cn.super12138.todo.R import cn.super12138.todo.logic.database.TodoEntity import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.pages.settings.components.SettingsItem @@ -23,9 +25,9 @@ import cn.super12138.todo.utils.toLocalDateString @Composable fun UpcomingTaskCard( + modifier: Modifier = Modifier, nextWeekTodo: List, - containerColor: Color = TodoDefaults.ContainerColor, - modifier: Modifier = Modifier + containerColor: Color = TodoDefaults.ContainerColor ) { Card( modifier = modifier.height(300.dp), @@ -40,7 +42,7 @@ fun UpcomingTaskCard( verticalArrangement = Arrangement.spacedBy(16.dp) ) { Text( - text = "临近的任务", + text = stringResource(R.string.title_upcoming_task), style = MaterialTheme.typography.titleMedium ) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index de789b7..ccd827b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -118,4 +118,5 @@ 概览 尽量使用简短的分类名称 清除 + 临近的任务 \ 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 20a3aff..d09da55 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -119,4 +119,5 @@ Overview Keep category names concise Clear + Upcoming Task \ No newline at end of file