chore: 字符串国际化 & 代码格式化和优化
This commit is contained in:
parent
b585565459
commit
9617f8d0aa
16 changed files with 94 additions and 47 deletions
|
|
@ -38,7 +38,7 @@ android {
|
|||
applicationId = "cn.super12138.todo"
|
||||
minSdk = 24
|
||||
targetSdk = 36
|
||||
versionCode = 976
|
||||
versionCode = 978
|
||||
versionName = "2.3.3"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ fun SharedTransitionScope.TodoEditPage(
|
|||
animatedVisibilityScope = LocalNavAnimatedContentScope.current,
|
||||
resizeMode = SharedTransitionScope.ResizeMode.RemeasureToBounds
|
||||
),
|
||||
//TODO: 没想好加不加 .skipToLookaheadSize(),
|
||||
//TODO: 没想好加不加 .skipToLookaheadSize(),
|
||||
onSave = onSave,
|
||||
onDelete = onDelete,
|
||||
onNavigateUp = onNavigateUp
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ fun TodoDueDateChooser(
|
|||
TextField(
|
||||
value = value.toLocalDateString(),
|
||||
onValueChange = {},
|
||||
label = { Text("截止日期(可选)") },
|
||||
label = { Text(stringResource(R.string.label_due_date)) },
|
||||
readOnly = true,
|
||||
interactionSource = interactionSource,
|
||||
modifier = modifier
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ class EditorState(val initialTodo: TodoEntity? = null) {
|
|||
fun setErrorIfNotValid(): Boolean {
|
||||
isErrorContent = toDoContent.trim().isEmpty()
|
||||
if (selectedCategoryIndex == -1 && categoryContent.trim().isEmpty()) {
|
||||
isErrorCategory = true
|
||||
categorySupportingText = R.string.error_no_content_entered
|
||||
isErrorCategory = true
|
||||
categorySupportingText = R.string.error_no_content_entered
|
||||
} else {
|
||||
isErrorCategory = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +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
|
||||
import cn.super12138.todo.utils.SystemUtils
|
||||
|
||||
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
|
||||
@Composable
|
||||
|
|
@ -28,25 +28,16 @@ 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 {
|
||||
val now = System.currentTimeMillis()
|
||||
val weekFromNow = now + 7L * 24 * 60 * 60 * 1000
|
||||
val today = SystemUtils.getToday()
|
||||
val weekFromToday = today + 7L * 24 * 60 * 60 * 1000
|
||||
toDos.filter { todo ->
|
||||
val due = todo.dueDate ?: return@filter false
|
||||
due >= today.timeInMillis && due < weekFromNow
|
||||
due in today..<weekFromToday
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -66,14 +57,14 @@ fun OverviewPage(
|
|||
item {
|
||||
RoundedCornerCardLarge(
|
||||
iconRes = R.drawable.ic_apps,
|
||||
title = "总任务",
|
||||
title = stringResource(R.string.title_all_task),
|
||||
count = totalTasks
|
||||
)
|
||||
}
|
||||
item {
|
||||
RoundedCornerCardLarge(
|
||||
iconRes = R.drawable.ic_check_circle,
|
||||
title = "已完成",
|
||||
title = stringResource(R.string.title_completed_task),
|
||||
count = completedTasks,
|
||||
containerColor = MaterialTheme.colorScheme.secondaryContainer
|
||||
)
|
||||
|
|
@ -81,7 +72,7 @@ fun OverviewPage(
|
|||
item {
|
||||
RoundedCornerCardLarge(
|
||||
iconRes = R.drawable.ic_pending,
|
||||
title = "未完成",
|
||||
title = stringResource(R.string.title_pending_task),
|
||||
count = totalTasks - completedTasks,
|
||||
containerColor = MaterialTheme.colorScheme.errorContainer // tertiaryContainer
|
||||
)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ fun RoundedCornerCardLarge(
|
|||
) {
|
||||
Text(
|
||||
text = title,
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
style = MaterialTheme.typography.titleMedium
|
||||
)
|
||||
|
||||
BasicText(
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ 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.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
|
|
@ -79,6 +80,8 @@ fun UpcomingTaskItem(
|
|||
dueDate: Long?,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
Column(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
|
|
@ -100,7 +103,7 @@ fun UpcomingTaskItem(
|
|||
)
|
||||
|
||||
Text(
|
||||
text = dueDate.toRelativeTimeString(),
|
||||
text = dueDate.toRelativeTimeString(context),
|
||||
style = MaterialTheme.typography.labelMedium.copy(
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
fontWeight = FontWeight.Bold
|
||||
|
|
|
|||
|
|
@ -41,6 +41,19 @@ object SystemUtils {
|
|||
|
||||
return sdf.format(currentTime)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当天的时间戳
|
||||
*/
|
||||
fun getToday(): Long = 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)
|
||||
}.timeInMillis
|
||||
|
||||
}
|
||||
|
||||
fun ComponentActivity.configureEdgeToEdge() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.super12138.todo.utils
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.foundation.shape.CornerBasedShape
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
|
|
@ -11,6 +12,7 @@ import androidx.compose.ui.graphics.Brush
|
|||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.drawscope.ContentDrawScope
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import cn.super12138.todo.R
|
||||
import cn.super12138.todo.logic.model.Priority
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Calendar
|
||||
|
|
@ -88,8 +90,14 @@ fun Long?.toLocalDateString(): String {
|
|||
return format.format(date)
|
||||
}
|
||||
|
||||
// 未来相对时间(如“3天后”)的实现,最小层级为天
|
||||
fun Long?.toRelativeTimeString(): String {
|
||||
/**
|
||||
* 将时间戳转换为相对时间字符串
|
||||
*
|
||||
* @receiver Long? 时间戳(单位为毫秒)或 null
|
||||
* @param context 上下文,用于获取字符串资源
|
||||
* @return String 格式化后的相对时间字符串。如果为传入参数为null则返回空字符串,反之根据时间差返回相应的字符串,如“今天”、“明天”、“3天后”、“2周后”、“1个月后”、“1年后”等
|
||||
*/
|
||||
fun Long?.toRelativeTimeString(context: Context): String {
|
||||
if (this == null) return ""
|
||||
val today = Calendar.getInstance().apply {
|
||||
// 将时间设置为当天的开始(00:00:00.000)
|
||||
|
|
@ -103,12 +111,24 @@ fun Long?.toRelativeTimeString(): String {
|
|||
|
||||
return diff.toComponents { days, _, _, _, _ ->
|
||||
when {
|
||||
days.days == 1.days -> "明天"
|
||||
days.days > 1.days && days.days < 7.days -> "${days}天后"
|
||||
days.days in 7.days..<30.days -> "${days / 7}周后"
|
||||
days.days in 30.days..<365.days -> "${days / 30}个月后"
|
||||
days.days >= 365.days -> "${days / 365}年后"
|
||||
else -> "今天"
|
||||
days.days == 1.days -> context.getString(R.string.time_tomorrow)
|
||||
days.days > 1.days && days.days < 7.days -> context.getString(
|
||||
R.string.time_in_days,
|
||||
days.toInt()
|
||||
)
|
||||
|
||||
days.days in 7.days..<30.days -> context.getString(
|
||||
R.string.time_in_weeks,
|
||||
(days / 7).toInt()
|
||||
)
|
||||
|
||||
days.days in 30.days..<365.days -> context.getString(
|
||||
R.string.time_in_months,
|
||||
(days / 30).toInt()
|
||||
)
|
||||
|
||||
days.days >= 365.days -> context.getString(R.string.time_in_years, (days / 365).toInt())
|
||||
else -> context.getString(R.string.time_today)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M183.5,776.5Q160,753 160,720Q160,687 183.5,663.5Q207,640 240,640Q273,640 296.5,663.5Q320,687 320,720Q320,753 296.5,776.5Q273,800 240,800Q207,800 183.5,776.5ZM423.5,776.5Q400,753 400,720Q400,687 423.5,663.5Q447,640 480,640Q513,640 536.5,663.5Q560,687 560,720Q560,753 536.5,776.5Q513,800 480,800Q447,800 423.5,776.5ZM663.5,776.5Q640,753 640,720Q640,687 663.5,663.5Q687,640 720,640Q753,640 776.5,663.5Q800,687 800,720Q800,753 776.5,776.5Q753,800 720,800Q687,800 663.5,776.5ZM183.5,536.5Q160,513 160,480Q160,447 183.5,423.5Q207,400 240,400Q273,400 296.5,423.5Q320,447 320,480Q320,513 296.5,536.5Q273,560 240,560Q207,560 183.5,536.5ZM423.5,536.5Q400,513 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,513 536.5,536.5Q513,560 480,560Q447,560 423.5,536.5ZM663.5,536.5Q640,513 640,480Q640,447 663.5,423.5Q687,400 720,400Q753,400 776.5,423.5Q800,447 800,480Q800,513 776.5,536.5Q753,560 720,560Q687,560 663.5,536.5ZM183.5,296.5Q160,273 160,240Q160,207 183.5,183.5Q207,160 240,160Q273,160 296.5,183.5Q320,207 320,240Q320,273 296.5,296.5Q273,320 240,320Q207,320 183.5,296.5ZM423.5,296.5Q400,273 400,240Q400,207 423.5,183.5Q447,160 480,160Q513,160 536.5,183.5Q560,207 560,240Q560,273 536.5,296.5Q513,320 480,320Q447,320 423.5,296.5ZM663.5,296.5Q640,273 640,240Q640,207 663.5,183.5Q687,160 720,160Q753,160 776.5,183.5Q800,207 800,240Q800,273 776.5,296.5Q753,320 720,320Q687,320 663.5,296.5Z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M183.5,776.5Q160,753 160,720Q160,687 183.5,663.5Q207,640 240,640Q273,640 296.5,663.5Q320,687 320,720Q320,753 296.5,776.5Q273,800 240,800Q207,800 183.5,776.5ZM423.5,776.5Q400,753 400,720Q400,687 423.5,663.5Q447,640 480,640Q513,640 536.5,663.5Q560,687 560,720Q560,753 536.5,776.5Q513,800 480,800Q447,800 423.5,776.5ZM663.5,776.5Q640,753 640,720Q640,687 663.5,663.5Q687,640 720,640Q753,640 776.5,663.5Q800,687 800,720Q800,753 776.5,776.5Q753,800 720,800Q687,800 663.5,776.5ZM183.5,536.5Q160,513 160,480Q160,447 183.5,423.5Q207,400 240,400Q273,400 296.5,423.5Q320,447 320,480Q320,513 296.5,536.5Q273,560 240,560Q207,560 183.5,536.5ZM423.5,536.5Q400,513 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,513 536.5,536.5Q513,560 480,560Q447,560 423.5,536.5ZM663.5,536.5Q640,513 640,480Q640,447 663.5,423.5Q687,400 720,400Q753,400 776.5,423.5Q800,447 800,480Q800,513 776.5,536.5Q753,560 720,560Q687,560 663.5,536.5ZM183.5,296.5Q160,273 160,240Q160,207 183.5,183.5Q207,160 240,160Q273,160 296.5,183.5Q320,207 320,240Q320,273 296.5,296.5Q273,320 240,320Q207,320 183.5,296.5ZM423.5,296.5Q400,273 400,240Q400,207 423.5,183.5Q447,160 480,160Q513,160 536.5,183.5Q560,207 560,240Q560,273 536.5,296.5Q513,320 480,320Q447,320 423.5,296.5ZM663.5,296.5Q640,273 640,240Q640,207 663.5,183.5Q687,160 720,160Q753,160 776.5,183.5Q800,207 800,240Q800,273 776.5,296.5Q753,320 720,320Q687,320 663.5,296.5Z" />
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M424,552L338,466Q327,455 310,455Q293,455 282,466Q271,477 271,494Q271,511 282,522L396,636Q408,648 424,648Q440,648 452,636L678,410Q689,399 689,382Q689,365 678,354Q667,343 650,343Q633,343 622,354L424,552ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M424,552L338,466Q327,455 310,455Q293,455 282,466Q271,477 271,494Q271,511 282,522L396,636Q408,648 424,648Q440,648 452,636L678,410Q689,399 689,382Q689,365 678,354Q667,343 650,343Q633,343 622,354L424,552ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z" />
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M520,320L520,160Q520,143 531.5,131.5Q543,120 560,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,320Q840,337 828.5,348.5Q817,360 800,360L560,360Q543,360 531.5,348.5Q520,337 520,320ZM120,480L120,160Q120,143 131.5,131.5Q143,120 160,120L400,120Q417,120 428.5,131.5Q440,143 440,160L440,480Q440,497 428.5,508.5Q417,520 400,520L160,520Q143,520 131.5,508.5Q120,497 120,480ZM520,800L520,480Q520,463 531.5,451.5Q543,440 560,440L800,440Q817,440 828.5,451.5Q840,463 840,480L840,800Q840,817 828.5,828.5Q817,840 800,840L560,840Q543,840 531.5,828.5Q520,817 520,800ZM120,800L120,640Q120,623 131.5,611.5Q143,600 160,600L400,600Q417,600 428.5,611.5Q440,623 440,640L440,800Q440,817 428.5,828.5Q417,840 400,840L160,840Q143,840 131.5,828.5Q120,817 120,800ZM200,440L360,440L360,200L200,200L200,440ZM600,760L760,760L760,520L600,520L600,760ZM600,280L760,280L760,200L600,200L600,280ZM200,760L360,760L360,680L200,680L200,760ZM360,440L360,440L360,440L360,440ZM600,280L600,280L600,280L600,280ZM600,520L600,520L600,520L600,520ZM360,680L360,680L360,680L360,680Z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M520,320L520,160Q520,143 531.5,131.5Q543,120 560,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,320Q840,337 828.5,348.5Q817,360 800,360L560,360Q543,360 531.5,348.5Q520,337 520,320ZM120,480L120,160Q120,143 131.5,131.5Q143,120 160,120L400,120Q417,120 428.5,131.5Q440,143 440,160L440,480Q440,497 428.5,508.5Q417,520 400,520L160,520Q143,520 131.5,508.5Q120,497 120,480ZM520,800L520,480Q520,463 531.5,451.5Q543,440 560,440L800,440Q817,440 828.5,451.5Q840,463 840,480L840,800Q840,817 828.5,828.5Q817,840 800,840L560,840Q543,840 531.5,828.5Q520,817 520,800ZM120,800L120,640Q120,623 131.5,611.5Q143,600 160,600L400,600Q417,600 428.5,611.5Q440,623 440,640L440,800Q440,817 428.5,828.5Q417,840 400,840L160,840Q143,840 131.5,828.5Q120,817 120,800ZM200,440L360,440L360,200L200,200L200,440ZM600,760L760,760L760,520L600,520L600,760ZM600,280L760,280L760,200L600,200L600,280ZM200,760L360,760L360,680L200,680L200,760ZM360,440L360,440L360,440L360,440ZM600,280L600,280L600,280L600,280ZM600,520L600,520L600,520L600,520ZM360,680L360,680L360,680L360,680Z" />
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M560,360Q543,360 531.5,348.5Q520,337 520,320L520,160Q520,143 531.5,131.5Q543,120 560,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,320Q840,337 828.5,348.5Q817,360 800,360L560,360ZM160,520Q143,520 131.5,508.5Q120,497 120,480L120,160Q120,143 131.5,131.5Q143,120 160,120L400,120Q417,120 428.5,131.5Q440,143 440,160L440,480Q440,497 428.5,508.5Q417,520 400,520L160,520ZM560,840Q543,840 531.5,828.5Q520,817 520,800L520,480Q520,463 531.5,451.5Q543,440 560,440L800,440Q817,440 828.5,451.5Q840,463 840,480L840,800Q840,817 828.5,828.5Q817,840 800,840L560,840ZM160,840Q143,840 131.5,828.5Q120,817 120,800L120,640Q120,623 131.5,611.5Q143,600 160,600L400,600Q417,600 428.5,611.5Q440,623 440,640L440,800Q440,817 428.5,828.5Q417,840 400,840L160,840Z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M560,360Q543,360 531.5,348.5Q520,337 520,320L520,160Q520,143 531.5,131.5Q543,120 560,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,320Q840,337 828.5,348.5Q817,360 800,360L560,360ZM160,520Q143,520 131.5,508.5Q120,497 120,480L120,160Q120,143 131.5,131.5Q143,120 160,120L400,120Q417,120 428.5,131.5Q440,143 440,160L440,480Q440,497 428.5,508.5Q417,520 400,520L160,520ZM560,840Q543,840 531.5,828.5Q520,817 520,800L520,480Q520,463 531.5,451.5Q543,440 560,440L800,440Q817,440 828.5,451.5Q840,463 840,480L840,800Q840,817 828.5,828.5Q817,840 800,840L560,840ZM160,840Q143,840 131.5,828.5Q120,817 120,800L120,640Q120,623 131.5,611.5Q143,600 160,600L400,600Q417,600 428.5,611.5Q440,623 440,640L440,800Q440,817 428.5,828.5Q417,840 400,840L160,840Z" />
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M322.5,522.5Q340,505 340,480Q340,455 322.5,437.5Q305,420 280,420Q255,420 237.5,437.5Q220,455 220,480Q220,505 237.5,522.5Q255,540 280,540Q305,540 322.5,522.5ZM522.5,522.5Q540,505 540,480Q540,455 522.5,437.5Q505,420 480,420Q455,420 437.5,437.5Q420,455 420,480Q420,505 437.5,522.5Q455,540 480,540Q505,540 522.5,522.5ZM722.5,522.5Q740,505 740,480Q740,455 722.5,437.5Q705,420 680,420Q655,420 637.5,437.5Q620,455 620,480Q620,505 637.5,522.5Q655,540 680,540Q705,540 722.5,522.5ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M322.5,522.5Q340,505 340,480Q340,455 322.5,437.5Q305,420 280,420Q255,420 237.5,437.5Q220,455 220,480Q220,505 237.5,522.5Q255,540 280,540Q305,540 322.5,522.5ZM522.5,522.5Q540,505 540,480Q540,455 522.5,437.5Q505,420 480,420Q455,420 437.5,437.5Q420,455 420,480Q420,505 437.5,522.5Q455,540 480,540Q505,540 522.5,522.5ZM722.5,522.5Q740,505 740,480Q740,455 722.5,437.5Q705,420 680,420Q655,420 637.5,437.5Q620,455 620,480Q620,505 637.5,522.5Q655,540 680,540Q705,540 722.5,522.5ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z" />
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -119,4 +119,14 @@
|
|||
<string name="tip_short_category">尽量使用简短的分类名称</string>
|
||||
<string name="action_clear">清除</string>
|
||||
<string name="title_upcoming_task">临近的任务</string>
|
||||
<string name="time_today">今天</string>
|
||||
<string name="time_tomorrow">明天</string>
|
||||
<string name="time_in_days">%d 天后</string>
|
||||
<string name="time_in_weeks">%d 周后</string>
|
||||
<string name="time_in_months">%d 个月后</string>
|
||||
<string name="time_in_years">%d 年后</string>
|
||||
<string name="label_due_date">截止日期(可选)</string>
|
||||
<string name="title_all_task">总任务</string>
|
||||
<string name="title_completed_task">已完成</string>
|
||||
<string name="title_pending_task">未完成</string>
|
||||
</resources>
|
||||
|
|
@ -119,5 +119,15 @@
|
|||
<string name="page_overview">Overview</string>
|
||||
<string name="tip_short_category">Keep category names concise</string>
|
||||
<string name="action_clear">Clear</string>
|
||||
<string name="title_upcoming_task">Upcoming Task</string>
|
||||
<string name="title_upcoming_task">Upcoming</string>
|
||||
<string name="time_today">Today</string>
|
||||
<string name="time_tomorrow">Tomorrow</string>
|
||||
<string name="time_in_days">in %d d</string>
|
||||
<string name="time_in_weeks">in %d w</string>
|
||||
<string name="time_in_months">in %d mo</string>
|
||||
<string name="time_in_years">in %d y</string>
|
||||
<string name="label_due_date">Due Date (Optional)</string>
|
||||
<string name="title_all_task">All</string>
|
||||
<string name="title_completed_task">Completed</string>
|
||||
<string name="title_pending_task">Pending</string>
|
||||
</resources>
|
||||
Loading…
Reference in a new issue