Skip to content

Commit 8875d1d

Browse files
committed
refactor
1 parent a59fdfc commit 8875d1d

22 files changed

Lines changed: 79 additions & 123 deletions

File tree

core/src/main/java/com/example/util/simpletimetracker/core/delegates/iconSelection/mapper/IconSelectionMapper.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,18 +232,17 @@ class IconSelectionMapper @Inject constructor(
232232
return if (iconType == IconType.TEXT) {
233233
IconSelectionSelectorStateViewData.None
234234
} else {
235-
val theme = if (isDarkTheme) R.style.AppThemeDark else R.style.AppTheme
236235
IconSelectionSelectorStateViewData.Available(
237236
state = iconImageState,
238237
searchButtonColor = when (iconImageState) {
239238
is IconImageState.Chooser -> R.attr.appInactiveColor
240239
is IconImageState.Search -> R.attr.colorSecondary
241-
}.let { resourceRepo.getThemedAttr(it, theme) },
240+
}.let { resourceRepo.getThemedAttr(it, isDarkTheme) },
242241
favouriteButtonColor = if (isSelectedIconFavourite) {
243242
R.attr.colorSecondary
244243
} else {
245244
R.attr.appInactiveColor
246-
}.let { resourceRepo.getThemedAttr(it, theme) },
245+
}.let { resourceRepo.getThemedAttr(it, isDarkTheme) },
247246
)
248247
}
249248
}

core/src/main/java/com/example/util/simpletimetracker/core/interactor/ActivityFilterViewDataInteractor.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteracto
1111
import com.example.util.simpletimetracker.domain.recordShortcut.model.RecordShortcut
1212
import com.example.util.simpletimetracker.domain.recordType.model.RecordType
1313
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
14-
import com.example.util.simpletimetracker.feature_base_adapter.activityFilter.ActivityFilterViewData
1514
import javax.inject.Inject
1615

1716
class ActivityFilterViewDataInteractor @Inject constructor(

core/src/main/java/com/example/util/simpletimetracker/core/interactor/ActivitySuggestionViewDataInteractor.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.example.util.simpletimetracker.domain.extension.search
77
import com.example.util.simpletimetracker.domain.record.model.RunningRecord
88
import com.example.util.simpletimetracker.domain.recordType.model.RecordType
99
import com.example.util.simpletimetracker.domain.recordType.model.RecordTypeGoal
10-
import com.example.util.simpletimetracker.feature_base_adapter.activityFilter.ActivityFilterViewData
1110
import com.example.util.simpletimetracker.feature_base_adapter.recordTypeSuggestion.RecordTypeSuggestionViewData
1211
import javax.inject.Inject
1312

core/src/main/java/com/example/util/simpletimetracker/core/interactor/ColorViewDataInteractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.example.util.simpletimetracker.feature_base_adapter.color.ColorFavour
1313
import com.example.util.simpletimetracker.feature_base_adapter.color.ColorPaletteViewData
1414
import com.example.util.simpletimetracker.feature_base_adapter.color.ColorViewData
1515
import com.example.util.simpletimetracker.feature_base_adapter.hint.HintViewData
16+
import com.example.util.simpletimetracker.feature_views.ColorUtils.darkenColorByFactor
1617
import javax.inject.Inject
1718

1819
class ColorViewDataInteractor @Inject constructor(
@@ -53,7 +54,7 @@ class ColorViewDataInteractor @Inject constructor(
5354
colorId = colorId.toLong(),
5455
type = ColorViewData.Type.Base,
5556
colorInt = colorInt.let {
56-
if (isDarkTheme) colorMapper.darkenColor(it) else it
57+
if (isDarkTheme) darkenColorByFactor(it) else it
5758
},
5859
selected = !customColorSelected && currentColor?.colorId == colorId,
5960
)

core/src/main/java/com/example/util/simpletimetracker/core/interactor/RecordsShortcutsViewDataInteractor.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.example.util.simpletimetracker.domain.record.model.RunningRecord
66
import com.example.util.simpletimetracker.domain.recordShortcut.interactor.RecordShortcutInteractor
77
import com.example.util.simpletimetracker.domain.recordTag.model.RecordTag
88
import com.example.util.simpletimetracker.domain.recordType.model.RecordType
9-
import com.example.util.simpletimetracker.feature_base_adapter.activityFilter.ActivityFilterViewData
109
import com.example.util.simpletimetracker.feature_base_adapter.recordShortcut.RecordShortcutViewData
1110
import javax.inject.Inject
1211

core/src/main/java/com/example/util/simpletimetracker/core/mapper/ColorMapper.kt

Lines changed: 10 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.example.util.simpletimetracker.core.mapper
22

3-
import android.graphics.Color
43
import androidx.annotation.ColorInt
54
import com.example.util.simpletimetracker.core.R
65
import com.example.util.simpletimetracker.core.repo.ResourceRepo
76
import com.example.util.simpletimetracker.domain.color.mapper.AppColorMapper
87
import com.example.util.simpletimetracker.domain.color.model.AppColor
8+
import com.example.util.simpletimetracker.feature_views.ColorUtils.darkenColorByFactor
99
import com.example.util.simpletimetracker.feature_views.viewData.RecordTypeIcon
1010
import javax.inject.Inject
1111

@@ -16,25 +16,16 @@ class ColorMapper @Inject constructor(
1616

1717
@ColorInt fun mapToColorInt(color: AppColor, isDarkTheme: Boolean): Int {
1818
return appColorMapper.mapToColorInt(color).let {
19-
if (isDarkTheme) darkenColor(it) else it
19+
if (isDarkTheme) darkenColorByFactor(it) else it
2020
}
2121
}
2222

23-
// TODO use resourceRepo getThemedAttr, also others
2423
fun toUntrackedColor(isDarkTheme: Boolean): Int {
25-
return if (isDarkTheme) {
26-
R.color.colorUntrackedDark
27-
} else {
28-
R.color.colorUntracked
29-
}.let(resourceRepo::getColor)
24+
return resourceRepo.getThemedAttr(R.attr.appUntrackedColor, isDarkTheme)
3025
}
3126

3227
fun toIconColor(isDarkTheme: Boolean): Int {
33-
return if (isDarkTheme) {
34-
R.color.colorIconDark
35-
} else {
36-
R.color.colorIcon
37-
}.let(resourceRepo::getColor)
28+
return resourceRepo.getThemedAttr(R.attr.appIconColor, isDarkTheme)
3829
}
3930

4031
fun toIconColor(
@@ -57,11 +48,7 @@ class ColorMapper @Inject constructor(
5748
}
5849

5950
fun toFilteredColor(isDarkTheme: Boolean): Int {
60-
return if (isDarkTheme) {
61-
R.color.colorFilteredDark
62-
} else {
63-
R.color.colorFiltered
64-
}.let(resourceRepo::getColor)
51+
return resourceRepo.getThemedAttr(R.attr.appFilteredColor, isDarkTheme)
6552
}
6653

6754
fun toFilteredColor(
@@ -88,56 +75,23 @@ class ColorMapper @Inject constructor(
8875
}
8976

9077
fun toFilteredIconColor(isDarkTheme: Boolean): Int {
91-
return if (isDarkTheme) {
92-
R.color.colorIconFilteredDark
93-
} else {
94-
R.color.colorIconFiltered
95-
}.let(resourceRepo::getColor)
78+
return resourceRepo.getThemedAttr(R.attr.appIconFilteredColor, isDarkTheme)
9679
}
9780

9881
fun toActiveColor(isDarkTheme: Boolean): Int {
99-
return if (isDarkTheme) {
100-
R.color.colorActiveDark
101-
} else {
102-
R.color.colorActive
103-
}.let(resourceRepo::getColor)
82+
return resourceRepo.getThemedAttr(R.attr.appActiveColor, isDarkTheme)
10483
}
10584

10685
fun toInactiveColor(isDarkTheme: Boolean): Int {
107-
return if (isDarkTheme) {
108-
R.color.colorInactiveDark
109-
} else {
110-
R.color.colorInactive
111-
}.let(resourceRepo::getColor)
86+
return resourceRepo.getThemedAttr(R.attr.appInactiveColor, isDarkTheme)
11287
}
11388

11489
fun toPositiveColor(isDarkTheme: Boolean): Int {
115-
return if (isDarkTheme) {
116-
R.color.colorPositiveDark
117-
} else {
118-
R.color.colorPositive
119-
}.let(resourceRepo::getColor)
90+
return resourceRepo.getThemedAttr(R.attr.appPositiveColor, isDarkTheme)
12091
}
12192

12293
fun toNegativeColor(isDarkTheme: Boolean): Int {
123-
return if (isDarkTheme) {
124-
R.color.colorNegativeDark
125-
} else {
126-
R.color.colorNegative
127-
}.let(resourceRepo::getColor)
128-
}
129-
130-
// TODO move to ColorUtils
131-
/**
132-
* Darkens color.
133-
*/
134-
@ColorInt
135-
fun darkenColor(@ColorInt color: Int): Int {
136-
return FloatArray(3).apply {
137-
Color.colorToHSV(color, this)
138-
// change value
139-
this[2] *= 0.8f
140-
}.let(Color::HSVToColor)
94+
return resourceRepo.getThemedAttr(R.attr.appNegativeColor, isDarkTheme)
14195
}
14296

14397
companion object {

core/src/main/java/com/example/util/simpletimetracker/core/repo/ResourceRepo.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,15 @@ class ResourceRepo @Inject constructor(
5151
return context.resources.getDimension(dimenResId).pxToDp()
5252
}
5353

54-
fun getThemedAttr(attrId: Int, themeId: Int): Int {
54+
fun getThemedAttr(attrId: Int, isDarkTheme: Boolean): Int {
55+
val themeId = if (isDarkTheme) R.style.AppThemeDark else R.style.AppTheme
5556
return TypedValue().apply {
5657
ContextThemeWrapper(context, themeId)
5758
.theme
5859
.resolveAttribute(attrId, this, true)
5960
}.data
6061
}
6162

62-
fun getThemedAttr(attrId: Int, isDarkTheme: Boolean): Int {
63-
val theme = if (isDarkTheme) {
64-
R.style.AppThemeDark
65-
} else {
66-
R.style.AppTheme
67-
}
68-
return getThemedAttr(attrId = attrId, themeId = theme)
69-
}
70-
7163
fun getDrawable(@DrawableRes drawableResId: Int): Drawable? {
7264
return ResourcesCompat.getDrawable(context.resources, drawableResId, context.theme)
7365
}

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/delegates/ChangeRecordActionsAdjustDelegate.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.util.simpletimetracker.feature_change_record.viewModel.delegates
22

33
import com.example.util.simpletimetracker.core.base.ViewModelDelegate
4+
import com.example.util.simpletimetracker.core.mapper.RecordQuickActionMapper
45
import com.example.util.simpletimetracker.domain.extension.addOrRemove
56
import com.example.util.simpletimetracker.core.mapper.TimeMapper
67
import com.example.util.simpletimetracker.core.repo.ResourceRepo
@@ -41,6 +42,7 @@ class ChangeRecordActionsAdjustDelegate @Inject constructor(
4142
private val recordInteractor: RecordInteractor,
4243
private val timeMapper: TimeMapper,
4344
private val prefsInteractor: PrefsInteractor,
45+
private val recordQuickActionMapper: RecordQuickActionMapper,
4446
) : ViewModelDelegate(),
4547
ChangeRecordActionsSubDelegate {
4648

@@ -91,13 +93,14 @@ class ChangeRecordActionsAdjustDelegate @Inject constructor(
9193
val useMilitaryTime = prefsInteractor.getUseMilitaryTimeFormat()
9294
val showSeconds = prefsInteractor.getShowSeconds()
9395
val isDarkTheme = prefsInteractor.getDarkMode()
96+
val action = RecordQuickAction.ADJUST
9497

9598
val result = mutableListOf<ViewHolderType>()
9699
val hintText = if (params.adjustParams.isTimeEndedAvailable) {
97-
R.string.change_record_change_adjacent_records
100+
recordQuickActionMapper.mapHint(action).orEmpty()
98101
} else {
99-
R.string.change_record_change_prev_record
100-
}.let(resourceRepo::getString)
102+
resourceRepo.getString(R.string.change_record_change_prev_record)
103+
}
101104
result += HintViewData(hintText)
102105
val state = loadViewData(
103106
recordId = params.adjustParams.originalRecordId,
@@ -144,7 +147,7 @@ class ChangeRecordActionsAdjustDelegate @Inject constructor(
144147
}
145148
result += state.changesPreview
146149
result += changeRecordViewDataMapper.mapRecordActionButton(
147-
action = RecordQuickAction.ADJUST,
150+
action = action,
148151
isEnabled = params.baseParams.isButtonEnabled,
149152
isDarkTheme = isDarkTheme,
150153
)

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/delegates/ChangeRecordActionsContinueDelegate.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.util.simpletimetracker.feature_change_record.viewModel.delegates
22

3-
import com.example.util.simpletimetracker.core.repo.ResourceRepo
3+
import com.example.util.simpletimetracker.core.mapper.RecordQuickActionMapper
44
import com.example.util.simpletimetracker.domain.extension.plusAssign
55
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
66
import com.example.util.simpletimetracker.domain.recordAction.interactor.RecordActionContinueMediator
@@ -16,10 +16,10 @@ import javax.inject.Inject
1616

1717
class ChangeRecordActionsContinueDelegate @Inject constructor(
1818
private val router: Router,
19-
private val resourceRepo: ResourceRepo,
2019
private val prefsInteractor: PrefsInteractor,
2120
private val recordActionContinueMediator: RecordActionContinueMediator,
2221
private val changeRecordViewDataMapper: ChangeRecordViewDataMapper,
22+
private val recordQuickActionMapper: RecordQuickActionMapper,
2323
) : ChangeRecordActionsSubDelegate {
2424

2525
private var bridge: ChangeRecordDelegateBridge? = null
@@ -68,13 +68,14 @@ class ChangeRecordActionsContinueDelegate @Inject constructor(
6868
if (!params.continueParams.isAvailable) return emptyList()
6969
if (prefsInteractor.getRetroactiveTrackingMode()) return emptyList()
7070
val isDarkTheme = prefsInteractor.getDarkMode()
71+
val action = RecordQuickAction.CONTINUE
7172

7273
val result = mutableListOf<ViewHolderType>()
7374
result += HintViewData(
74-
text = resourceRepo.getString(R.string.change_record_continue_hint),
75+
text = recordQuickActionMapper.mapHint(action).orEmpty(),
7576
)
7677
result += changeRecordViewDataMapper.mapRecordActionButton(
77-
action = RecordQuickAction.CONTINUE,
78+
action = action,
7879
isEnabled = params.baseParams.isButtonEnabled,
7980
isDarkTheme = isDarkTheme,
8081
)

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/delegates/ChangeRecordActionsDuplicateDelegate.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
package com.example.util.simpletimetracker.feature_change_record.viewModel.delegates
22

3-
import com.example.util.simpletimetracker.core.repo.ResourceRepo
3+
import com.example.util.simpletimetracker.core.mapper.RecordQuickActionMapper
44
import com.example.util.simpletimetracker.domain.extension.plusAssign
55
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
66
import com.example.util.simpletimetracker.domain.recordAction.interactor.RecordActionDuplicateMediator
77
import com.example.util.simpletimetracker.domain.recordAction.model.RecordQuickAction
88
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
99
import com.example.util.simpletimetracker.feature_base_adapter.hint.HintViewData
10-
import com.example.util.simpletimetracker.feature_change_record.R
1110
import com.example.util.simpletimetracker.feature_change_record.mapper.ChangeRecordViewDataMapper
1211
import com.example.util.simpletimetracker.feature_change_record.viewModel.base.ChangeRecordDelegateBridge
1312
import com.example.util.simpletimetracker.feature_change_record.viewModel.base.ChangeRecordActionsSubDelegate
1413
import javax.inject.Inject
1514

1615
class ChangeRecordActionsDuplicateDelegate @Inject constructor(
17-
private val resourceRepo: ResourceRepo,
1816
private val prefsInteractor: PrefsInteractor,
1917
private val recordActionDuplicateMediator: RecordActionDuplicateMediator,
2018
private val changeRecordViewDataMapper: ChangeRecordViewDataMapper,
19+
private val recordQuickActionMapper: RecordQuickActionMapper,
2120
) : ChangeRecordActionsSubDelegate {
2221

2322
private var bridge: ChangeRecordDelegateBridge? = null
@@ -52,13 +51,14 @@ class ChangeRecordActionsDuplicateDelegate @Inject constructor(
5251
val params = bridge?.getParams() ?: return emptyList()
5352
if (!params.duplicateParams.isAvailable) return emptyList()
5453
val isDarkTheme = prefsInteractor.getDarkMode()
54+
val action = RecordQuickAction.DUPLICATE
5555

5656
val result = mutableListOf<ViewHolderType>()
5757
result += HintViewData(
58-
text = resourceRepo.getString(R.string.change_record_duplicate_hint),
58+
text = recordQuickActionMapper.mapHint(action).orEmpty(),
5959
)
6060
result += changeRecordViewDataMapper.mapRecordActionButton(
61-
action = RecordQuickAction.DUPLICATE,
61+
action = action,
6262
isEnabled = params.baseParams.isButtonEnabled,
6363
isDarkTheme = isDarkTheme,
6464
)

0 commit comments

Comments
 (0)