From 35075a549ed23fe1325a30ad0dd6b7094faa6405 Mon Sep 17 00:00:00 2001 From: Zyad Date: Fri, 27 Jun 2025 02:26:23 +0300 Subject: [PATCH 1/3] fix: status bars padding --- .../screen/category/component/CategorySnackBar.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/moscow/tudee/presentation/screen/category/component/CategorySnackBar.kt b/app/src/main/java/com/moscow/tudee/presentation/screen/category/component/CategorySnackBar.kt index fdf9ff69..2f471cfa 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/screen/category/component/CategorySnackBar.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/screen/category/component/CategorySnackBar.kt @@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.Text @@ -30,8 +31,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.moscow.tudee.R -import com.moscow.tudee.presentation.screen.category.CategoriesScreenState import com.moscow.tudee.presentation.designSystem.theme.Theme +import com.moscow.tudee.presentation.screen.category.CategoriesScreenState import kotlinx.coroutines.delay @Composable @@ -94,6 +95,7 @@ private fun SnackBarContent( Row( modifier = modifier .padding(16.dp) + .statusBarsPadding() .fillMaxWidth() .shadow( elevation = 6.dp, From efa5aa24742b506a1f752e65f8f511424e661f54 Mon Sep 17 00:00:00 2001 From: Zyad Date: Fri, 27 Jun 2025 02:52:04 +0300 Subject: [PATCH 2/3] feat: localize predefined categories values --- .../tudee/presentation/mapper/UiMapper.kt | 29 +++++++++++++++++++ .../tudee/presentation/model/CategoryUi.kt | 3 ++ .../categoriesScreen/CategoryScreen.kt | 2 +- .../categoriesScreen/CategoryViewModel.kt | 4 +++ app/src/main/res/values-ar/strings.xml | 18 ++++++++++++ app/src/main/res/values/strings.xml | 18 ++++++++++++ 6 files changed, 73 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/moscow/tudee/presentation/mapper/UiMapper.kt b/app/src/main/java/com/moscow/tudee/presentation/mapper/UiMapper.kt index 9836bc7b..b67c2303 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/mapper/UiMapper.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/mapper/UiMapper.kt @@ -1,6 +1,7 @@ package com.moscow.tudee.presentation.mapper import androidx.annotation.DrawableRes +import androidx.annotation.StringRes import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource @@ -28,6 +29,7 @@ fun Task.toTaskUi() = TaskUi( fun Category.toCategoryUi() = CategoryUi( id = id, title = title, + titleRes = mapPredefinedCategoryToStringResource(title), iconUrl = iconUri, numberOfTasksInCategory = countOfTasks, isPredefined = isPredefined, @@ -117,4 +119,31 @@ fun Task.Status.getColor(): Color { } fun LocalDateTime.asLong(): Long { return this.toInstant(TimeZone.currentSystemDefault()).toEpochMilliseconds() +} + +@StringRes +fun mapPredefinedCategoryToStringResource( + categoryTitle: String +): Int? { + return when (categoryTitle) { + "quran" -> R.string.quran + "shopping" -> R.string.shopping + "education" -> R.string.education + "medical" -> R.string.medical + "gym" -> R.string.gym + "entertainment" -> R.string.entertainment + "cooking" -> R.string.cooking + "family & friend" -> R.string.family_and_friend + "traveling" -> R.string.traveling + "agriculture" -> R.string.agriculture + "coding" -> R.string.coding + "adoration" -> R.string.adoration + "fixing bugs" -> R.string.fixing_bugs + "cleaning" -> R.string.cleaning + "work" -> R.string.work + "budgeting" -> R.string.budgeting + "self-care" -> R.string.self_care + "event" -> R.string.event + else -> null + } } \ No newline at end of file diff --git a/app/src/main/java/com/moscow/tudee/presentation/model/CategoryUi.kt b/app/src/main/java/com/moscow/tudee/presentation/model/CategoryUi.kt index d4ba2de9..8b6844b9 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/model/CategoryUi.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/model/CategoryUi.kt @@ -1,8 +1,11 @@ package com.moscow.tudee.presentation.model +import androidx.annotation.StringRes + data class CategoryUi( val id: Long = 0L, val title: String = "", + @StringRes val titleRes: Int? = null, val isPredefined: Boolean = false, val numberOfTasksInCategory: Int = 0, val iconUrl: String = "", diff --git a/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryScreen.kt b/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryScreen.kt index 057e3ef3..6823114e 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryScreen.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryScreen.kt @@ -159,7 +159,7 @@ private fun CategoryGridItem( CategoryCard( icon = iconPainter, - label = category.title, + label = category.titleRes?.let { stringResource(category.titleRes) } ?: category.title, count = category.numberOfTasksInCategory, isPredefined = category.isPredefined, iconTint = Color.Unspecified, diff --git a/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryViewModel.kt b/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryViewModel.kt index 26d0f684..f2b31d17 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryViewModel.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/screen/category/categoriesScreen/CategoryViewModel.kt @@ -118,4 +118,8 @@ class CategoryViewModel( private fun onFinally() { updateState { it.copy(isLoading = false) } } + + private fun mapPredefinedCategoriesToStringResources() { + + } } \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 03f7aef3..02fe937a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -104,4 +104,22 @@ الجمعة السبت الأحد + قرآن + تسوق + تعليم + طبي + رياضة + ترفيه + طبخ + عائلة وأصدقاء + سفر + زراعة + برمجة + عبادة + حل أخطاء برمجية + تنظيف + عمل + ميزانية + عناية شخصية + حدث diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97731593..01a5ab7e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -102,4 +102,22 @@ Friday Saturday Sunday + quran + shopping + education + medical + gym + entertainment + cooking + family & friend + traveling + agriculture + coding + adoration + fixing bugs + cleaning + work + budgeting + self-care + event \ No newline at end of file From 3c54c027be4c5f0b15e1862344d3393124eda03b Mon Sep 17 00:00:00 2001 From: Zyad Date: Fri, 27 Jun 2025 02:58:11 +0300 Subject: [PATCH 3/3] feat: localize predefined categories values in bottom sheet --- .../com/moscow/tudee/presentation/component/AddEditTask.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/moscow/tudee/presentation/component/AddEditTask.kt b/app/src/main/java/com/moscow/tudee/presentation/component/AddEditTask.kt index 01c0b4b1..99bb3287 100644 --- a/app/src/main/java/com/moscow/tudee/presentation/component/AddEditTask.kt +++ b/app/src/main/java/com/moscow/tudee/presentation/component/AddEditTask.kt @@ -216,7 +216,8 @@ fun TaskBottomSheet( getPredefinedIconRes(category.title) ) else rememberAsyncImagePainter(category.iconUrl), - label = category.title, + label = category.titleRes?.let { stringResource(category.titleRes) } + ?: category.title, selected = selectedCategory?.id == category.id, modifier = Modifier .fillMaxWidth()