mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-09 19:55:11 +01:00
Move Themes enum into its own file
This commit is contained in:
parent
b7b2c9ab64
commit
cd81df0cf2
@ -16,7 +16,7 @@ import eu.kanade.tachiyomi.ui.reader.settings.ReaderBottomButton
|
|||||||
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
|
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
|
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
|
||||||
import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter
|
import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter
|
||||||
import eu.kanade.tachiyomi.util.system.ThemeUtil
|
import eu.kanade.tachiyomi.util.system.Themes
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
@ -123,8 +123,8 @@ class PreferencesHelper(val context: Context) {
|
|||||||
|
|
||||||
fun nightMode() = flowPrefs.getInt(Keys.nightMode, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
fun nightMode() = flowPrefs.getInt(Keys.nightMode, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||||
|
|
||||||
fun lightTheme() = flowPrefs.getEnum(Keys.lightTheme, ThemeUtil.Themes.PURE_WHITE)
|
fun lightTheme() = flowPrefs.getEnum(Keys.lightTheme, Themes.PURE_WHITE)
|
||||||
fun darkTheme() = flowPrefs.getEnum(Keys.darkTheme, ThemeUtil.Themes.DARK)
|
fun darkTheme() = flowPrefs.getEnum(Keys.darkTheme, Themes.DARK)
|
||||||
|
|
||||||
fun rotation() = flowPrefs.getInt(Keys.rotation, 1)
|
fun rotation() = flowPrefs.getInt(Keys.rotation, 1)
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.R
|
|||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.databinding.ThemeItemBinding
|
import eu.kanade.tachiyomi.databinding.ThemeItemBinding
|
||||||
import eu.kanade.tachiyomi.databinding.ThemesPreferenceBinding
|
import eu.kanade.tachiyomi.databinding.ThemesPreferenceBinding
|
||||||
import eu.kanade.tachiyomi.util.system.ThemeUtil
|
import eu.kanade.tachiyomi.util.system.Themes
|
||||||
import eu.kanade.tachiyomi.util.system.appDelegateNightMode
|
import eu.kanade.tachiyomi.util.system.appDelegateNightMode
|
||||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.isInNightMode
|
import eu.kanade.tachiyomi.util.system.isInNightMode
|
||||||
@ -74,8 +74,8 @@ class ThemePreference @JvmOverloads constructor(context: Context, attrs: Attribu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val enumConstants = ThemeUtil.Themes::class.java.enumConstants
|
val enumConstants = Themes.values()
|
||||||
itemAdapter.set(enumConstants?.map(::ThemeItem).orEmpty())
|
itemAdapter.set(enumConstants.map(::ThemeItem))
|
||||||
isSelectable = false
|
isSelectable = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ class ThemePreference @JvmOverloads constructor(context: Context, attrs: Attribu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ThemeItem(val theme: ThemeUtil.Themes) : AbstractItem<FastAdapter.ViewHolder<ThemeItem>>() {
|
inner class ThemeItem(val theme: Themes) : AbstractItem<FastAdapter.ViewHolder<ThemeItem>>() {
|
||||||
|
|
||||||
/** defines the type defining this item. must be unique. preferably an id */
|
/** defines the type defining this item. must be unique. preferably an id */
|
||||||
override val type: Int = R.id.theme_card_view
|
override val type: Int = R.id.theme_card_view
|
||||||
@ -129,6 +129,7 @@ class ThemePreference @JvmOverloads constructor(context: Context, attrs: Attribu
|
|||||||
|
|
||||||
val colors = theme.getColors()
|
val colors = theme.getColors()
|
||||||
|
|
||||||
|
@Suppress("UNUSED_PARAMETER")
|
||||||
override var isSelected: Boolean
|
override var isSelected: Boolean
|
||||||
get() = when (preferences.nightMode().get()) {
|
get() = when (preferences.nightMode().get()) {
|
||||||
AppCompatDelegate.MODE_NIGHT_YES -> preferences.darkTheme().get() == theme
|
AppCompatDelegate.MODE_NIGHT_YES -> preferences.darkTheme().get() == theme
|
||||||
|
@ -3,14 +3,9 @@ package eu.kanade.tachiyomi.util.system
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import androidx.annotation.ColorInt
|
|
||||||
import androidx.annotation.StringRes
|
|
||||||
import androidx.annotation.StyleRes
|
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.core.graphics.ColorUtils
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
object ThemeUtil {
|
object ThemeUtil {
|
||||||
|
|
||||||
@ -56,245 +51,6 @@ object ThemeUtil {
|
|||||||
else -> Color.WHITE
|
else -> Color.WHITE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
enum class Themes(@StyleRes val styleRes: Int, val nightMode: Int, @StringRes val nameRes: Int) {
|
|
||||||
PURE_WHITE(R.style.Theme_Tachiyomi, AppCompatDelegate.MODE_NIGHT_NO, R.string.white_theme),
|
|
||||||
DARK(R.style.Theme_Tachiyomi, AppCompatDelegate.MODE_NIGHT_YES, R.string.dark),
|
|
||||||
SPRING(
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_NO,
|
|
||||||
R.string.spring_blossom
|
|
||||||
),
|
|
||||||
DUSK(
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.midnight_dusk
|
|
||||||
),
|
|
||||||
LIME(
|
|
||||||
R.style.Theme_Tachiyomi_FlatLime,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.flat_lime
|
|
||||||
),
|
|
||||||
AMOLED(
|
|
||||||
R.style.Theme_Tachiyomi_Amoled,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.amoled_black
|
|
||||||
),
|
|
||||||
BLACK_N_RED(
|
|
||||||
R.style.Theme_Tachiyomi_BlackAndRed,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.black_and_red
|
|
||||||
),
|
|
||||||
HOT_PINK(
|
|
||||||
R.style.Theme_Tachiyomi_HotPink,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.hot_pink
|
|
||||||
),
|
|
||||||
LIGHT_BLUE(
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_NO,
|
|
||||||
R.string.light_blue
|
|
||||||
),
|
|
||||||
DARK_BLUE(
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue,
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES,
|
|
||||||
R.string.dark_blue
|
|
||||||
);
|
|
||||||
|
|
||||||
fun getColors(mode: Int = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM): Colors {
|
|
||||||
return when (nightMode) {
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES -> darkColors()
|
|
||||||
AppCompatDelegate.MODE_NIGHT_NO -> lightColors()
|
|
||||||
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM -> when (mode) {
|
|
||||||
AppCompatDelegate.MODE_NIGHT_YES -> darkColors()
|
|
||||||
else -> lightColors()
|
|
||||||
}
|
|
||||||
else -> lightColors()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun lightColors(): Colors {
|
|
||||||
return Colors(
|
|
||||||
lightPrimaryText,
|
|
||||||
lightSecondaryText,
|
|
||||||
lightBackground,
|
|
||||||
lightAccent,
|
|
||||||
lightAppBar,
|
|
||||||
lightAppBarText,
|
|
||||||
lightBottomBar,
|
|
||||||
lightInactiveTab,
|
|
||||||
lightActiveTab,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun darkColors(): Colors {
|
|
||||||
return Colors(
|
|
||||||
darkPrimaryText,
|
|
||||||
darkSecondaryText,
|
|
||||||
darkBackground,
|
|
||||||
darkAccent,
|
|
||||||
darkAppBar,
|
|
||||||
darkAppBarText,
|
|
||||||
darkBottomBar,
|
|
||||||
darkInactiveTab,
|
|
||||||
darkActiveTab,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with textColorPrimary (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val lightPrimaryText: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#DE240728"
|
|
||||||
else -> "#DE000000"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with textColorPrimary (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkPrimaryText: Int = Color.parseColor("#FFFFFFFF")
|
|
||||||
|
|
||||||
/** Complies with textColorSecondary (primary with alpha) */
|
|
||||||
@ColorInt
|
|
||||||
val lightSecondaryText: Int = ColorUtils.setAlphaComponent(lightPrimaryText, (0.54f * 255f).roundToInt())
|
|
||||||
|
|
||||||
/** Complies with textColorSecondary (primary with alpha) */
|
|
||||||
@ColorInt
|
|
||||||
val darkSecondaryText: Int = ColorUtils.setAlphaComponent(darkPrimaryText, (0.54f * 255f).roundToInt())
|
|
||||||
|
|
||||||
/** Complies with colorBackground */
|
|
||||||
@ColorInt
|
|
||||||
val lightBackground: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#f6f0f8"
|
|
||||||
else -> "#FAFAFA"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with colorBackground (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkBackground: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_Amoled, R.style.Theme_Tachiyomi_BlackAndRed, R.style.Theme_Tachiyomi_HotPink -> "#000000"
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#16151D"
|
|
||||||
R.style.Theme_Tachiyomi_FlatLime -> "#202125"
|
|
||||||
else -> "#1C1C1D"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with colorAccent */
|
|
||||||
@ColorInt
|
|
||||||
val lightAccent: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#c43c97"
|
|
||||||
else -> "#2979FF"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with colorAccent (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkAccent: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#F02475"
|
|
||||||
R.style.Theme_Tachiyomi_BlackAndRed -> "#AA2200"
|
|
||||||
R.style.Theme_Tachiyomi_HotPink -> "#FF3399"
|
|
||||||
R.style.Theme_Tachiyomi_FlatLime -> "#4AF88A"
|
|
||||||
else -> "#3399FF"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with colorSecondary */
|
|
||||||
@ColorInt
|
|
||||||
val lightAppBar: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#54759E")
|
|
||||||
else -> lightBackground
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with colorSecondary (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkAppBar: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#54759E")
|
|
||||||
else -> darkBackground
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with actionBarTintColor */
|
|
||||||
@ColorInt
|
|
||||||
val lightAppBarText: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#FFFFFF")
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> Color.parseColor("#DE4c0d4b")
|
|
||||||
else -> lightPrimaryText
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with actionBarTintColor (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkAppBarText: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#FFFFFF")
|
|
||||||
else -> darkPrimaryText
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with colorPrimaryVariant */
|
|
||||||
@ColorInt
|
|
||||||
val lightBottomBar: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> "#54759E"
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#efe3f3"
|
|
||||||
else -> "#FFFFFF"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with colorPrimaryVariant (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkBottomBar: Int = Color.parseColor(
|
|
||||||
when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> "#54759E"
|
|
||||||
R.style.Theme_Tachiyomi_Amoled, R.style.Theme_Tachiyomi_BlackAndRed, R.style.Theme_Tachiyomi_HotPink -> "#000000"
|
|
||||||
R.style.Theme_Tachiyomi_MidnightDusk -> "#201F27"
|
|
||||||
R.style.Theme_Tachiyomi_FlatLime -> "#282A2E"
|
|
||||||
else -> "#212121"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
/** Complies with tabBarIconInactive */
|
|
||||||
@ColorInt
|
|
||||||
val lightInactiveTab: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#80FFFFFF")
|
|
||||||
else -> Color.parseColor("#C2424242")
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with tabBarIconInactive (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkInactiveTab: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#80FFFFFF")
|
|
||||||
else -> Color.parseColor("#C2FFFFFF")
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with tabBarIconColor */
|
|
||||||
@ColorInt
|
|
||||||
val lightActiveTab: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> lightAppBarText
|
|
||||||
else -> lightAccent
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Complies with tabBarIconColor (probably night) */
|
|
||||||
@ColorInt
|
|
||||||
val darkActiveTab: Int = when (styleRes) {
|
|
||||||
R.style.Theme_Tachiyomi_AllBlue -> darkAppBarText
|
|
||||||
else -> darkAccent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data class Colors(
|
|
||||||
@ColorInt val primaryText: Int,
|
|
||||||
@ColorInt val secondaryText: Int,
|
|
||||||
@ColorInt val colorBackground: Int,
|
|
||||||
@ColorInt val colorAccent: Int,
|
|
||||||
@ColorInt val appBar: Int,
|
|
||||||
@ColorInt val appBarText: Int,
|
|
||||||
@ColorInt val bottomBar: Int,
|
|
||||||
@ColorInt val inactiveTab: Int,
|
|
||||||
@ColorInt val activeTab: Int,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.setThemeAndNight(preferences: PreferencesHelper) {
|
fun Activity.setThemeAndNight(preferences: PreferencesHelper) {
|
||||||
@ -306,7 +62,7 @@ fun Activity.setThemeAndNight(preferences: PreferencesHelper) {
|
|||||||
setTheme(theme.styleRes)
|
setTheme(theme.styleRes)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.getPrefTheme(preferences: PreferencesHelper): ThemeUtil.Themes {
|
fun Context.getPrefTheme(preferences: PreferencesHelper): Themes {
|
||||||
// Using a try catch in case I start to remove themes
|
// Using a try catch in case I start to remove themes
|
||||||
return try {
|
return try {
|
||||||
(
|
(
|
||||||
@ -315,8 +71,8 @@ fun Context.getPrefTheme(preferences: PreferencesHelper): ThemeUtil.Themes {
|
|||||||
) preferences.darkTheme() else preferences.lightTheme()
|
) preferences.darkTheme() else preferences.lightTheme()
|
||||||
).get()
|
).get()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
preferences.lightTheme().set(ThemeUtil.Themes.PURE_WHITE)
|
preferences.lightTheme().set(Themes.PURE_WHITE)
|
||||||
preferences.darkTheme().set(ThemeUtil.Themes.DARK)
|
preferences.darkTheme().set(Themes.DARK)
|
||||||
ThemeUtil.Themes.PURE_WHITE
|
Themes.PURE_WHITE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
249
app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt
Normal file
249
app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
package eu.kanade.tachiyomi.util.system
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import androidx.annotation.ColorInt
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import androidx.annotation.StyleRes
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
|
import androidx.core.graphics.ColorUtils
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
enum class Themes(@StyleRes val styleRes: Int, val nightMode: Int, @StringRes val nameRes: Int) {
|
||||||
|
PURE_WHITE(R.style.Theme_Tachiyomi, AppCompatDelegate.MODE_NIGHT_NO, R.string.white_theme),
|
||||||
|
DARK(R.style.Theme_Tachiyomi, AppCompatDelegate.MODE_NIGHT_YES, R.string.dark),
|
||||||
|
SPRING(
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_NO,
|
||||||
|
R.string.spring_blossom
|
||||||
|
),
|
||||||
|
DUSK(
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.midnight_dusk
|
||||||
|
),
|
||||||
|
LIME(
|
||||||
|
R.style.Theme_Tachiyomi_FlatLime,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.flat_lime
|
||||||
|
),
|
||||||
|
AMOLED(
|
||||||
|
R.style.Theme_Tachiyomi_Amoled,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.amoled_black
|
||||||
|
),
|
||||||
|
BLACK_N_RED(
|
||||||
|
R.style.Theme_Tachiyomi_BlackAndRed,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.black_and_red
|
||||||
|
),
|
||||||
|
HOT_PINK(
|
||||||
|
R.style.Theme_Tachiyomi_HotPink,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.hot_pink
|
||||||
|
),
|
||||||
|
LIGHT_BLUE(
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_NO,
|
||||||
|
R.string.light_blue
|
||||||
|
),
|
||||||
|
DARK_BLUE(
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue,
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES,
|
||||||
|
R.string.dark_blue
|
||||||
|
);
|
||||||
|
|
||||||
|
fun getColors(mode: Int = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM): Colors {
|
||||||
|
return when (nightMode) {
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES -> darkColors()
|
||||||
|
AppCompatDelegate.MODE_NIGHT_NO -> lightColors()
|
||||||
|
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM -> when (mode) {
|
||||||
|
AppCompatDelegate.MODE_NIGHT_YES -> darkColors()
|
||||||
|
else -> lightColors()
|
||||||
|
}
|
||||||
|
else -> lightColors()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun lightColors(): Colors {
|
||||||
|
return Colors(
|
||||||
|
lightPrimaryText,
|
||||||
|
lightSecondaryText,
|
||||||
|
lightBackground,
|
||||||
|
lightAccent,
|
||||||
|
lightAppBar,
|
||||||
|
lightAppBarText,
|
||||||
|
lightBottomBar,
|
||||||
|
lightInactiveTab,
|
||||||
|
lightActiveTab,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun darkColors(): Colors {
|
||||||
|
return Colors(
|
||||||
|
darkPrimaryText,
|
||||||
|
darkSecondaryText,
|
||||||
|
darkBackground,
|
||||||
|
darkAccent,
|
||||||
|
darkAppBar,
|
||||||
|
darkAppBarText,
|
||||||
|
darkBottomBar,
|
||||||
|
darkInactiveTab,
|
||||||
|
darkActiveTab,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with textColorPrimary (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val lightPrimaryText: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#DE240728"
|
||||||
|
else -> "#DE000000"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with textColorPrimary (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkPrimaryText: Int = Color.parseColor("#FFFFFFFF")
|
||||||
|
|
||||||
|
/** Complies with textColorSecondary (primary with alpha) */
|
||||||
|
@ColorInt
|
||||||
|
val lightSecondaryText: Int = ColorUtils.setAlphaComponent(lightPrimaryText, (0.54f * 255f).roundToInt())
|
||||||
|
|
||||||
|
/** Complies with textColorSecondary (primary with alpha) */
|
||||||
|
@ColorInt
|
||||||
|
val darkSecondaryText: Int = ColorUtils.setAlphaComponent(darkPrimaryText, (0.54f * 255f).roundToInt())
|
||||||
|
|
||||||
|
/** Complies with colorBackground */
|
||||||
|
@ColorInt
|
||||||
|
val lightBackground: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#f6f0f8"
|
||||||
|
else -> "#FAFAFA"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with colorBackground (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkBackground: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_Amoled, R.style.Theme_Tachiyomi_BlackAndRed, R.style.Theme_Tachiyomi_HotPink -> "#000000"
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#16151D"
|
||||||
|
R.style.Theme_Tachiyomi_FlatLime -> "#202125"
|
||||||
|
else -> "#1C1C1D"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with colorAccent */
|
||||||
|
@ColorInt
|
||||||
|
val lightAccent: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#c43c97"
|
||||||
|
else -> "#2979FF"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with colorAccent (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkAccent: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#F02475"
|
||||||
|
R.style.Theme_Tachiyomi_BlackAndRed -> "#AA2200"
|
||||||
|
R.style.Theme_Tachiyomi_HotPink -> "#FF3399"
|
||||||
|
R.style.Theme_Tachiyomi_FlatLime -> "#4AF88A"
|
||||||
|
else -> "#3399FF"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with colorSecondary */
|
||||||
|
@ColorInt
|
||||||
|
val lightAppBar: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#54759E")
|
||||||
|
else -> lightBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with colorSecondary (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkAppBar: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#54759E")
|
||||||
|
else -> darkBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with actionBarTintColor */
|
||||||
|
@ColorInt
|
||||||
|
val lightAppBarText: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#FFFFFF")
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> Color.parseColor("#DE4c0d4b")
|
||||||
|
else -> lightPrimaryText
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with actionBarTintColor (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkAppBarText: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#FFFFFF")
|
||||||
|
else -> darkPrimaryText
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with colorPrimaryVariant */
|
||||||
|
@ColorInt
|
||||||
|
val lightBottomBar: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> "#54759E"
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#efe3f3"
|
||||||
|
else -> "#FFFFFF"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with colorPrimaryVariant (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkBottomBar: Int = Color.parseColor(
|
||||||
|
when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> "#54759E"
|
||||||
|
R.style.Theme_Tachiyomi_Amoled, R.style.Theme_Tachiyomi_BlackAndRed, R.style.Theme_Tachiyomi_HotPink -> "#000000"
|
||||||
|
R.style.Theme_Tachiyomi_MidnightDusk -> "#201F27"
|
||||||
|
R.style.Theme_Tachiyomi_FlatLime -> "#282A2E"
|
||||||
|
else -> "#212121"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Complies with tabBarIconInactive */
|
||||||
|
@ColorInt
|
||||||
|
val lightInactiveTab: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#80FFFFFF")
|
||||||
|
else -> Color.parseColor("#C2424242")
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with tabBarIconInactive (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkInactiveTab: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> Color.parseColor("#80FFFFFF")
|
||||||
|
else -> Color.parseColor("#C2FFFFFF")
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with tabBarIconColor */
|
||||||
|
@ColorInt
|
||||||
|
val lightActiveTab: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> lightAppBarText
|
||||||
|
else -> lightAccent
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Complies with tabBarIconColor (probably night) */
|
||||||
|
@ColorInt
|
||||||
|
val darkActiveTab: Int = when (styleRes) {
|
||||||
|
R.style.Theme_Tachiyomi_AllBlue -> darkAppBarText
|
||||||
|
else -> darkAccent
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Colors(
|
||||||
|
@ColorInt val primaryText: Int,
|
||||||
|
@ColorInt val secondaryText: Int,
|
||||||
|
@ColorInt val colorBackground: Int,
|
||||||
|
@ColorInt val colorAccent: Int,
|
||||||
|
@ColorInt val appBar: Int,
|
||||||
|
@ColorInt val appBarText: Int,
|
||||||
|
@ColorInt val bottomBar: Int,
|
||||||
|
@ColorInt val inactiveTab: Int,
|
||||||
|
@ColorInt val activeTab: Int,
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user