refactor: leverage DynamicMaterialTheme with TachiyomiTheme
This commit is contained in:
parent
5d6aa7f98a
commit
a4ded07f6f
9 changed files with 67 additions and 107 deletions
|
|
@ -5,7 +5,9 @@ import androidx.compose.material3.ColorScheme
|
|||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.domain.ui.model.AppTheme
|
||||
import eu.kanade.presentation.theme.colorscheme.BaseColorScheme
|
||||
|
|
@ -38,6 +40,37 @@ fun TachiyomiTheme(
|
|||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun TachiyomiTheme(
|
||||
appTheme: AppTheme? = null,
|
||||
amoled: Boolean? = null,
|
||||
// KMK -->
|
||||
seedColor: Color?,
|
||||
// KMK <--
|
||||
content: @Composable () -> Unit,
|
||||
) {
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
// KMK -->
|
||||
val isAmoled = amoled ?: uiPreferences.themeDarkAmoled().get()
|
||||
if (seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = isAmoled,
|
||||
style = uiPreferences.themeCoverBasedStyle().get(),
|
||||
animate = true,
|
||||
content = content,
|
||||
)
|
||||
} else {
|
||||
// KMK <--
|
||||
BaseTachiyomiTheme(
|
||||
appTheme = appTheme ?: uiPreferences.appTheme().get(),
|
||||
isAmoled = isAmoled,
|
||||
content = content,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun TachiyomiPreviewTheme(
|
||||
appTheme: AppTheme = AppTheme.DEFAULT,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import androidx.activity.compose.BackHandler
|
|||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.systemBarsPadding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
|
|
@ -31,7 +30,6 @@ import cafe.adriel.voyager.navigator.LocalNavigator
|
|||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import dev.chrisbanes.haze.HazeState
|
||||
import dev.chrisbanes.haze.hazeChild
|
||||
import eu.kanade.domain.manga.model.hasCustomCover
|
||||
|
|
@ -46,6 +44,7 @@ import eu.kanade.presentation.manga.components.DeleteChaptersDialog
|
|||
import eu.kanade.presentation.manga.components.MangaCoverDialog
|
||||
import eu.kanade.presentation.manga.components.ScanlatorFilterDialog
|
||||
import eu.kanade.presentation.manga.components.SetIntervalDialog
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import eu.kanade.presentation.util.AssistContentScreen
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import eu.kanade.presentation.util.isTabletUi
|
||||
|
|
@ -194,16 +193,9 @@ class MangaScreen(
|
|||
}
|
||||
|
||||
val seedColor = successState.seedColor
|
||||
if (screenModel.themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = screenModel.themeDarkAmoled,
|
||||
style = screenModel.themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { content() },
|
||||
)
|
||||
} else {
|
||||
TachiyomiTheme(
|
||||
seedColor = seedColor.takeIf { screenModel.themeCoverBased }
|
||||
) {
|
||||
content()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -224,8 +224,6 @@ class MangaScreenModel(
|
|||
// KMK -->
|
||||
val useNewSourceNavigation by uiPreferences.useNewSourceNavigation().asState(screenModelScope)
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
val manga: Manga?
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package eu.kanade.tachiyomi.ui.manga
|
||||
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
|
|
@ -14,9 +13,9 @@ import androidx.compose.ui.graphics.Color
|
|||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.components.AppBar
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
|
||||
import tachiyomi.presentation.core.components.material.Button
|
||||
|
|
@ -36,21 +35,12 @@ class PaletteScreen(
|
|||
override fun Content() {
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
|
||||
val seedColor = seedColor?.let { Color(it) } ?: MaterialTheme.colorScheme.primary
|
||||
|
||||
if (themeCoverBased) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { MaterialThemeContent(seedColor) },
|
||||
)
|
||||
} else {
|
||||
TachiyomiTheme(
|
||||
seedColor = seedColor.takeIf { themeCoverBased }
|
||||
) {
|
||||
MaterialThemeContent(seedColor)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import android.view.View.LAYER_TYPE_HARDWARE
|
|||
import android.view.WindowManager
|
||||
import android.widget.Toast
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.material3.AlertDialog
|
||||
|
|
@ -52,7 +51,6 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
|||
import com.google.android.material.elevation.SurfaceColors
|
||||
import com.google.android.material.transition.platform.MaterialContainerTransform
|
||||
import com.hippo.unifile.UniFile
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import com.materialkolor.dynamicColorScheme
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.kanade.domain.base.BasePreferences
|
||||
|
|
@ -68,6 +66,7 @@ import eu.kanade.presentation.reader.ReadingModeSelectDialog
|
|||
import eu.kanade.presentation.reader.appbars.NavBarType
|
||||
import eu.kanade.presentation.reader.appbars.ReaderAppBars
|
||||
import eu.kanade.presentation.reader.settings.ReaderSettingsDialog
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder
|
||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||
|
|
@ -407,16 +406,9 @@ class ReaderActivity : BaseActivity() {
|
|||
|
||||
// KMK -->
|
||||
binding.pageNumber.setComposeContent {
|
||||
if (themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { pageNumberContent() },
|
||||
)
|
||||
} else {
|
||||
TachiyomiTheme(
|
||||
seedColor = seedColor.takeIf { themeCoverBased }
|
||||
) {
|
||||
pageNumberContent()
|
||||
}
|
||||
}
|
||||
|
|
@ -695,16 +687,9 @@ class ReaderActivity : BaseActivity() {
|
|||
|
||||
// KMK -->
|
||||
binding.dialogRoot.setComposeContent {
|
||||
if (themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { dialogRootContent() },
|
||||
)
|
||||
} else {
|
||||
TachiyomiTheme(
|
||||
seedColor = seedColor.takeIf { themeCoverBased }
|
||||
) {
|
||||
dialogRootContent()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
|
|||
import android.widget.FrameLayout
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.IntRange
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -18,7 +17,6 @@ import androidx.compose.ui.platform.AbstractComposeView
|
|||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import androidx.core.view.isVisible
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import tachiyomi.presentation.core.components.CombinedCircularProgressIndicator
|
||||
|
|
@ -50,23 +48,14 @@ class ReaderProgressIndicator @JvmOverloads constructor(
|
|||
override fun Content() {
|
||||
// KMK -->
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
if (seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = Color(seedColor),
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
animate = true,
|
||||
) {
|
||||
CombinedCircularProgressIndicator(progress = { progress })
|
||||
}
|
||||
} else {
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
// KMK <--
|
||||
TachiyomiTheme(
|
||||
// KMK -->
|
||||
seedColor = seedColor?.let { Color(seedColor) }.takeIf { themeCoverBased }
|
||||
// KMK <--
|
||||
TachiyomiTheme {
|
||||
CombinedCircularProgressIndicator(progress = { progress })
|
||||
}
|
||||
) {
|
||||
CombinedCircularProgressIndicator(progress = { progress })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.reader.viewer
|
|||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -14,7 +13,6 @@ import androidx.compose.runtime.mutableStateOf
|
|||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.AbstractComposeView
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.reader.ChapterTransition
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
|
|
@ -64,9 +62,14 @@ class ReaderTransitionView @JvmOverloads constructor(
|
|||
override fun Content() {
|
||||
data?.let {
|
||||
// KMK -->
|
||||
@Composable
|
||||
fun content() {
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
// KMK <--
|
||||
TachiyomiTheme(
|
||||
// KMK -->
|
||||
seedColor = seedColor?.let { Color(seedColor) }.takeIf { themeCoverBased }
|
||||
// KMK <--
|
||||
) {
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.bodySmall,
|
||||
LocalContentColor provides MaterialTheme.colorScheme.onBackground,
|
||||
|
|
@ -78,26 +81,6 @@ class ReaderTransitionView @JvmOverloads constructor(
|
|||
)
|
||||
}
|
||||
}
|
||||
// KMK -->
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
if (seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = Color(seedColor),
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
animate = true,
|
||||
) {
|
||||
content()
|
||||
}
|
||||
} else {
|
||||
// KMK <--
|
||||
TachiyomiTheme {
|
||||
content()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package exh.ui.metadata
|
||||
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.asPaddingValues
|
||||
|
|
@ -24,8 +23,8 @@ import androidx.compose.ui.unit.dp
|
|||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.presentation.components.AppBar
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
import tachiyomi.i18n.MR
|
||||
|
|
@ -109,18 +108,11 @@ class MetadataViewScreen(
|
|||
}
|
||||
|
||||
// KMK -->
|
||||
if (screenModel.themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = Color(seedColor),
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = screenModel.themeDarkAmoled,
|
||||
style = screenModel.themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { content() },
|
||||
)
|
||||
} else {
|
||||
TachiyomiTheme(
|
||||
seedColor = seedColor?.let { Color(seedColor) }.takeIf { screenModel.themeCoverBased }
|
||||
) {
|
||||
// KMK <--
|
||||
content()
|
||||
}
|
||||
// KMK <--
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,8 +27,6 @@ class MetadataViewScreenModel(
|
|||
// KMK -->
|
||||
private val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
private val _manga = MutableStateFlow<Manga?>(null)
|
||||
|
|
|
|||
Loading…
Reference in a new issue