mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 14:52:03 +01:00
Themeing improvements
- Add Tertiary color - Add theme display from Tachiyomi - Show color changes in theme display
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package ca.gosyer.jui.uicore.components
|
||||
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
private val horizontal = 16.dp
|
||||
private val vertical = 8.dp
|
||||
|
||||
val horizontalPadding = horizontal
|
||||
val verticalPadding = vertical
|
||||
|
||||
val topPaddingValues = PaddingValues(top = vertical)
|
||||
|
||||
const val ReadItemAlpha = .38f
|
||||
const val SecondaryItemAlpha = .78f
|
||||
@@ -11,6 +11,7 @@ import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.composed
|
||||
import androidx.compose.ui.draw.alpha
|
||||
|
||||
fun Modifier.selectedBackground(isSelected: Boolean): Modifier = composed {
|
||||
if (isSelected) {
|
||||
@@ -20,3 +21,5 @@ fun Modifier.selectedBackground(isSelected: Boolean): Modifier = composed {
|
||||
this
|
||||
}
|
||||
}
|
||||
|
||||
fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha)
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package ca.gosyer.jui.uicore.theme
|
||||
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.runtime.structuralEqualityPolicy
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
@Stable
|
||||
class ExtraColors(
|
||||
tertiary: Color,
|
||||
onTertiary: Color,
|
||||
) {
|
||||
var tertiary by mutableStateOf(tertiary, structuralEqualityPolicy())
|
||||
internal set
|
||||
var onTertiary by mutableStateOf(onTertiary, structuralEqualityPolicy())
|
||||
internal set
|
||||
|
||||
fun copy(
|
||||
tertiary: Color = this.tertiary,
|
||||
onTertiary: Color = this.onTertiary,
|
||||
): ExtraColors = ExtraColors(
|
||||
tertiary,
|
||||
onTertiary,
|
||||
)
|
||||
|
||||
override fun toString(): String {
|
||||
return "ExtraColors(" +
|
||||
"tertiary=$tertiary, " +
|
||||
"onTertiary=$onTertiary, " +
|
||||
")"
|
||||
}
|
||||
|
||||
companion object {
|
||||
@Composable
|
||||
fun WithExtraColors(extraColors: ExtraColors, content: @Composable () -> Unit) {
|
||||
CompositionLocalProvider(
|
||||
LocalExtraColors provides extraColors,
|
||||
content = content
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val MaterialTheme.extraColors: ExtraColors
|
||||
@Composable
|
||||
get() = LocalExtraColors.current
|
||||
|
||||
private val LocalExtraColors = staticCompositionLocalOf<ExtraColors> {
|
||||
error("The AppColors composable must be called before usage")
|
||||
}
|
||||
@@ -10,21 +10,92 @@ import androidx.compose.material.Colors
|
||||
import androidx.compose.material.darkColors
|
||||
import androidx.compose.material.lightColors
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import ca.gosyer.jui.i18n.MR
|
||||
import dev.icerock.moko.resources.StringResource
|
||||
|
||||
data class Theme(
|
||||
val id: Int,
|
||||
val colors: Colors
|
||||
val titleRes: StringResource,
|
||||
val colors: Colors,
|
||||
val extraColors: ExtraColors
|
||||
)
|
||||
|
||||
fun tachiyomiLightColors(
|
||||
primary: Color = Color(0xFF0057CE),
|
||||
primaryVariant: Color = Color(0xFF001947),
|
||||
secondary: Color = Color(0xFF0057CE),
|
||||
secondaryVariant: Color = Color(0xFF018786),
|
||||
background: Color = Color(0xFFFDFBFF),
|
||||
surface: Color = Color(0xFFFDFBFF),
|
||||
error: Color = Color(0xFFB00020),
|
||||
onPrimary: Color = Color.White,
|
||||
onSecondary: Color = Color.White,
|
||||
onBackground: Color = Color(0xFF1B1B1E),
|
||||
onSurface: Color = Color(0xFF1B1B1E),
|
||||
onError: Color = Color.White
|
||||
) = lightColors(
|
||||
primary = primary,
|
||||
primaryVariant = primaryVariant,
|
||||
secondary = secondary,
|
||||
secondaryVariant = secondaryVariant,
|
||||
background = background,
|
||||
surface = surface,
|
||||
error = error,
|
||||
onPrimary = onPrimary,
|
||||
onSecondary = onSecondary,
|
||||
onBackground = onBackground,
|
||||
onSurface = onSurface,
|
||||
onError = onError
|
||||
)
|
||||
|
||||
fun tachiyomiDarkColors(
|
||||
primary: Color = Color(0xFFAEC6FF),
|
||||
primaryVariant: Color = Color(0xFF00419E),
|
||||
secondary: Color = Color(0xFFAEC6FF),
|
||||
secondaryVariant: Color = Color(0xFF00419E),
|
||||
background: Color = Color(0xFF1B1B1E),
|
||||
surface: Color = Color(0xFF1B1B1E),
|
||||
error: Color = Color(0xFFCF6679),
|
||||
onPrimary: Color = Color(0xFF002C71),
|
||||
onSecondary: Color = Color(0xFF002C71),
|
||||
onBackground: Color = Color(0xFFE4E2E6),
|
||||
onSurface: Color = Color(0xFFE4E2E6),
|
||||
onError: Color = Color.White
|
||||
) = darkColors(
|
||||
primary = primary,
|
||||
primaryVariant = primaryVariant,
|
||||
secondary = secondary,
|
||||
secondaryVariant = secondaryVariant,
|
||||
background = background,
|
||||
surface = surface,
|
||||
error = error,
|
||||
onPrimary = onPrimary,
|
||||
onSecondary = onSecondary,
|
||||
onBackground = onBackground,
|
||||
onSurface = onSurface,
|
||||
onError = onError
|
||||
)
|
||||
|
||||
fun extraColors(
|
||||
tertiary: Color = Color(0xFF006E17),
|
||||
onTertiary: Color = Color.White,
|
||||
) = ExtraColors(
|
||||
tertiary = tertiary,
|
||||
onTertiary = onTertiary
|
||||
)
|
||||
|
||||
val themes = listOf(
|
||||
// Pure white
|
||||
Theme(
|
||||
1,
|
||||
lightColors()
|
||||
),
|
||||
// Tachiyomi 0.x default colors
|
||||
Theme(
|
||||
1,
|
||||
MR.strings.theme_default,
|
||||
tachiyomiLightColors(),
|
||||
extraColors()
|
||||
),
|
||||
// Tachiyomi 0.x legacy blue theme
|
||||
Theme(
|
||||
2,
|
||||
MR.strings.theme_legacy_blue,
|
||||
lightColors(
|
||||
primary = Color(0xFF2979FF),
|
||||
primaryVariant = Color(0xFF2979FF),
|
||||
@@ -32,20 +103,29 @@ val themes = listOf(
|
||||
secondary = Color(0xFF2979FF),
|
||||
secondaryVariant = Color(0xFF2979FF),
|
||||
onSecondary = Color.White
|
||||
)
|
||||
),
|
||||
extraColors()
|
||||
),
|
||||
// Tachiyomi 0.x dark theme
|
||||
Theme(
|
||||
3,
|
||||
darkColors()
|
||||
MR.strings.theme_default,
|
||||
tachiyomiDarkColors(),
|
||||
extraColors(
|
||||
tertiary = Color(0xFF7ADC77),
|
||||
onTertiary = Color(0xFF003907)
|
||||
)
|
||||
),
|
||||
// AMOLED theme
|
||||
Theme(
|
||||
4,
|
||||
darkColors(
|
||||
MR.strings.theme_amoled,
|
||||
tachiyomiDarkColors(
|
||||
primary = Color.Black,
|
||||
onPrimary = Color.White,
|
||||
background = Color.Black
|
||||
)
|
||||
background = Color.Black,
|
||||
surface = Color.Black
|
||||
),
|
||||
extraColors()
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user