mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
Add HotDog theme, tune some color choices
This commit is contained in:
parent
cef7e286cd
commit
049e2c288d
@ -36,6 +36,7 @@
|
|||||||
<string name="steel_gray_theme_name">Steel Gray</string>
|
<string name="steel_gray_theme_name">Steel Gray</string>
|
||||||
<string name="sunflower_theme_name">Sunflower</string>
|
<string name="sunflower_theme_name">Sunflower</string>
|
||||||
<string name="cotton_candy_theme_name">Cotton Candy</string>
|
<string name="cotton_candy_theme_name">Cotton Candy</string>
|
||||||
|
<string name="hot_dog_theme_name">Hot Dog</string>
|
||||||
|
|
||||||
<string name="dynamic_system_theme_name">Dynamic Auto</string>
|
<string name="dynamic_system_theme_name">Dynamic Auto</string>
|
||||||
<string name="dynamic_light_theme_name">Dynamic Light</string>
|
<string name="dynamic_light_theme_name">Dynamic Light</string>
|
||||||
|
@ -409,6 +409,7 @@ fun LazyItemScope.ActionItem(idx: Int, action: Action, onSelect: (Action) -> Uni
|
|||||||
@Composable
|
@Composable
|
||||||
fun ActionItemSmall(action: Action, onSelect: (Action) -> Unit, onLongSelect: (Action) -> Unit) {
|
fun ActionItemSmall(action: Action, onSelect: (Action) -> Unit, onLongSelect: (Action) -> Unit) {
|
||||||
val bgCol = LocalKeyboardScheme.current.backgroundContainer
|
val bgCol = LocalKeyboardScheme.current.backgroundContainer
|
||||||
|
val fgCol = LocalKeyboardScheme.current.onBackgroundContainer
|
||||||
|
|
||||||
val circleRadius = with(LocalDensity.current) {
|
val circleRadius = with(LocalDensity.current) {
|
||||||
16.dp.toPx()
|
16.dp.toPx()
|
||||||
@ -430,11 +431,12 @@ fun ActionItemSmall(action: Action, onSelect: (Action) -> Unit, onLongSelect: (A
|
|||||||
action
|
action
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
contentAlignment = Alignment.Center) {
|
contentAlignment = Center
|
||||||
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = painterResource(id = action.icon),
|
painter = painterResource(id = action.icon),
|
||||||
contentDescription = stringResource(action.name),
|
contentDescription = stringResource(action.name),
|
||||||
tint = contentColorFor(backgroundColor = bgCol),
|
tint = fgCol,
|
||||||
modifier = Modifier.size(16.dp)
|
modifier = Modifier.size(16.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -539,8 +541,7 @@ fun ActionItems(onSelect: (Action) -> Unit, onLongSelect: (Action) -> Unit) {
|
|||||||
@Composable
|
@Composable
|
||||||
fun ExpandActionsButton(isActionsOpen: Boolean, onClick: () -> Unit) {
|
fun ExpandActionsButton(isActionsOpen: Boolean, onClick: () -> Unit) {
|
||||||
val bgCol = LocalKeyboardScheme.current.backgroundContainer
|
val bgCol = LocalKeyboardScheme.current.backgroundContainer
|
||||||
|
val fgCol = LocalKeyboardScheme.current.onBackgroundContainer
|
||||||
val actionsContent = MaterialTheme.colorScheme.onSurface
|
|
||||||
|
|
||||||
val circleRadius = with(LocalDensity.current) {
|
val circleRadius = with(LocalDensity.current) {
|
||||||
16.dp.toPx()
|
16.dp.toPx()
|
||||||
@ -566,7 +567,7 @@ fun ExpandActionsButton(isActionsOpen: Boolean, onClick: () -> Unit) {
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
colors = IconButtonDefaults.iconButtonColors(contentColor = actionsContent)
|
colors = IconButtonDefaults.iconButtonColors(contentColor = fgCol)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = painterResource(id = R.drawable.chevron_right),
|
painter = painterResource(id = R.drawable.chevron_right),
|
||||||
|
@ -182,7 +182,6 @@ class BasicThemeProvider(val context: Context, val colorScheme: KeyboardColorSch
|
|||||||
colorScheme.surface.toArgb()
|
colorScheme.surface.toArgb()
|
||||||
}
|
}
|
||||||
|
|
||||||
val ratio = 1.5f
|
|
||||||
val keyColor = if(keyBorders) {
|
val keyColor = if(keyBorders) {
|
||||||
colorScheme.backgroundContainer.toArgb()
|
colorScheme.backgroundContainer.toArgb()
|
||||||
} else {
|
} else {
|
||||||
@ -197,29 +196,38 @@ class BasicThemeProvider(val context: Context, val colorScheme: KeyboardColorSch
|
|||||||
transparent
|
transparent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val onKeyColor = if(keyBorders) {
|
||||||
|
colorScheme.onBackgroundContainer.toArgb()
|
||||||
|
} else {
|
||||||
|
onBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
val onKeyColorHalf = Color(onKeyColor).copy(alpha = 0.5f).toArgb()
|
||||||
|
val onKeyColorThird = Color(onKeyColor).copy(alpha = 0.33f).toArgb()
|
||||||
|
|
||||||
val enterKeyBackground = if(expertMode) { functionalKeyColor } else { primary }
|
val enterKeyBackground = if(expertMode) { functionalKeyColor } else { primary }
|
||||||
val enterKeyForeground = if(expertMode) { onBackgroundThird } else { onPrimary }
|
val enterKeyForeground = if(expertMode) { onBackgroundThird } else { onPrimary }
|
||||||
|
|
||||||
colors[R.styleable.Keyboard_Key_keyTextColor] = onBackground
|
colors[R.styleable.Keyboard_Key_keyTextColor] = onKeyColor
|
||||||
colors[R.styleable.Keyboard_Key_keyTextInactivatedColor] = onBackgroundHalf
|
colors[R.styleable.Keyboard_Key_keyTextInactivatedColor] = onKeyColorHalf
|
||||||
colors[R.styleable.Keyboard_Key_keyPressedTextColor] = onPrimary
|
colors[R.styleable.Keyboard_Key_keyPressedTextColor] = onPrimary
|
||||||
colors[R.styleable.Keyboard_Key_keyTextShadowColor] = 0
|
colors[R.styleable.Keyboard_Key_keyTextShadowColor] = 0
|
||||||
colors[R.styleable.Keyboard_Key_actionKeyTextColor] = enterKeyForeground
|
colors[R.styleable.Keyboard_Key_actionKeyTextColor] = enterKeyForeground
|
||||||
colors[R.styleable.Keyboard_Key_functionalTextColor] = onBackground
|
colors[R.styleable.Keyboard_Key_functionalTextColor] = onKeyColor
|
||||||
colors[R.styleable.Keyboard_Key_keyHintLetterColor] = onBackgroundHalf
|
colors[R.styleable.Keyboard_Key_keyHintLetterColor] = onKeyColorHalf
|
||||||
colors[R.styleable.Keyboard_Key_keyHintLabelColor] = onBackgroundHalf
|
colors[R.styleable.Keyboard_Key_keyHintLabelColor] = onKeyColorHalf
|
||||||
colors[R.styleable.Keyboard_Key_keyShiftedLetterHintInactivatedColor] = onBackgroundHalf
|
colors[R.styleable.Keyboard_Key_keyShiftedLetterHintInactivatedColor] = onKeyColorHalf
|
||||||
colors[R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor] = onBackgroundHalf
|
colors[R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor] = onKeyColorHalf
|
||||||
colors[R.styleable.Keyboard_Key_keyPreviewTextColor] = onSecondary
|
colors[R.styleable.Keyboard_Key_keyPreviewTextColor] = onSecondary
|
||||||
colors[R.styleable.MainKeyboardView_languageOnSpacebarTextColor] = onBackgroundHalf
|
colors[R.styleable.MainKeyboardView_languageOnSpacebarTextColor] = onKeyColorHalf
|
||||||
colors[R.styleable.MainKeyboardView_gestureTrailColor] = primary
|
colors[R.styleable.MainKeyboardView_gestureTrailColor] = primary
|
||||||
colors[R.styleable.MainKeyboardView_slidingKeyInputPreviewColor] = primary
|
colors[R.styleable.MainKeyboardView_slidingKeyInputPreviewColor] = primary
|
||||||
|
|
||||||
addIcon(KeyboardIconsSet.NAME_SHIFT_KEY, R.drawable.shift, onBackground)
|
addIcon(KeyboardIconsSet.NAME_SHIFT_KEY, R.drawable.shift, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_SHIFT_KEY_SHIFTED, R.drawable.shiftshifted, onBackground)
|
addIcon(KeyboardIconsSet.NAME_SHIFT_KEY_SHIFTED, R.drawable.shiftshifted, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_DELETE_KEY, R.drawable.delete, onBackground)
|
addIcon(KeyboardIconsSet.NAME_DELETE_KEY, R.drawable.delete, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_SETTINGS_KEY, R.drawable.settings, onBackground)
|
addIcon(KeyboardIconsSet.NAME_SETTINGS_KEY, R.drawable.settings, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_SPACE_KEY, null, onBackground)
|
addIcon(KeyboardIconsSet.NAME_SPACE_KEY, null, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_ENTER_KEY, R.drawable.sym_keyboard_return_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_ENTER_KEY, R.drawable.sym_keyboard_return_lxx_light, enterKeyForeground)
|
||||||
addIcon(KeyboardIconsSet.NAME_GO_KEY, R.drawable.sym_keyboard_go_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_GO_KEY, R.drawable.sym_keyboard_go_lxx_light, enterKeyForeground)
|
||||||
addIcon(KeyboardIconsSet.NAME_SEARCH_KEY, R.drawable.sym_keyboard_search_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_SEARCH_KEY, R.drawable.sym_keyboard_search_lxx_light, enterKeyForeground)
|
||||||
@ -227,21 +235,21 @@ class BasicThemeProvider(val context: Context, val colorScheme: KeyboardColorSch
|
|||||||
addIcon(KeyboardIconsSet.NAME_NEXT_KEY, R.drawable.sym_keyboard_next_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_NEXT_KEY, R.drawable.sym_keyboard_next_lxx_light, enterKeyForeground)
|
||||||
addIcon(KeyboardIconsSet.NAME_DONE_KEY, R.drawable.sym_keyboard_done_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_DONE_KEY, R.drawable.sym_keyboard_done_lxx_light, enterKeyForeground)
|
||||||
addIcon(KeyboardIconsSet.NAME_PREVIOUS_KEY, R.drawable.sym_keyboard_previous_lxx_light, enterKeyForeground)
|
addIcon(KeyboardIconsSet.NAME_PREVIOUS_KEY, R.drawable.sym_keyboard_previous_lxx_light, enterKeyForeground)
|
||||||
addIcon(KeyboardIconsSet.NAME_TAB_KEY, R.drawable.sym_keyboard_tab_holo_dark, onBackground) // TODO: Correct tint
|
addIcon(KeyboardIconsSet.NAME_TAB_KEY, R.drawable.sym_keyboard_tab_holo_dark, onKeyColor) // TODO: Correct tint
|
||||||
addIcon(KeyboardIconsSet.NAME_ZWNJ_KEY, R.drawable.sym_keyboard_zwnj_lxx_dark, onBackground)
|
addIcon(KeyboardIconsSet.NAME_ZWNJ_KEY, R.drawable.sym_keyboard_zwnj_lxx_dark, onKeyColor)
|
||||||
addIcon(KeyboardIconsSet.NAME_ZWJ_KEY, R.drawable.sym_keyboard_zwj_lxx_dark, onPrimary)
|
addIcon(KeyboardIconsSet.NAME_ZWJ_KEY, R.drawable.sym_keyboard_zwj_lxx_dark, onPrimary)
|
||||||
|
|
||||||
addIcon(KeyboardIconsSet.NAME_EMOJI_ACTION_KEY, R.drawable.smile, onPrimary)
|
addIcon(KeyboardIconsSet.NAME_EMOJI_ACTION_KEY, R.drawable.smile, onPrimary)
|
||||||
addIcon(KeyboardIconsSet.NAME_EMOJI_NORMAL_KEY, R.drawable.smile, onBackground)
|
addIcon(KeyboardIconsSet.NAME_EMOJI_NORMAL_KEY, R.drawable.smile, onKeyColor)
|
||||||
|
|
||||||
// Add by name (action_emoji)
|
// Add by name (action_emoji)
|
||||||
AllActionsMap.forEach { (i, it) ->
|
AllActionsMap.forEach { (i, it) ->
|
||||||
addIcon("action_${i}", it.icon, onBackground)
|
addIcon("action_${i}", it.icon, onKeyColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add by id (action_0)
|
// Add by id (action_0)
|
||||||
AllActions.forEachIndexed { i, it ->
|
AllActions.forEachIndexed { i, it ->
|
||||||
addIcon("action_${i}", it.icon, onBackground)
|
addIcon("action_${i}", it.icon, onKeyColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!showKeyHints) {
|
if(!showKeyHints) {
|
||||||
@ -257,7 +265,7 @@ class BasicThemeProvider(val context: Context, val colorScheme: KeyboardColorSch
|
|||||||
|
|
||||||
|
|
||||||
// Note: We don't fully hide some things, but fade them away as they may be important landmarks
|
// Note: We don't fully hide some things, but fade them away as they may be important landmarks
|
||||||
colors[R.styleable.Keyboard_Key_functionalTextColor] = onBackgroundThird
|
colors[R.styleable.Keyboard_Key_functionalTextColor] = onKeyColorThird
|
||||||
}
|
}
|
||||||
|
|
||||||
keyboardBackground = coloredRectangle(primaryKeyboardColor)
|
keyboardBackground = coloredRectangle(primaryKeyboardColor)
|
||||||
|
@ -11,7 +11,7 @@ val LocalKeyboardScheme = staticCompositionLocalOf {
|
|||||||
wrapColorScheme(lightColorScheme())
|
wrapColorScheme(lightColorScheme())
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExtraColors(
|
data class ExtraColors(
|
||||||
val backgroundContainer: Color,
|
val backgroundContainer: Color,
|
||||||
val backgroundContainerDim: Color,
|
val backgroundContainerDim: Color,
|
||||||
val onBackgroundContainer: Color,
|
val onBackgroundContainer: Color,
|
||||||
|
@ -13,6 +13,7 @@ import org.futo.inputmethod.latin.uix.theme.presets.DynamicDarkTheme
|
|||||||
import org.futo.inputmethod.latin.uix.theme.presets.DynamicLightTheme
|
import org.futo.inputmethod.latin.uix.theme.presets.DynamicLightTheme
|
||||||
import org.futo.inputmethod.latin.uix.theme.presets.DynamicSystemTheme
|
import org.futo.inputmethod.latin.uix.theme.presets.DynamicSystemTheme
|
||||||
import org.futo.inputmethod.latin.uix.theme.presets.Emerald
|
import org.futo.inputmethod.latin.uix.theme.presets.Emerald
|
||||||
|
import org.futo.inputmethod.latin.uix.theme.presets.HotDog
|
||||||
import org.futo.inputmethod.latin.uix.theme.presets.Snowfall
|
import org.futo.inputmethod.latin.uix.theme.presets.Snowfall
|
||||||
import org.futo.inputmethod.latin.uix.theme.presets.SteelGray
|
import org.futo.inputmethod.latin.uix.theme.presets.SteelGray
|
||||||
import org.futo.inputmethod.latin.uix.theme.presets.Sunflower
|
import org.futo.inputmethod.latin.uix.theme.presets.Sunflower
|
||||||
@ -46,6 +47,7 @@ val ThemeOptions = mapOf(
|
|||||||
DeepSeaLight.key to DeepSeaLight,
|
DeepSeaLight.key to DeepSeaLight,
|
||||||
DeepSeaDark.key to DeepSeaDark,
|
DeepSeaDark.key to DeepSeaDark,
|
||||||
|
|
||||||
|
HotDog.key to HotDog
|
||||||
)
|
)
|
||||||
|
|
||||||
val ThemeOptionKeys = ThemeOptions.keys
|
val ThemeOptionKeys = ThemeOptions.keys
|
103
java/src/org/futo/inputmethod/latin/uix/theme/presets/HotDog.kt
Normal file
103
java/src/org/futo/inputmethod/latin/uix/theme/presets/HotDog.kt
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package org.futo.inputmethod.latin.uix.theme.presets
|
||||||
|
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import org.futo.inputmethod.latin.R
|
||||||
|
import org.futo.inputmethod.latin.uix.theme.ThemeOption
|
||||||
|
import org.futo.inputmethod.latin.uix.theme.selector.ThemePreview
|
||||||
|
import org.futo.inputmethod.latin.uix.wrapColorScheme
|
||||||
|
|
||||||
|
private val primaryLight = Color(0xFFC4FF00)
|
||||||
|
private val onPrimaryLight = Color(0xFF000000)
|
||||||
|
private val primaryContainerLight = Color(0xFFC0C016)
|
||||||
|
private val onPrimaryContainerLight = Color(0xFF1A3300)
|
||||||
|
private val secondaryLight = primaryLight
|
||||||
|
private val onSecondaryLight = onPrimaryLight
|
||||||
|
private val secondaryContainerLight = primaryContainerLight
|
||||||
|
private val onSecondaryContainerLight = onPrimaryContainerLight
|
||||||
|
private val tertiaryLight = primaryLight
|
||||||
|
private val onTertiaryLight = onPrimaryLight
|
||||||
|
private val tertiaryContainerLight = primaryContainerLight
|
||||||
|
private val onTertiaryContainerLight = onPrimaryContainerLight
|
||||||
|
private val errorLight = Color(0xFFFF0000)
|
||||||
|
private val onErrorLight = Color(0xFFFFFFFF)
|
||||||
|
private val errorContainerLight = Color(0xFFFFDAD6)
|
||||||
|
private val onErrorContainerLight = Color(0xFF410002)
|
||||||
|
private val backgroundLight = Color(0xFFFF0000)
|
||||||
|
private val onBackgroundLight = Color(0xFFFFFFFF)
|
||||||
|
private val surfaceLight = backgroundLight
|
||||||
|
private val onSurfaceLight = onBackgroundLight
|
||||||
|
private val surfaceVariantLight = surfaceLight
|
||||||
|
private val onSurfaceVariantLight = onSurfaceLight
|
||||||
|
private val outlineLight = Color(0xFFFFFF00)
|
||||||
|
private val outlineVariantLight = Color(0xFFFFFF00)
|
||||||
|
private val scrimLight = Color(0xFF000000)
|
||||||
|
private val inverseSurfaceLight = Color(0xFF000000)
|
||||||
|
private val inverseOnSurfaceLight = Color(0xFFFFFFFF)
|
||||||
|
private val inversePrimaryLight = Color(0xFFFFFFFF)
|
||||||
|
private val backgroundContainerLight = Color(0xFFFFEB3B)
|
||||||
|
private val backgroundContainerDimLight = Color(0xFFFFC107)
|
||||||
|
private val onBackgroundContainerLight = Color(0xFF000000)
|
||||||
|
|
||||||
|
|
||||||
|
private val lightScheme = lightColorScheme(
|
||||||
|
primary = primaryLight,
|
||||||
|
onPrimary = onPrimaryLight,
|
||||||
|
primaryContainer = primaryContainerLight,
|
||||||
|
onPrimaryContainer = onPrimaryContainerLight,
|
||||||
|
secondary = secondaryLight,
|
||||||
|
onSecondary = onSecondaryLight,
|
||||||
|
secondaryContainer = secondaryContainerLight,
|
||||||
|
onSecondaryContainer = onSecondaryContainerLight,
|
||||||
|
tertiary = tertiaryLight,
|
||||||
|
onTertiary = onTertiaryLight,
|
||||||
|
tertiaryContainer = tertiaryContainerLight,
|
||||||
|
onTertiaryContainer = onTertiaryContainerLight,
|
||||||
|
error = errorLight,
|
||||||
|
onError = onErrorLight,
|
||||||
|
errorContainer = errorContainerLight,
|
||||||
|
onErrorContainer = onErrorContainerLight,
|
||||||
|
background = backgroundLight,
|
||||||
|
onBackground = onBackgroundLight,
|
||||||
|
surface = surfaceLight,
|
||||||
|
onSurface = onSurfaceLight,
|
||||||
|
surfaceVariant = surfaceVariantLight,
|
||||||
|
onSurfaceVariant = onSurfaceVariantLight,
|
||||||
|
outline = outlineLight,
|
||||||
|
outlineVariant = outlineVariantLight,
|
||||||
|
scrim = scrimLight,
|
||||||
|
inverseSurface = inverseSurfaceLight,
|
||||||
|
inverseOnSurface = inverseOnSurfaceLight,
|
||||||
|
inversePrimary = inversePrimaryLight,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
val HotDog = ThemeOption(
|
||||||
|
dynamic = false,
|
||||||
|
key = "HotDog",
|
||||||
|
name = R.string.hot_dog_theme_name,
|
||||||
|
available = { true }
|
||||||
|
) {
|
||||||
|
wrapColorScheme(lightScheme).let {
|
||||||
|
it.copy(
|
||||||
|
base = it.base,
|
||||||
|
extended = it.extended.copy(
|
||||||
|
backgroundContainer = backgroundContainerLight,
|
||||||
|
backgroundContainerDim = backgroundContainerDimLight,
|
||||||
|
onBackgroundContainer = onBackgroundContainerLight
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@Preview
|
||||||
|
private fun PreviewThemeLight() {
|
||||||
|
ThemePreview(HotDog)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user