refactor(calendar): move the colour palette to data with named entries
AndroidSpecialDatesCalendarSpec hardcoded three ARGB literals that its KDoc claimed were 'picked from the shared palette' — a silent-drift hazard, and referencing ui.common from data would invert layering. The palette now lives in data/calendar as CalendarColorPalette with named hues; the swatch pickers use CalendarColorPalette.all and the spec references Purple/Red/Blue. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
package de.jeanlucmakiola.calendula.data.calendar
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Google-Calendar-style palette; ARGB ints for a raw `CALENDAR_COLOR` /
|
||||||
|
* `EVENT_COLOR`. The named entries exist for callers that need one specific
|
||||||
|
* hue (the managed special-dates calendars), so they can't drift from the
|
||||||
|
* swatches offered in the colour picker.
|
||||||
|
*/
|
||||||
|
object CalendarColorPalette {
|
||||||
|
val Red = 0xFFD50000.toInt()
|
||||||
|
val Orange = 0xFFE67C00.toInt()
|
||||||
|
val Amber = 0xFFF6BF26.toInt()
|
||||||
|
val Green = 0xFF33B679.toInt()
|
||||||
|
val DarkGreen = 0xFF0B8043.toInt()
|
||||||
|
val Blue = 0xFF039BE5.toInt()
|
||||||
|
val Indigo = 0xFF3F51B5.toInt()
|
||||||
|
val Purple = 0xFF8E24AA.toInt()
|
||||||
|
val Graphite = 0xFF616161.toInt()
|
||||||
|
|
||||||
|
/** The full palette, in swatch-row order. */
|
||||||
|
val all: List<Int> = listOf(Red, Orange, Amber, Green, DarkGreen, Blue, Indigo, Purple, Graphite)
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package de.jeanlucmakiola.calendula.data.contacts
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import de.jeanlucmakiola.calendula.R
|
import de.jeanlucmakiola.calendula.R
|
||||||
|
import de.jeanlucmakiola.calendula.data.calendar.CalendarColorPalette
|
||||||
import de.jeanlucmakiola.calendula.domain.contacts.SpecialDateType
|
import de.jeanlucmakiola.calendula.domain.contacts.SpecialDateType
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
@@ -34,8 +35,8 @@ class AndroidSpecialDatesCalendarSpec @Inject constructor(
|
|||||||
)
|
)
|
||||||
|
|
||||||
override fun color(type: SpecialDateType): Int = when (type) {
|
override fun color(type: SpecialDateType): Int = when (type) {
|
||||||
SpecialDateType.Birthday -> 0xFF8E24AA.toInt() // purple
|
SpecialDateType.Birthday -> CalendarColorPalette.Purple
|
||||||
SpecialDateType.Anniversary -> 0xFFD50000.toInt() // red
|
SpecialDateType.Anniversary -> CalendarColorPalette.Red
|
||||||
SpecialDateType.Custom -> 0xFF039BE5.toInt() // blue
|
SpecialDateType.Custom -> CalendarColorPalette.Blue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ import de.jeanlucmakiola.calendula.R
|
|||||||
import de.jeanlucmakiola.calendula.data.prefs.BackupStatus
|
import de.jeanlucmakiola.calendula.data.prefs.BackupStatus
|
||||||
import de.jeanlucmakiola.calendula.data.prefs.SettingsPrefs
|
import de.jeanlucmakiola.calendula.data.prefs.SettingsPrefs
|
||||||
import de.jeanlucmakiola.calendula.domain.CalendarSource
|
import de.jeanlucmakiola.calendula.domain.CalendarSource
|
||||||
import de.jeanlucmakiola.calendula.ui.common.CALENDAR_COLOR_PALETTE
|
import de.jeanlucmakiola.calendula.data.calendar.CalendarColorPalette
|
||||||
import de.jeanlucmakiola.calendula.ui.common.CalendarColorChip
|
import de.jeanlucmakiola.calendula.ui.common.CalendarColorChip
|
||||||
import de.jeanlucmakiola.calendula.ui.common.DialogAmountField
|
import de.jeanlucmakiola.calendula.ui.common.DialogAmountField
|
||||||
import de.jeanlucmakiola.calendula.ui.common.DialogUnitDropdown
|
import de.jeanlucmakiola.calendula.ui.common.DialogUnitDropdown
|
||||||
@@ -142,7 +142,7 @@ fun CalendarsScreen(
|
|||||||
sessionKey = editorSession,
|
sessionKey = editorSession,
|
||||||
isNew = editorId == NEW_CALENDAR_ID,
|
isNew = editorId == NEW_CALENDAR_ID,
|
||||||
initialName = editing?.displayName.orEmpty(),
|
initialName = editing?.displayName.orEmpty(),
|
||||||
initialColor = editing?.color ?: CALENDAR_COLOR_PALETTE.first(),
|
initialColor = editing?.color ?: CalendarColorPalette.all.first(),
|
||||||
initialDescription = editing?.description.orEmpty(),
|
initialDescription = editing?.description.orEmpty(),
|
||||||
onSave = { name, color, description ->
|
onSave = { name, color, description ->
|
||||||
val id = editorId
|
val id = editorId
|
||||||
@@ -507,7 +507,7 @@ private fun CalendarEditor(
|
|||||||
)
|
)
|
||||||
Spacer(Modifier.height(12.dp))
|
Spacer(Modifier.height(12.dp))
|
||||||
ColorSwatchRow(
|
ColorSwatchRow(
|
||||||
colors = CALENDAR_COLOR_PALETTE,
|
colors = CalendarColorPalette.all,
|
||||||
selected = color,
|
selected = color,
|
||||||
onSelect = { color = it },
|
onSelect = { color = it },
|
||||||
dark = dark,
|
dark = dark,
|
||||||
|
|||||||
@@ -67,16 +67,3 @@ fun ColorSwatchRow(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Google-Calendar-style palette; ARGB ints for a raw `CALENDAR_COLOR` / `EVENT_COLOR`. */
|
|
||||||
val CALENDAR_COLOR_PALETTE: List<Int> = listOf(
|
|
||||||
0xFFD50000, // red
|
|
||||||
0xFFE67C00, // orange
|
|
||||||
0xFFF6BF26, // amber
|
|
||||||
0xFF33B679, // green
|
|
||||||
0xFF0B8043, // dark green
|
|
||||||
0xFF039BE5, // blue
|
|
||||||
0xFF3F51B5, // indigo
|
|
||||||
0xFF8E24AA, // purple
|
|
||||||
0xFF616161, // graphite
|
|
||||||
).map { it.toInt() }
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ import de.jeanlucmakiola.calendula.domain.toRRule
|
|||||||
import de.jeanlucmakiola.calendula.ui.common.calendarCollapseExit
|
import de.jeanlucmakiola.calendula.ui.common.calendarCollapseExit
|
||||||
import de.jeanlucmakiola.calendula.ui.common.calendarExpandEnter
|
import de.jeanlucmakiola.calendula.ui.common.calendarExpandEnter
|
||||||
import de.jeanlucmakiola.calendula.ui.common.predictiveBack
|
import de.jeanlucmakiola.calendula.ui.common.predictiveBack
|
||||||
import de.jeanlucmakiola.calendula.ui.common.CALENDAR_COLOR_PALETTE
|
import de.jeanlucmakiola.calendula.data.calendar.CalendarColorPalette
|
||||||
import de.jeanlucmakiola.calendula.ui.common.CalendarDatePickerDialog
|
import de.jeanlucmakiola.calendula.ui.common.CalendarDatePickerDialog
|
||||||
import de.jeanlucmakiola.calendula.ui.common.ColorSwatchRow
|
import de.jeanlucmakiola.calendula.ui.common.ColorSwatchRow
|
||||||
import de.jeanlucmakiola.calendula.ui.common.DialogAmountField
|
import de.jeanlucmakiola.calendula.ui.common.DialogAmountField
|
||||||
@@ -1745,7 +1745,7 @@ private fun ColorPickerDialog(
|
|||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
ColorSwatchRow(
|
ColorSwatchRow(
|
||||||
colors = CALENDAR_COLOR_PALETTE,
|
colors = CalendarColorPalette.all,
|
||||||
selected = selected,
|
selected = selected,
|
||||||
onSelect = onPickRaw,
|
onSelect = onPickRaw,
|
||||||
dark = dark,
|
dark = dark,
|
||||||
|
|||||||
Reference in New Issue
Block a user