diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/theme/Theme.kt b/app/src/main/kotlin/com/aliucord/manager/ui/theme/Theme.kt
index ea8d5cb7..2bb421a3 100644
--- a/app/src/main/kotlin/com/aliucord/manager/ui/theme/Theme.kt
+++ b/app/src/main/kotlin/com/aliucord/manager/ui/theme/Theme.kt
@@ -22,19 +22,27 @@ fun ManagerTheme(
dynamicColor: Boolean = true,
content: @Composable () -> Unit,
) {
+ val context = LocalContext.current
val dynamicColor = dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
- val darkTheme = when (theme) {
+
+ val isBlack = theme == Theme.Black
+ val isDark = when (theme) {
Theme.System -> isSystemInDarkTheme()
- Theme.Dark -> true
Theme.Light -> false
+ Theme.Dark, Theme.Black -> true
}
- val colorScheme = when {
- dynamicColor && darkTheme -> dynamicDarkColorScheme(LocalContext.current)
- dynamicColor && !darkTheme -> dynamicLightColorScheme(LocalContext.current)
- darkTheme -> darkColorScheme()
+
+ val baseScheme = when {
+ dynamicColor && isDark -> dynamicDarkColorScheme(context)
+ dynamicColor -> dynamicLightColorScheme(context)
+ isDark -> darkColorScheme()
else -> lightColorScheme()
}
- val customColors = when (darkTheme) {
+ val colorScheme = when (isBlack) {
+ true -> baseScheme.toPitchBlack()
+ false -> baseScheme
+ }
+ val customColors = when (isDark) {
true -> DarkCustomColors
false -> LightCustomColors
}
@@ -47,7 +55,7 @@ fun ManagerTheme(
SideEffect {
systemUiController.setSystemBarsColor(
color = colorScheme.background,
- darkIcons = !darkTheme,
+ darkIcons = !isDark,
)
systemUiController.setNavigationBarColor(
color = Color.Transparent,
@@ -66,19 +74,36 @@ fun ManagerTheme(
enum class Theme {
System,
Light,
- Dark;
+ Dark,
+ Black;
@Composable
- fun toDisplayName() = when (this) {
- System -> stringResource(R.string.theme_system)
- Light -> stringResource(R.string.theme_light)
- Dark -> stringResource(R.string.theme_dark)
- }
+ fun toDisplayName() = stringResource(
+ when (this) {
+ System -> R.string.theme_system
+ Light -> R.string.theme_light
+ Dark -> R.string.theme_dark
+ Black -> R.string.theme_black
+ }
+ )
@Composable
- fun toPainter() = when (this) {
- System -> painterResource(R.drawable.ic_sync)
- Light -> painterResource(R.drawable.ic_light)
- Dark -> painterResource(R.drawable.ic_night)
- }
+ fun toPainter() = painterResource(
+ when (this) {
+ System -> R.drawable.ic_sync
+ Light -> R.drawable.ic_light
+ Dark -> R.drawable.ic_night
+ Black -> R.drawable.ic_brightness_empty
+ }
+ )
+}
+
+private fun ColorScheme.toPitchBlack(): ColorScheme {
+ return this.copy(
+ background = Color.Black,
+ surface = Color.Black,
+ surfaceVariant = Color.Black,
+ onBackground = Color.White,
+ onSurface = Color.White
+ )
}
diff --git a/app/src/main/res/drawable/ic_brightness_empty.xml b/app/src/main/res/drawable/ic_brightness_empty.xml
new file mode 100644
index 00000000..7424ef5c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_brightness_empty.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 13b0c9c6..9fb601a1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -93,6 +93,7 @@
System
Dark
Light
+ Black
Plugins
View changelog