diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/category/Adapter.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/category/Adapter.kt index 40d4313..eacae4c 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/category/Adapter.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/category/Adapter.kt @@ -124,6 +124,7 @@ class Adapter: RecyclerView.Adapter() { } else { null } + binding.usedForAppsWithoutCategory = item.usedForNotAssignedApps binding.card.setOnClickListener { handlers?.onCategoryClicked(item.category) } diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/category/Items.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/category/Items.kt index 3167e56..cc73604 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/category/Items.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/category/Items.kt @@ -25,5 +25,6 @@ data class CategoryItem( val category: Category, val isBlockedTimeNow: Boolean, val remainingTimeToday: Long?, - val usedTimeToday: Long + val usedTimeToday: Long, + val usedForNotAssignedApps: Boolean ): ManageChildCategoriesListItem() diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/category/ManageChildCategoriesModel.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/category/ManageChildCategoriesModel.kt index fc36f0c..d4c18bc 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/category/ManageChildCategoriesModel.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/category/ManageChildCategoriesModel.kt @@ -46,6 +46,8 @@ class ManageChildCategoriesModel(application: Application): AndroidViewModel(app private val childEntry = childId.switchMap { logic.database.user().getChildUserByIdLive(it) } + private val categoryForUnassignedAppsLive = childEntry.map { it?.categoryForNotAssignedApps }.ignoreUnchanged() + private val childTimezone = childEntry.mapToTimezone() private val childMinuteOfWeek = childTimezone.switchMap { timeZone -> @@ -74,40 +76,43 @@ class ManageChildCategoriesModel(application: Application): AndroidViewModel(app ) } - private val categoryItems = categories.switchMap { categories -> - timeLimitRules.switchMap { timeLimitRules -> - childDate.switchMap { childDate -> - usedTimeItemsForWeek.switchMap { usedTimeItemsForWeek -> - childMinuteOfWeek.map { childMinuteOfWeek -> - val rulesByCategoryId = timeLimitRules.groupBy { rule -> rule.categoryId } - val usedTimesByCategory = usedTimeItemsForWeek.groupBy { item -> item.categoryId } - val firstDayOfWeek = childDate.dayOfEpoch - childDate.dayOfWeek + private val categoryItems = categoryForUnassignedAppsLive.switchMap { categoryForUnassignedApps -> + categories.switchMap { categories -> + timeLimitRules.switchMap { timeLimitRules -> + childDate.switchMap { childDate -> + usedTimeItemsForWeek.switchMap { usedTimeItemsForWeek -> + childMinuteOfWeek.map { childMinuteOfWeek -> + val rulesByCategoryId = timeLimitRules.groupBy { rule -> rule.categoryId } + val usedTimesByCategory = usedTimeItemsForWeek.groupBy { item -> item.categoryId } + val firstDayOfWeek = childDate.dayOfEpoch - childDate.dayOfWeek - categories.map { - category -> + categories.map { category -> - val rules = rulesByCategoryId[category.id] ?: emptyList() - val usedTimeItemsForCategory = usedTimesByCategory[category.id] ?: emptyList() + val rules = rulesByCategoryId[category.id] ?: emptyList() + val usedTimeItemsForCategory = usedTimesByCategory[category.id] + ?: emptyList() - CategoryItem( - category = category, - isBlockedTimeNow = category.blockedMinutesInWeek.read(childMinuteOfWeek), - remainingTimeToday = RemainingTime.getRemainingTime( - dayOfWeek = childDate.dayOfWeek, - usedTimes = SparseLongArray().apply { - usedTimeItemsForCategory.forEach { - usedTimeItem -> + CategoryItem( + category = category, + isBlockedTimeNow = category.blockedMinutesInWeek.read(childMinuteOfWeek), + remainingTimeToday = RemainingTime.getRemainingTime( + dayOfWeek = childDate.dayOfWeek, + usedTimes = SparseLongArray().apply { + usedTimeItemsForCategory.forEach { usedTimeItem -> - val dayOfWeek = usedTimeItem.dayOfEpoch - firstDayOfWeek + val dayOfWeek = usedTimeItem.dayOfEpoch - firstDayOfWeek - put(dayOfWeek, usedTimeItem.usedMillis) - } - }, - rules = rules, - extraTime = category.extraTimeInMillis - )?.includingExtraTime, - usedTimeToday = usedTimeItemsForCategory.find { item -> item.dayOfEpoch == childDate.dayOfEpoch }?.usedMillis ?: 0 - ) + put(dayOfWeek, usedTimeItem.usedMillis) + } + }, + rules = rules, + extraTime = category.extraTimeInMillis + )?.includingExtraTime, + usedTimeToday = usedTimeItemsForCategory.find { item -> item.dayOfEpoch == childDate.dayOfEpoch }?.usedMillis + ?: 0, + usedForNotAssignedApps = categoryForUnassignedApps == category.id + ) + } } } } @@ -136,4 +141,4 @@ class ManageChildCategoriesModel(application: Application): AndroidViewModel(app } } } -} +} \ No newline at end of file diff --git a/app/src/main/res/layout/category_rich_card.xml b/app/src/main/res/layout/category_rich_card.xml index f2359ae..029fa95 100644 --- a/app/src/main/res/layout/category_rich_card.xml +++ b/app/src/main/res/layout/category_rich_card.xml @@ -35,6 +35,10 @@ name="remainingTimeToday" type="String" /> + + @@ -60,6 +64,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> + + + + wird für Apps ohne Kategorie verwendet diff --git a/app/src/main/res/values/strings-manage-child.xml b/app/src/main/res/values/strings-manage-child.xml index 14b890b..bd2e5b1 100644 --- a/app/src/main/res/values/strings-manage-child.xml +++ b/app/src/main/res/values/strings-manage-child.xml @@ -38,4 +38,6 @@ There was a manipulation. Go back to the overview and open the device entry for details. + + used for Apps without category