Skip to content

Commit f5dd88b

Browse files
committed
add option to ignore new items for widget grid
1 parent d7ca6f8 commit f5dd88b

19 files changed

Lines changed: 271 additions & 146 deletions

File tree

data_local/src/main/java/com/example/util/simpletimetracker/data_local/prefs/PrefsRepoImpl.kt

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.example.util.simpletimetracker.data_local.prefs
33
import android.content.SharedPreferences
44
import com.example.util.simpletimetracker.data_local.base.delegate
55
import com.example.util.simpletimetracker.data_local.base.logPrefsDataAccess
6-
import com.example.util.simpletimetracker.domain.statistics.model.StatisticsWidgetData
6+
import com.example.util.simpletimetracker.domain.widget.model.StatisticsWidgetData
77
import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType
88
import com.example.util.simpletimetracker.domain.widget.model.QuickSettingsWidgetType
99
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
@@ -12,6 +12,8 @@ import java.util.Calendar
1212
import javax.inject.Inject
1313
import javax.inject.Singleton
1414
import androidx.core.content.edit
15+
import com.example.util.simpletimetracker.domain.widget.model.GridWidgetData
16+
import com.example.util.simpletimetracker.domain.widget.model.WidgetDataFilterType
1517

1618
@Singleton
1719
class PrefsRepoImpl @Inject constructor(
@@ -495,10 +497,7 @@ class PrefsRepoImpl @Inject constructor(
495497
val filteredTypesData = data.typeIds.map(Long::toString).toSet()
496498
val filteredCategoriesData = data.categoryIds.map(Long::toString).toSet()
497499
val filteredTagsData = data.tagIds.map(Long::toString).toSet()
498-
val filteringType = when (data.filteringType) {
499-
StatisticsWidgetData.FilterType.FILTER -> 0
500-
StatisticsWidgetData.FilterType.SELECT -> 1
501-
}
500+
val filteringType = mapWidgetDataFilterType(data.filteringType)
502501

503502
prefs.edit {
504503
putInt(KEY_STATISTICS_WIDGET_FILTER_TYPE + widgetId, filterTypeData)
@@ -541,11 +540,8 @@ class PrefsRepoImpl @Inject constructor(
541540
val filteredTags = prefs
542541
.getStringSet(KEY_STATISTICS_WIDGET_FILTERED_TAGS + widgetId, emptySet())
543542
?.mapNotNull { it.toLongOrNull() }.orEmpty().toSet()
544-
val filteringType = when (prefs.getInt(KEY_STATISTICS_WIDGET_FILTERING_TYPE + widgetId, 0)) {
545-
0 -> StatisticsWidgetData.FilterType.FILTER
546-
1 -> StatisticsWidgetData.FilterType.SELECT
547-
else -> StatisticsWidgetData.FilterType.FILTER
548-
}
543+
val filteringType = prefs.getInt(KEY_STATISTICS_WIDGET_FILTERING_TYPE + widgetId, 0)
544+
.let(::mapToWidgetDataFilterType)
549545

550546
return StatisticsWidgetData(
551547
chartFilterType = filterType,
@@ -614,24 +610,38 @@ class PrefsRepoImpl @Inject constructor(
614610
return prefs.getInt(key, 0)
615611
}
616612

617-
override fun setGridWidgetFilteredTypes(widgetId: Int, typeIds: Set<Long>) {
618-
val key = KEY_GRID_WIDGET_FILTERED_TYPES + widgetId
619-
logPrefsDataAccess("setGridWidgetFilteredTypes $key")
620-
prefs.edit { putStringSet(key, typeIds.map(Long::toString).toSet()) }
613+
override fun setGridWidgetData(widgetId: Int, data: GridWidgetData) {
614+
logPrefsDataAccess("setGridWidgetFilteredTypes $widgetId")
615+
val filteredTypesData = data.typeIds.map(Long::toString).toSet()
616+
val filteringType = mapWidgetDataFilterType(data.filteringType)
617+
618+
prefs.edit {
619+
putStringSet(KEY_GRID_WIDGET_FILTERED_TYPES + widgetId, filteredTypesData)
620+
putInt(KEY_GRID_WIDGET_FILTERING_TYPE + widgetId, filteringType)
621+
}
621622
}
622623

623-
override fun getGridWidgetFilteredTypes(widgetId: Int): Set<Long> {
624-
val key = KEY_GRID_WIDGET_FILTERED_TYPES + widgetId
625-
logPrefsDataAccess("getGridWidgetFilteredTypes $key")
626-
return prefs.getStringSet(key, emptySet())
624+
override fun getGridWidgetData(widgetId: Int): GridWidgetData {
625+
logPrefsDataAccess("getGridWidgetFilteredTypes $widgetId")
626+
627+
val filteredTypes = prefs
628+
.getStringSet(KEY_GRID_WIDGET_FILTERED_TYPES + widgetId, emptySet())
627629
?.mapNotNull { it.toLongOrNull() }.orEmpty().toSet()
630+
val filteringType = prefs.getInt(KEY_GRID_WIDGET_FILTERING_TYPE + widgetId, 0)
631+
.let(::mapToWidgetDataFilterType)
632+
633+
return GridWidgetData(
634+
typeIds = filteredTypes,
635+
filteringType = filteringType,
636+
)
628637
}
629638

630639
override fun removeGridWidget(widgetId: Int) {
631640
logPrefsDataAccess("removeGridWidget $widgetId")
632641
prefs.edit {
633642
remove(KEY_GRID_WIDGET_PAGE + widgetId)
634643
remove(KEY_GRID_WIDGET_FILTERED_TYPES + widgetId)
644+
remove(KEY_GRID_WIDGET_FILTERING_TYPE + widgetId)
635645
}
636646
}
637647

@@ -665,6 +675,21 @@ class PrefsRepoImpl @Inject constructor(
665675
return prefs.contains(key)
666676
}
667677

678+
private fun mapWidgetDataFilterType(data: WidgetDataFilterType): Int {
679+
return when (data) {
680+
WidgetDataFilterType.FILTER -> 0
681+
WidgetDataFilterType.SELECT -> 1
682+
}
683+
}
684+
685+
private fun mapToWidgetDataFilterType(data: Int): WidgetDataFilterType {
686+
return when (data) {
687+
0 -> WidgetDataFilterType.FILTER
688+
1 -> WidgetDataFilterType.SELECT
689+
else -> WidgetDataFilterType.FILTER
690+
}
691+
}
692+
668693
@Suppress("unused")
669694
companion object {
670695
private const val DO_NOT_DISTURB_PERIOD_START: Long = 0 // midnight
@@ -795,6 +820,7 @@ class PrefsRepoImpl @Inject constructor(
795820
private const val KEY_QUICK_SETTINGS_WIDGET_TYPE = "quick_settings_widget_type_"
796821
private const val KEY_GRID_WIDGET_PAGE = "grid_widget_page_"
797822
private const val KEY_GRID_WIDGET_FILTERED_TYPES = "grid_widget_filtered_types_"
823+
private const val KEY_GRID_WIDGET_FILTERING_TYPE = "grid_widget_filtering_type_"
798824

799825
// Removed
800826
private const val KEY_SORT_RECORD_TYPES_BY_COLOR = "sortRecordTypesByColor" // Boolean

domain/src/main/java/com/example/util/simpletimetracker/domain/prefs/interactor/PrefsInteractor.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import com.example.util.simpletimetracker.domain.recordType.model.CardOrder
1818
import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType
1919
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
2020
import com.example.util.simpletimetracker.domain.statistics.model.StatisticsStreaksType
21-
import com.example.util.simpletimetracker.domain.statistics.model.StatisticsWidgetData
21+
import com.example.util.simpletimetracker.domain.widget.model.GridWidgetData
22+
import com.example.util.simpletimetracker.domain.widget.model.StatisticsWidgetData
2223
import com.example.util.simpletimetracker.domain.widget.model.QuickSettingsWidgetType
2324
import kotlinx.coroutines.Dispatchers
2425
import kotlinx.coroutines.withContext
@@ -834,12 +835,12 @@ class PrefsInteractor @Inject constructor(
834835
prefsRepo.getGridWidget(widgetId)
835836
}
836837

837-
suspend fun setGridWidgetFilteredTypes(widgetId: Int, typeIds: Set<Long>) = withContext(Dispatchers.IO) {
838-
prefsRepo.setGridWidgetFilteredTypes(widgetId, typeIds)
838+
suspend fun setGridWidgetData(widgetId: Int, data: GridWidgetData) = withContext(Dispatchers.IO) {
839+
prefsRepo.setGridWidgetData(widgetId, data)
839840
}
840841

841-
suspend fun getGridWidgetFilteredTypes(widgetId: Int): Set<Long> = withContext(Dispatchers.IO) {
842-
prefsRepo.getGridWidgetFilteredTypes(widgetId)
842+
suspend fun getGridWidgetData(widgetId: Int): GridWidgetData = withContext(Dispatchers.IO) {
843+
prefsRepo.getGridWidgetData(widgetId)
843844
}
844845

845846
suspend fun removeGridWidget(widgetId: Int) = withContext(Dispatchers.IO) {

domain/src/main/java/com/example/util/simpletimetracker/domain/prefs/repo/PrefsRepo.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.util.simpletimetracker.domain.prefs.repo
22

3-
import com.example.util.simpletimetracker.domain.statistics.model.StatisticsWidgetData
3+
import com.example.util.simpletimetracker.domain.widget.model.GridWidgetData
4+
import com.example.util.simpletimetracker.domain.widget.model.StatisticsWidgetData
45
import com.example.util.simpletimetracker.domain.widget.model.QuickSettingsWidgetType
56

67
interface PrefsRepo {
@@ -226,9 +227,9 @@ interface PrefsRepo {
226227

227228
fun getGridWidget(widgetId: Int): Int
228229

229-
fun setGridWidgetFilteredTypes(widgetId: Int, typeIds: Set<Long>)
230+
fun setGridWidgetData(widgetId: Int, data: GridWidgetData)
230231

231-
fun getGridWidgetFilteredTypes(widgetId: Int): Set<Long>
232+
fun getGridWidgetData(widgetId: Int): GridWidgetData
232233

233234
fun removeGridWidget(widgetId: Int)
234235

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/model/WidgetTransparencyPercent.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.example.util.simpletimetracker.domain.widget.model
2+
3+
// Ids are either filtered or selected,
4+
// depending on filtering type.
5+
data class GridWidgetData(
6+
val typeIds: Set<Long>,
7+
val filteringType: WidgetDataFilterType,
8+
)

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/model/StatisticsWidgetData.kt renamed to domain/src/main/java/com/example/util/simpletimetracker/domain/widget/model/StatisticsWidgetData.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
package com.example.util.simpletimetracker.domain.statistics.model
1+
package com.example.util.simpletimetracker.domain.widget.model
2+
3+
import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType
4+
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
25

36
// Ids are either filtered or selected,
47
// depending on filtering type.
@@ -8,11 +11,5 @@ data class StatisticsWidgetData(
811
val typeIds: Set<Long>,
912
val categoryIds: Set<Long>,
1013
val tagIds: Set<Long>,
11-
val filteringType: FilterType,
12-
) {
13-
14-
enum class FilterType {
15-
FILTER,
16-
SELECT,
17-
}
18-
}
14+
val filteringType: WidgetDataFilterType,
15+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.example.util.simpletimetracker.domain.widget.model
2+
3+
enum class WidgetDataFilterType {
4+
FILTER,
5+
SELECT,
6+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.example.util.simpletimetracker.domain.widget.model
2+
3+
data class WidgetTransparencyPercent(
4+
val value: Long,
5+
)

features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/interactor/SettingsDisplayViewDataInteractor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.example.util.simpletimetracker.feature_settings.interactor
22

33
import com.example.util.simpletimetracker.core.repo.ResourceRepo
4-
import com.example.util.simpletimetracker.domain.statistics.model.WidgetTransparencyPercent
4+
import com.example.util.simpletimetracker.domain.widget.model.WidgetTransparencyPercent
55
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
66
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
77
import com.example.util.simpletimetracker.feature_settings.R

features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/mapper/SettingsMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import com.example.util.simpletimetracker.domain.extension.orZero
1616
import com.example.util.simpletimetracker.domain.record.model.RepeatButtonType
1717
import com.example.util.simpletimetracker.domain.recordTag.model.CardTagOrder
1818
import com.example.util.simpletimetracker.domain.recordType.model.CardOrder
19-
import com.example.util.simpletimetracker.domain.statistics.model.WidgetTransparencyPercent
19+
import com.example.util.simpletimetracker.domain.widget.model.WidgetTransparencyPercent
2020
import com.example.util.simpletimetracker.feature_settings.R
2121
import com.example.util.simpletimetracker.feature_settings.model.CustomizeOptionsMenuListItem
2222
import com.example.util.simpletimetracker.feature_settings.viewData.CardOrderViewData

0 commit comments

Comments
 (0)