Skip to content

Commit 8221473

Browse files
committed
change dark mode filtered icon color
1 parent 77de7b4 commit 8221473

File tree

13 files changed

+98
-35
lines changed

13 files changed

+98
-35
lines changed

core/src/main/java/com/example/util/simpletimetracker/core/adapter/recordType/RecordTypeAdapterDelegate.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class RecordTypeAdapterDelegate(
3434
itemIsRow = item.asRow
3535
itemColor = item.color
3636
itemIcon = item.iconId
37+
itemIconColor = item.iconColor
3738
itemName = item.name
3839
onItemClick?.let { setOnClickWith(item, onItemClick) }
3940
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ class ColorMapper @Inject constructor(
2020
}.let(resourceRepo::getColor)
2121
}
2222

23+
fun toIconColor(isDarkTheme: Boolean): Int {
24+
return if (isDarkTheme) {
25+
R.color.colorIconDark
26+
} else {
27+
R.color.colorIcon
28+
}.let(resourceRepo::getColor)
29+
}
30+
2331
fun toFilteredColor(isDarkTheme: Boolean): Int {
2432
return if (isDarkTheme) {
2533
R.color.colorFilteredDark
@@ -28,6 +36,14 @@ class ColorMapper @Inject constructor(
2836
}.let(resourceRepo::getColor)
2937
}
3038

39+
fun toFilteredIconColor(isDarkTheme: Boolean): Int {
40+
return if (isDarkTheme) {
41+
R.color.colorIconFilteredDark
42+
} else {
43+
R.color.colorIconFiltered
44+
}.let(resourceRepo::getColor)
45+
}
46+
3147
fun toActiveColor(isDarkTheme: Boolean): Int {
3248
return if (isDarkTheme) {
3349
R.color.colorActiveDark

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,24 @@ class RecordTypeViewDataMapper @Inject constructor(
1818
name = recordType.name,
1919
iconId = recordType.icon
2020
.let(iconMapper::mapToDrawableResId),
21+
iconColor = colorMapper.toIconColor(isDarkTheme),
2122
color = recordType.color
2223
.let { colorMapper.mapToColorResId(it, isDarkTheme) }
2324
.let(resourceRepo::getColor)
2425
)
2526
}
2627

27-
fun map(recordType: RecordType, numberOfCards: Int, isDarkTheme: Boolean): RecordTypeViewData {
28+
fun map(
29+
recordType: RecordType,
30+
numberOfCards: Int,
31+
isDarkTheme: Boolean
32+
): RecordTypeViewData {
2833
return RecordTypeViewData(
2934
id = recordType.id,
3035
name = recordType.name,
3136
iconId = recordType.icon
3237
.let(iconMapper::mapToDrawableResId),
38+
iconColor = colorMapper.toIconColor(isDarkTheme),
3339
color = recordType.color
3440
.let { colorMapper.mapToColorResId(it, isDarkTheme) }
3541
.let(resourceRepo::getColor),
@@ -38,4 +44,22 @@ class RecordTypeViewDataMapper @Inject constructor(
3844
asRow = recordTypeCardSizeMapper.toCardAsRow(numberOfCards)
3945
)
4046
}
47+
48+
fun mapFiltered(
49+
recordType: RecordType,
50+
numberOfCards: Int,
51+
isDarkTheme: Boolean,
52+
isFiltered: Boolean
53+
): RecordTypeViewData {
54+
val default = map(recordType, numberOfCards, isDarkTheme)
55+
56+
return if (isFiltered) {
57+
default.copy(
58+
color = colorMapper.toFilteredColor(isDarkTheme),
59+
iconColor = colorMapper.toFilteredIconColor(isDarkTheme)
60+
)
61+
} else {
62+
default
63+
}
64+
}
4165
}

core/src/main/java/com/example/util/simpletimetracker/core/view/RecordTypeView.kt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package com.example.util.simpletimetracker.core.view
22

33
import android.content.Context
4+
import android.content.res.ColorStateList
45
import android.graphics.Color
56
import android.util.AttributeSet
67
import android.view.Gravity
78
import android.view.View
89
import android.widget.FrameLayout
910
import androidx.constraintlayout.widget.ConstraintSet
11+
import androidx.core.view.ViewCompat
1012
import com.example.util.simpletimetracker.core.R
1113
import com.example.util.simpletimetracker.core.extension.setMargins
12-
import kotlinx.android.synthetic.main.record_type_view_layout.view.layoutRecordTypeItem
13-
import kotlinx.android.synthetic.main.record_type_view_vertical.view.constraintRecordTypeItem
14-
import kotlinx.android.synthetic.main.record_type_view_vertical.view.ivRecordTypeItemIcon
15-
import kotlinx.android.synthetic.main.record_type_view_vertical.view.tvRecordTypeItemName
14+
import kotlinx.android.synthetic.main.record_type_view_layout.view.*
15+
import kotlinx.android.synthetic.main.record_type_view_vertical.view.*
1616

1717
class RecordTypeView @JvmOverloads constructor(
1818
context: Context,
@@ -30,6 +30,7 @@ class RecordTypeView @JvmOverloads constructor(
3030

3131
context.obtainStyledAttributes(attrs, R.styleable.RecordTypeView, defStyleAttr, 0)
3232
.run {
33+
// TODO check hasValue first to avoid double work
3334
itemName = getString(
3435
R.styleable.RecordTypeView_itemName
3536
).orEmpty()
@@ -39,6 +40,11 @@ class RecordTypeView @JvmOverloads constructor(
3940
itemIcon = getResourceId(
4041
R.styleable.RecordTypeView_itemIcon, R.drawable.unknown
4142
)
43+
if (hasValue(R.styleable.RecordTypeView_itemIconColor)) {
44+
itemIconColor = getColor(
45+
R.styleable.RecordTypeView_itemIconColor, Color.WHITE
46+
)
47+
}
4248
itemAlpha = getFloat(
4349
R.styleable.RecordTypeView_itemAlpha, 1f
4450
)
@@ -71,6 +77,13 @@ class RecordTypeView @JvmOverloads constructor(
7177
field = value
7278
}
7379

80+
var itemIconColor: Int = 0
81+
set(value) {
82+
tvRecordTypeItemName.setTextColor(value)
83+
ViewCompat.setBackgroundTintList(ivRecordTypeItemIcon, ColorStateList.valueOf(value))
84+
field = value
85+
}
86+
7487
var itemAlpha: Float = 1f
7588
set(value) {
7689
layoutRecordTypeItem.alpha = value

core/src/main/java/com/example/util/simpletimetracker/core/viewData/RecordTypeViewData.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ data class RecordTypeViewData(
88
val id: Long,
99
val name: String,
1010
@DrawableRes val iconId: Int,
11+
@ColorInt val iconColor: Int,
1112
@ColorInt val color: Int,
1213
val width: Int? = null,
1314
val height: Int? = null,

core/src/main/res/values/attrs.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818
<attr name="appTabUnselectedColor" format="reference" />
1919
<attr name="appActiveColor" format="reference" />
2020
<attr name="appInactiveColor" format="reference" />
21+
<attr name="appIconColor" format="reference" />
2122

2223
<declare-styleable name="RecordTypeView">
2324
<attr name="itemName" format="string" />
2425
<attr name="itemIcon" format="reference" />
26+
<attr name="itemIconColor" format="color" />
2527
<attr name="itemColor" format="color" />
2628
<attr name="itemUseCompatPadding" format="boolean" />
2729
<attr name="itemAlpha" format="float" />

core/src/main/res/values/colors.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
<color name="textHint">#A1A1A1</color>
1717
<color name="textHintDark">#4D4D4D</color>
1818

19-
<color name="colorBackground">#FFFFFF</color>
19+
<color name="colorBackground">@color/white</color>
2020
<color name="colorBackgroundDark">@color/grey_950</color>
2121

2222
<color name="pieChartDivider">#EEEEEE</color>
2323
<color name="pieChartDividerDark">@color/grey_950</color>
2424

25-
<color name="cardBackground">#FFFFFF</color>
25+
<color name="cardBackground">@color/white</color>
2626
<color name="cardBackgroundDark">@color/grey_900</color>
2727

28-
<color name="colorDialogBackground">#FFFFFF</color>
28+
<color name="colorDialogBackground">@color/white</color>
2929
<color name="colorDialogBackgroundDark">@color/grey_900</color>
3030

3131
<color name="colorDivider">@color/blue_grey_50</color>
@@ -44,8 +44,14 @@
4444
<color name="colorUntracked">@color/blue_grey_300</color>
4545
<color name="colorUntrackedDark">@color/blue_grey_700</color>
4646

47+
<color name="colorIcon">@color/grey_50</color>
48+
<color name="colorIconDark">@color/grey_100</color>
49+
4750
<color name="colorFiltered">@color/blue_grey_100</color>
48-
<color name="colorFilteredDark">@color/blue_grey_400</color>
51+
<color name="colorFilteredDark">@color/grey_900</color>
52+
53+
<color name="colorIconFiltered">@color/grey_50</color>
54+
<color name="colorIconFilteredDark">@color/grey_800</color>
4955

5056
<color name="colorActive">@color/blue_grey_800</color>
5157
<color name="colorActiveDark">@color/blue_grey_900</color>

core/src/main/res/values/styles.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<item name="appTabUnselectedColor">@color/colorTabUnselected</item>
3131
<item name="appActiveColor">@color/colorActive</item>
3232
<item name="appInactiveColor">@color/colorInactive</item>
33+
<item name="appIconColor">@color/colorIcon</item>
3334
</style>
3435

3536
<style name="AppThemeDark" parent="Theme.MaterialComponents.NoActionBar">
@@ -61,6 +62,7 @@
6162
<item name="appTabUnselectedColor">@color/colorTabUnselectedDark</item>
6263
<item name="appActiveColor">@color/colorActiveDark</item>
6364
<item name="appInactiveColor">@color/colorInactiveDark</item>
65+
<item name="appIconColor">@color/colorIconDark</item>
6466
</style>
6567

6668
<style name="AppTheme.Dialog" parent="Theme.MaterialComponents.Light.Dialog.Alert">
@@ -122,12 +124,12 @@
122124
</style>
123125

124126
<style name="RecordTypeIcon">
125-
<item name="backgroundTint">?appLightTextColor</item>
127+
<item name="backgroundTint">?appIconColor</item>
126128
</style>
127129

128130
<style name="RecordTypeText">
129131
<item name="android:maxLines">2</item>
130-
<item name="android:textColor">?appLightTextColor</item>
132+
<item name="android:textColor">?appIconColor</item>
131133
<item name="android:textStyle">bold</item>
132134
<item name="autoSizeMaxTextSize">14sp</item>
133135
<item name="autoSizeMinTextSize">4sp</item>

feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/chartFilter/mapper/ChartFilterViewDataMapper.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,11 @@ class ChartFilterViewDataMapper @Inject constructor(
2222
numberOfCards: Int,
2323
isDarkTheme: Boolean
2424
): RecordTypeViewData {
25-
return recordTypeViewDataMapper.map(recordType, numberOfCards, isDarkTheme).copy(
26-
color = if (recordType.id in typeIdsFiltered) {
27-
colorMapper.toFilteredColor(isDarkTheme)
28-
} else {
29-
recordType.color
30-
.let { colorMapper.mapToColorResId(it, isDarkTheme) }
31-
.let(resourceRepo::getColor)
32-
}
25+
return recordTypeViewDataMapper.mapFiltered(
26+
recordType,
27+
numberOfCards,
28+
isDarkTheme,
29+
recordType.id in typeIdsFiltered
3330
)
3431
}
3532

@@ -43,6 +40,11 @@ class ChartFilterViewDataMapper @Inject constructor(
4340
name = R.string.untracked_time_name
4441
.let(resourceRepo::getString),
4542
iconId = R.drawable.unknown,
43+
iconColor = if (-1L in typeIdsFiltered) {
44+
colorMapper.toFilteredIconColor(isDarkTheme)
45+
} else {
46+
colorMapper.toIconColor(isDarkTheme)
47+
},
4648
color = if (-1L in typeIdsFiltered) {
4749
colorMapper.toFilteredColor(isDarkTheme)
4850
} else {

feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/adapter/RunningRecordTypeAdapterDelegate.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class RunningRecordTypeAdapterDelegate(
3939
itemIsRow = item.asRow
4040
itemColor = item.color
4141
itemIcon = item.iconId
42+
itemIconColor = item.iconColor
4243
itemName = item.name
4344
setOnClickWith(item, onItemClick)
4445
setOnLongClick { onItemLongClick(item, mapOf(this to transitionName)) }

0 commit comments

Comments
 (0)