51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package settings
|
|
|
|
type AccessibilityPreferences struct {
|
|
DisplayDensity string
|
|
Contrast string
|
|
ReducedMotion bool
|
|
KeyboardFocus string
|
|
}
|
|
|
|
const (
|
|
DisplayDensityDense = "dense"
|
|
DisplayDensityComfortable = "comfortable"
|
|
ContrastStandard = "standard"
|
|
ContrastHigh = "high"
|
|
KeyboardFocusStandard = "standard"
|
|
KeyboardFocusProminent = "prominent"
|
|
)
|
|
|
|
func DefaultAccessibilityPreferences() AccessibilityPreferences {
|
|
return AccessibilityPreferences{
|
|
DisplayDensity: DisplayDensityDense,
|
|
Contrast: ContrastStandard,
|
|
KeyboardFocus: KeyboardFocusStandard,
|
|
}
|
|
}
|
|
|
|
func DisplayDensityForDenseLayout(dense bool) string {
|
|
if dense {
|
|
return DisplayDensityDense
|
|
}
|
|
return DisplayDensityComfortable
|
|
}
|
|
|
|
func NormalizeAccessibilityPreferences(prefs AccessibilityPreferences) AccessibilityPreferences {
|
|
normalized := DefaultAccessibilityPreferences()
|
|
switch prefs.DisplayDensity {
|
|
case DisplayDensityDense, DisplayDensityComfortable:
|
|
normalized.DisplayDensity = prefs.DisplayDensity
|
|
}
|
|
switch prefs.Contrast {
|
|
case ContrastStandard, ContrastHigh:
|
|
normalized.Contrast = prefs.Contrast
|
|
}
|
|
switch prefs.KeyboardFocus {
|
|
case KeyboardFocusStandard, KeyboardFocusProminent:
|
|
normalized.KeyboardFocus = prefs.KeyboardFocus
|
|
}
|
|
normalized.ReducedMotion = prefs.ReducedMotion
|
|
return normalized
|
|
}
|