Update UI Style
This commit is contained in:
@@ -10,6 +10,7 @@ import android.content.pm.ApplicationInfo
|
||||
import android.content.res.Configuration
|
||||
import android.os.Build
|
||||
import com.github.liuyueyi.quick.transfer.constants.TransType
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.jeremyliao.liveeventbus.LiveEventBus
|
||||
import com.jeremyliao.liveeventbus.logger.DefaultLogger
|
||||
import com.script.rhino.ReadOnlyJavaObject
|
||||
@@ -67,6 +68,7 @@ class App : Application() {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
DynamicColors.applyToActivitiesIfAvailable(this)
|
||||
CrashHandler(this)
|
||||
if (isDebuggable) {
|
||||
ThreadUtils.setThreadAssertsDisabledForTesting(true)
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.activity.addCallback
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppConst
|
||||
import io.legado.app.constant.AppLog
|
||||
@@ -23,8 +24,8 @@ import io.legado.app.constant.Theme
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ThemeConfig
|
||||
import io.legado.app.lib.theme.ThemeStore
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.TitleBar
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.applyBackgroundTint
|
||||
@@ -71,7 +72,7 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
attrs: AttributeSet
|
||||
): View? {
|
||||
if (AppConst.menuViewNames.contains(name) && parent?.parent is FrameLayout) {
|
||||
(parent.parent as View).setBackgroundColor(backgroundColor)
|
||||
//(parent.parent as View).setBackgroundColor(backgroundColor)
|
||||
}
|
||||
return super.onCreateView(parent, name, context, attrs)
|
||||
}
|
||||
@@ -85,8 +86,8 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
setContentView(binding.root)
|
||||
upBackgroundImage()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
findViewById<TitleBar>(R.id.title_bar)
|
||||
?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
|
||||
findViewById<AppBarLayout>(R.id.title_bar)
|
||||
//?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
|
||||
}
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
finish()
|
||||
@@ -98,15 +99,15 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
override fun onMultiWindowModeChanged(isInMultiWindowMode: Boolean, newConfig: Configuration) {
|
||||
super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig)
|
||||
findViewById<TitleBar>(R.id.title_bar)
|
||||
?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
|
||||
// findViewById<TitleBar>(R.id.title_bar)
|
||||
// ?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
|
||||
setupSystemBar()
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
findViewById<TitleBar>(R.id.title_bar)
|
||||
?.onMultiWindowModeChanged(isInMultiWindow, fullScreen)
|
||||
//findViewById<TitleBar>(R.id.title_bar)
|
||||
//?.onMultiWindowModeChanged(isInMultiWindow, fullScreen)
|
||||
setupSystemBar()
|
||||
}
|
||||
|
||||
@@ -140,21 +141,21 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
Theme.Transparent -> setTheme(R.style.AppTheme_Transparent)
|
||||
Theme.Dark -> {
|
||||
setTheme(R.style.AppTheme_Dark)
|
||||
window.decorView.applyBackgroundTint(backgroundColor)
|
||||
//window.decorView.applyBackgroundTint(backgroundColor)
|
||||
}
|
||||
|
||||
Theme.Light -> {
|
||||
setTheme(R.style.AppTheme_Light)
|
||||
window.decorView.applyBackgroundTint(backgroundColor)
|
||||
//window.decorView.applyBackgroundTint(backgroundColor)
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (ColorUtils.isColorLight(primaryColor)) {
|
||||
setTheme(R.style.AppTheme_Light)
|
||||
} else {
|
||||
setTheme(R.style.AppTheme_Dark)
|
||||
}
|
||||
window.decorView.applyBackgroundTint(backgroundColor)
|
||||
// if (ColorUtils.isColorLight(primaryColor)) {
|
||||
// setTheme(R.style.AppTheme_Light)
|
||||
// } else {
|
||||
// setTheme(R.style.AppTheme_Dark)
|
||||
// }
|
||||
//window.decorView.applyBackgroundTint(backgroundColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -177,24 +178,24 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
if (fullScreen && !isInMultiWindow) {
|
||||
fullScreen()
|
||||
}
|
||||
val isTransparentStatusBar = AppConfig.isTransparentStatusBar
|
||||
val statusBarColor = ThemeStore.statusBarColor(this, isTransparentStatusBar)
|
||||
setStatusBarColorAuto(statusBarColor, isTransparentStatusBar, fullScreen)
|
||||
if (toolBarTheme == Theme.Dark) {
|
||||
setLightStatusBar(false)
|
||||
} else if (toolBarTheme == Theme.Light) {
|
||||
setLightStatusBar(true)
|
||||
}
|
||||
//val isTransparentStatusBar = AppConfig.isTransparentStatusBar
|
||||
//val statusBarColor = ThemeStore.statusBarColor(this, isTransparentStatusBar)
|
||||
//setStatusBarColorAuto(statusBarColor, isTransparentStatusBar, fullScreen)
|
||||
// if (toolBarTheme == Theme.Dark) {
|
||||
// setLightStatusBar(false)
|
||||
// } else if (toolBarTheme == Theme.Light) {
|
||||
// setLightStatusBar(true)
|
||||
// }
|
||||
upNavigationBarColor()
|
||||
}
|
||||
|
||||
open fun upNavigationBarColor() {
|
||||
if (AppConfig.immNavigationBar) {
|
||||
setNavigationBarColorAuto(ThemeStore.navigationBarColor(this))
|
||||
} else {
|
||||
val nbColor = ColorUtils.darkenColor(ThemeStore.navigationBarColor(this))
|
||||
setNavigationBarColorAuto(nbColor)
|
||||
}
|
||||
// if (AppConfig.immNavigationBar) {
|
||||
// setNavigationBarColorAuto(ThemeStore.navigationBarColor(this))
|
||||
// } else {
|
||||
// val nbColor = ColorUtils.darkenColor(ThemeStore.navigationBarColor(this))
|
||||
// setNavigationBarColorAuto(nbColor)
|
||||
// }
|
||||
}
|
||||
|
||||
open fun observeLiveBus() {
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
package io.legado.app.base
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.content.DialogInterface.OnDismissListener
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.theme.ThemeStore
|
||||
import io.legado.app.utils.setBackgroundKeepPadding
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
abstract class BaseBottomSheetDialogFragment(
|
||||
@LayoutRes layoutID: Int
|
||||
) : BottomSheetDialogFragment(layoutID) {
|
||||
|
||||
private var onDismissListener: OnDismissListener? = null
|
||||
|
||||
fun setOnDismissListener(onDismissListener: OnDismissListener?) {
|
||||
this.onDismissListener = onDismissListener
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
// if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) {
|
||||
// setStyle(STYLE_NO_TITLE, 0)
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
onFragmentCreated(view, savedInstanceState)
|
||||
observeLiveBus()
|
||||
}
|
||||
|
||||
abstract fun onFragmentCreated(view: View, savedInstanceState: Bundle?)
|
||||
|
||||
override fun show(manager: FragmentManager, tag: String?) {
|
||||
kotlin.runCatching {
|
||||
manager.beginTransaction().remove(this).commit()
|
||||
super.show(manager, tag)
|
||||
}.onFailure {
|
||||
AppLog.put("显示BottomSheetDialog失败 tag:$tag\n$it")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
onDismissListener?.onDismiss(dialog)
|
||||
}
|
||||
|
||||
fun <T> execute(
|
||||
scope: CoroutineScope = lifecycleScope,
|
||||
context: CoroutineContext = Dispatchers.IO,
|
||||
block: suspend CoroutineScope.() -> T
|
||||
) = Coroutine.async(scope, context) { block() }
|
||||
|
||||
open fun observeLiveBus() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.help.config.AppConfig
|
||||
@@ -38,40 +39,36 @@ abstract class BaseDialogFragment(
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
if (adaptationSoftKeyboard) {
|
||||
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
||||
} else if (AppConfig.isEInkMode) {
|
||||
dialog?.window?.let {
|
||||
it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
val attr = it.attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.windowAnimations = 0
|
||||
it.attributes = attr
|
||||
it.decorView.setBackgroundKeepPadding(R.color.transparent)
|
||||
}
|
||||
// 修改gravity的时机一般在子类的onStart方法中, 因此需要在onStart之后执行.
|
||||
lifecycle.addObserver(LifecycleEventObserver { _, event ->
|
||||
if (event == Lifecycle.Event.ON_START) {
|
||||
when (dialog?.window?.attributes?.gravity) {
|
||||
Gravity.TOP -> view?.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
Gravity.BOTTOM -> view?.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
else -> {
|
||||
val padding = 2.dpToPx();
|
||||
view?.setPadding(padding, padding, padding, padding)
|
||||
view?.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
// if (adaptationSoftKeyboard) {
|
||||
// dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
||||
// } else if (AppConfig.isEInkMode) {
|
||||
// dialog?.window?.let {
|
||||
// it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// val attr = it.attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.windowAnimations = 0
|
||||
// it.attributes = attr
|
||||
// it.decorView.setBackgroundKeepPadding(R.color.transparent)
|
||||
// }
|
||||
// // 修改gravity的时机一般在子类的onStart方法中, 因此需要在onStart之后执行.
|
||||
// lifecycle.addObserver(LifecycleEventObserver { _, event ->
|
||||
// if (event == Lifecycle.Event.ON_START) {
|
||||
// when (dialog?.window?.attributes?.gravity) {
|
||||
// Gravity.TOP -> view?.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
// Gravity.BOTTOM -> view?.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
// else -> {
|
||||
// val padding = 2.dpToPx();
|
||||
// view?.setPadding(padding, padding, padding, padding)
|
||||
// view?.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||
//不加这个android 5.0对话框顶部会有空白
|
||||
setStyle(STYLE_NO_TITLE, 0)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
||||
@@ -45,10 +45,10 @@ abstract class BaseFragment(@LayoutRes layoutID: Int) : Fragment(layoutID) {
|
||||
}
|
||||
|
||||
private fun onMultiWindowModeChanged() {
|
||||
(activity as? BaseActivity<*>)?.let {
|
||||
view?.findViewById<TitleBar>(R.id.title_bar)
|
||||
?.onMultiWindowModeChanged(it.isInMultiWindow, it.fullScreen)
|
||||
}
|
||||
// (activity as? BaseActivity<*>)?.let {
|
||||
// view?.findViewById<TitleBar>(R.id.title_bar)
|
||||
// ?.onMultiWindowModeChanged(it.isInMultiWindow, it.fullScreen)
|
||||
// }
|
||||
}
|
||||
|
||||
fun setSupportToolbar(toolbar: Toolbar) {
|
||||
|
||||
@@ -5,39 +5,40 @@ import android.view.WindowManager
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.utils.dpToPx
|
||||
|
||||
|
||||
abstract class BasePrefDialogFragment(
|
||||
) : DialogFragment() {
|
||||
) : BottomSheetDialogFragment() {
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
if (AppConfig.isEInkMode) {
|
||||
dialog?.window?.let {
|
||||
it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
val attr = it.attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.windowAnimations = 0
|
||||
it.attributes = attr
|
||||
it.setBackgroundDrawableResource(R.color.transparent)
|
||||
}
|
||||
// dialog?.window?.let {
|
||||
// it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// val attr = it.attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.windowAnimations = 0
|
||||
// it.attributes = attr
|
||||
// it.setBackgroundDrawableResource(R.color.transparent)
|
||||
// }
|
||||
|
||||
// 修改gravity的时机一般在子类的onStart方法中, 因此需要在onStart之后执行.
|
||||
lifecycle.addObserver(LifecycleEventObserver { _, event ->
|
||||
if (event == Lifecycle.Event.ON_START) {
|
||||
when (dialog?.window?.attributes?.gravity) {
|
||||
Gravity.TOP -> view?.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
Gravity.BOTTOM -> view?.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
else -> {
|
||||
val padding = 2.dpToPx();
|
||||
view?.setPadding(padding, padding, padding, padding)
|
||||
view?.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (event == Lifecycle.Event.ON_START) {
|
||||
// when (dialog?.window?.attributes?.gravity) {
|
||||
// Gravity.TOP -> view?.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
// Gravity.BOTTOM -> view?.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
// else -> {
|
||||
// val padding = 2.dpToPx();
|
||||
// view?.setPadding(padding, padding, padding, padding)
|
||||
// view?.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,9 +76,9 @@ object PreferKey {
|
||||
const val textFullJustify = "textFullJustify"
|
||||
const val textBottomJustify = "textBottomJustify"
|
||||
const val autoReadSpeed = "autoReadSpeed"
|
||||
const val barElevation = "barElevation"
|
||||
const val transparentStatusBar = "transparentStatusBar"
|
||||
const val immNavigationBar = "immNavigationBar"
|
||||
//const val barElevation = "barElevation"
|
||||
//const val transparentStatusBar = "transparentStatusBar"
|
||||
//const val immNavigationBar = "immNavigationBar"
|
||||
const val defaultCover = "defaultCover"
|
||||
const val defaultCoverDark = "defaultCoverDark"
|
||||
const val replaceEnableDefault = "replaceEnableDefault"
|
||||
|
||||
@@ -149,11 +149,11 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
val textSelectAble: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.textSelectAble, true)
|
||||
|
||||
val isTransparentStatusBar: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.transparentStatusBar, true)
|
||||
|
||||
val immNavigationBar: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.immNavigationBar, true)
|
||||
// val isTransparentStatusBar: Boolean
|
||||
// get() = appCtx.getPrefBoolean(PreferKey.transparentStatusBar, true)
|
||||
//
|
||||
// val immNavigationBar: Boolean
|
||||
// get() = appCtx.getPrefBoolean(PreferKey.immNavigationBar, true)
|
||||
|
||||
val screenOrientation: String?
|
||||
get() = appCtx.getPrefString(PreferKey.screenOrientation)
|
||||
@@ -291,14 +291,14 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
appCtx.putPrefInt(PreferKey.systemTypefaces, value)
|
||||
}
|
||||
|
||||
var elevation: Int
|
||||
get() = if (isEInkMode) 0 else appCtx.getPrefInt(
|
||||
PreferKey.barElevation,
|
||||
AppConst.sysElevation
|
||||
)
|
||||
set(value) {
|
||||
appCtx.putPrefInt(PreferKey.barElevation, value)
|
||||
}
|
||||
// var elevation: Int
|
||||
// get() = if (isEInkMode) 0 else appCtx.getPrefInt(
|
||||
// PreferKey.barElevation,
|
||||
// AppConst.sysElevation
|
||||
// )
|
||||
// set(value) {
|
||||
// appCtx.putPrefInt(PreferKey.barElevation, value)
|
||||
// }
|
||||
|
||||
var readUrlInBrowser: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.readUrlOpenInBrowser)
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package io.legado.app.help.config
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import androidx.annotation.Keep
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.PageAnim
|
||||
@@ -673,8 +676,10 @@ object ReadBookConfig {
|
||||
|
||||
fun curBgDrawable(width: Int, height: Int): Drawable {
|
||||
if (width == 0 || height == 0) {
|
||||
return ColorDrawable(appCtx.getCompatColor(R.color.background))
|
||||
val backgroundColor = MaterialColors.getColor(appCtx, com.google.android.material.R.attr.colorSurface, Color.WHITE)
|
||||
return ColorDrawable(backgroundColor)
|
||||
}
|
||||
|
||||
var bgDrawable: Drawable? = null
|
||||
val resources = appCtx.resources
|
||||
try {
|
||||
@@ -685,7 +690,6 @@ object ReadBookConfig {
|
||||
val bitmap = BitmapUtils.decodeAssetsBitmap(appCtx, path, width, height)
|
||||
BitmapDrawable(resources, bitmap?.resizeAndRecycle(width, height))
|
||||
}
|
||||
|
||||
else -> {
|
||||
val path = curBgStr().let {
|
||||
if (it.contains(File.separator)) it
|
||||
@@ -700,7 +704,10 @@ object ReadBookConfig {
|
||||
} catch (e: Exception) {
|
||||
e.printOnDebug()
|
||||
}
|
||||
return bgDrawable ?: ColorDrawable(appCtx.getCompatColor(R.color.background))
|
||||
|
||||
// fallback 使用 MD3 的 colorSurface 作为背景色
|
||||
val fallbackColor = MaterialColors.getColor(appCtx, com.google.android.material.R.attr.colorSurface, Color.WHITE)
|
||||
return bgDrawable ?: ColorDrawable(fallbackColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import io.legado.app.utils.putPrefInt
|
||||
import io.legado.app.utils.stackBlur
|
||||
import splitties.init.appCtx
|
||||
import java.io.File
|
||||
import androidx.core.graphics.toColorInt
|
||||
|
||||
@Keep
|
||||
object ThemeConfig {
|
||||
@@ -146,10 +147,10 @@ object ThemeConfig {
|
||||
}
|
||||
|
||||
fun applyConfig(context: Context, config: Config) {
|
||||
val primary = Color.parseColor(config.primaryColor)
|
||||
val accent = Color.parseColor(config.accentColor)
|
||||
val background = Color.parseColor(config.backgroundColor)
|
||||
val bBackground = Color.parseColor(config.bottomBackground)
|
||||
val primary = config.primaryColor.toColorInt()
|
||||
val accent = config.accentColor.toColorInt()
|
||||
val background = config.backgroundColor.toColorInt()
|
||||
val bBackground = config.bottomBackground.toColorInt()
|
||||
if (config.isNightTheme) {
|
||||
context.putPrefInt(PreferKey.cNPrimary, primary)
|
||||
context.putPrefInt(PreferKey.cNAccent, accent)
|
||||
|
||||
@@ -6,12 +6,13 @@ import android.graphics.drawable.Drawable
|
||||
import android.view.KeyEvent
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
internal class AndroidAlertBuilder(override val ctx: Context) : AlertBuilder<AlertDialog> {
|
||||
private val builder = AlertDialog.Builder(ctx)
|
||||
private val builder = MaterialAlertDialogBuilder(ctx)
|
||||
|
||||
override fun setTitle(title: CharSequence) {
|
||||
builder.setTitle(title)
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.widget.TextView
|
||||
import androidx.preference.EditTextPreference.OnBindEditTextListener
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import io.legado.app.R
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class EditTextPreference(context: Context, attrs: AttributeSet) :
|
||||
@@ -14,7 +14,7 @@ class EditTextPreference(context: Context, attrs: AttributeSet) :
|
||||
|
||||
private var mOnBindEditTextListener: OnBindEditTextListener? = null
|
||||
private val onBindEditTextListener = OnBindEditTextListener { editText ->
|
||||
editText.applyTint(context.accentColor)
|
||||
//editText.applyTint(context.accentColor)
|
||||
mOnBindEditTextListener?.onBindEditText(editText)
|
||||
}
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ import androidx.preference.EditTextPreferenceDialogFragmentCompat
|
||||
import androidx.preference.PreferenceDialogFragmentCompat
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.filletBackground
|
||||
import io.legado.app.utils.dpToPx
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.filletBackground
|
||||
|
||||
|
||||
class EditTextPreferenceDialog : EditTextPreferenceDialogFragmentCompat() {
|
||||
|
||||
@@ -29,14 +29,14 @@ class EditTextPreferenceDialog : EditTextPreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val dialog = super.onCreateDialog(savedInstanceState)
|
||||
dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
dialog.window?.decorView?.post {
|
||||
(dialog as AlertDialog).run {
|
||||
getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
}
|
||||
}
|
||||
// dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
// dialog.window?.decorView?.post {
|
||||
// (dialog as AlertDialog).run {
|
||||
// getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
// }
|
||||
// }
|
||||
return dialog
|
||||
}
|
||||
|
||||
@@ -54,8 +54,8 @@ class EditTextPreferenceDialog : EditTextPreferenceDialogFragmentCompat() {
|
||||
Gravity.TOP -> it.decorView.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
Gravity.BOTTOM -> it.decorView.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
else -> {
|
||||
val padding = 2.dpToPx();
|
||||
it.decorView.setPadding(padding, padding, padding, padding)
|
||||
// val padding = 2.dpToPx();
|
||||
// it.decorView.setPadding(padding, padding, padding, padding)
|
||||
it.decorView.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,12 +13,13 @@ import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemIconPreferenceBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.getCompatDrawable
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -119,7 +120,7 @@ class IconListPreference(context: Context, attrs: AttributeSet) : ListPreference
|
||||
return "icon_$key"
|
||||
}
|
||||
|
||||
class IconDialog : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
||||
class IconDialog : BaseBottomSheetDialogFragment(R.layout.dialog_recycler_view) {
|
||||
|
||||
var onChanged: ((value: String) -> Unit)? = null
|
||||
var dialogValue: String? = null
|
||||
@@ -130,11 +131,10 @@ class IconListPreference(context: Context, attrs: AttributeSet) : ListPreference
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(0.8f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.change_icon)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
val adapter = Adapter(requireContext())
|
||||
|
||||
@@ -10,8 +10,8 @@ import androidx.preference.ListPreferenceDialogFragmentCompat
|
||||
import androidx.preference.PreferenceDialogFragmentCompat
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.filletBackground
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.filletBackground
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.dpToPx
|
||||
|
||||
@@ -31,17 +31,17 @@ class ListPreferenceDialog : ListPreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val dialog = super.onCreateDialog(savedInstanceState)
|
||||
dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
dialog.window?.decorView?.post {
|
||||
(dialog as AlertDialog).run {
|
||||
getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
listView?.forEach {
|
||||
it.applyTint(accentColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
// dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
// dialog.window?.decorView?.post {
|
||||
// (dialog as AlertDialog).run {
|
||||
// getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
// listView?.forEach {
|
||||
// it.applyTint(accentColor)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return dialog
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import androidx.preference.MultiSelectListPreferenceDialogFragmentCompat
|
||||
import androidx.preference.PreferenceDialogFragmentCompat
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.filletBackground
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.filletBackground
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.dpToPx
|
||||
|
||||
@@ -33,17 +33,17 @@ class MultiSelectListPreferenceDialog : MultiSelectListPreferenceDialogFragmentC
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val dialog = super.onCreateDialog(savedInstanceState)
|
||||
dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
dialog.window?.decorView?.post {
|
||||
(dialog as AlertDialog).run {
|
||||
getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
listView?.forEach {
|
||||
it.applyTint(accentColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
// dialog.window?.setBackgroundDrawable(requireContext().filletBackground)
|
||||
// dialog.window?.decorView?.post {
|
||||
// (dialog as AlertDialog).run {
|
||||
// getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor)
|
||||
// getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor)
|
||||
// listView?.forEach {
|
||||
// it.applyTint(accentColor)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return dialog
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import android.widget.TextView
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import io.legado.app.R
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.utils.ColorUtils
|
||||
|
||||
|
||||
@@ -31,9 +31,9 @@ class NameListPreference(context: Context, attrs: AttributeSet) : ListPreference
|
||||
if (v is TextView) {
|
||||
v.text = entry
|
||||
if (isBottomBackground) {
|
||||
val bgColor = context.bottomBackground
|
||||
val pTextColor = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
v.setTextColor(pTextColor)
|
||||
// val bgColor = context.bottomBackground
|
||||
// val pTextColor = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
//v.setTextColor(pTextColor)
|
||||
}
|
||||
}
|
||||
super.onBindViewHolder(holder)
|
||||
|
||||
@@ -12,10 +12,10 @@ import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import io.legado.app.R
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import splitties.views.onLongClick
|
||||
import kotlin.math.roundToInt
|
||||
@@ -59,17 +59,17 @@ open class Preference(context: Context, attrs: AttributeSet) :
|
||||
tvSummary.isGone = summary.isNullOrEmpty()
|
||||
}
|
||||
if (isBottomBackground && !viewHolder.itemView.isInEditMode) {
|
||||
val isLight = ColorUtils.isColorLight(context.bottomBackground)
|
||||
val pTextColor = context.getPrimaryTextColor(isLight)
|
||||
tvTitle?.setTextColor(pTextColor)
|
||||
val sTextColor = context.getSecondaryTextColor(isLight)
|
||||
tvSummary?.setTextColor(sTextColor)
|
||||
// val isLight = ColorUtils.isColorLight(context.bottomBackground)
|
||||
// val pTextColor = context.getPrimaryTextColor(isLight)
|
||||
// tvTitle?.setTextColor(pTextColor)
|
||||
// val sTextColor = context.getSecondaryTextColor(isLight)
|
||||
// tvSummary?.setTextColor(sTextColor)
|
||||
}
|
||||
val iconView = viewHolder.findViewById(R.id.preference_icon)
|
||||
if (iconView is ImageView) {
|
||||
iconView.isVisible = icon != null
|
||||
iconView.setImageDrawable(icon)
|
||||
iconView.setColorFilter(context.accentColor)
|
||||
//iconView.setColorFilter(context.accentColor)
|
||||
}
|
||||
|
||||
if (weightLayoutRes != null && weightLayoutRes != 0 && viewId != null && viewId != 0) {
|
||||
|
||||
@@ -9,8 +9,8 @@ import androidx.preference.PreferenceCategory
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.utils.ColorUtils
|
||||
|
||||
|
||||
@@ -28,28 +28,28 @@ class PreferenceCategory(context: Context, attrs: AttributeSet) :
|
||||
if (view is TextView) { // && !view.isInEditMode
|
||||
view.text = title
|
||||
if (view.isInEditMode) return
|
||||
view.setTextColor(context.accentColor)
|
||||
//view.setTextColor(context.accentColor)
|
||||
view.isVisible = !title.isNullOrEmpty()
|
||||
|
||||
val da = holder.findViewById(R.id.preference_divider_above)
|
||||
val dividerColor = if (AppConfig.isNightTheme) {
|
||||
ColorUtils.withAlpha(
|
||||
ColorUtils.shiftColor(context.backgroundColor, 1.05f),
|
||||
0.5f
|
||||
)
|
||||
// ColorUtils.withAlpha(
|
||||
// ColorUtils.shiftColor(context.backgroundColor, 1.05f),
|
||||
// 0.5f
|
||||
// )
|
||||
} else {
|
||||
ColorUtils.withAlpha(
|
||||
ColorUtils.shiftColor(context.backgroundColor, 0.95f),
|
||||
0.5f
|
||||
)
|
||||
// ColorUtils.withAlpha(
|
||||
// ColorUtils.shiftColor(context.backgroundColor, 0.95f),
|
||||
// 0.5f
|
||||
// )
|
||||
}
|
||||
if (da is View) {
|
||||
da.setBackgroundColor(dividerColor)
|
||||
//da.setBackgroundColor(dividerColor)
|
||||
da.isVisible = holder.isDividerAllowedAbove
|
||||
}
|
||||
val db = holder.findViewById(R.id.preference_divider_below)
|
||||
if (db is View) {
|
||||
db.setBackgroundColor(dividerColor)
|
||||
//db.setBackgroundColor(dividerColor)
|
||||
db.isVisible = holder.isDividerAllowedBelow
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import androidx.appcompat.widget.SwitchCompat
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import io.legado.app.R
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class SwitchPreference(context: Context, attrs: AttributeSet) :
|
||||
@@ -17,6 +17,7 @@ class SwitchPreference(context: Context, attrs: AttributeSet) :
|
||||
|
||||
init {
|
||||
layoutResource = R.layout.view_preference
|
||||
widgetLayoutResource = R.layout.preference_widget_material_switch
|
||||
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.Preference)
|
||||
isBottomBackground = typedArray.getBoolean(R.styleable.Preference_isBottomBackground, false)
|
||||
typedArray.recycle()
|
||||
@@ -30,7 +31,7 @@ class SwitchPreference(context: Context, attrs: AttributeSet) :
|
||||
isBottomBackground = isBottomBackground
|
||||
)
|
||||
if (v is SwitchCompat && !v.isInEditMode) {
|
||||
v.applyTint(context.accentColor)
|
||||
//v.applyTint(context.accentColor)
|
||||
}
|
||||
super.onBindViewHolder(holder)
|
||||
onLongClick?.let { listener ->
|
||||
|
||||
@@ -16,133 +16,3 @@ import io.legado.app.utils.dpToPx
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
@ColorInt
|
||||
fun Context.getPrimaryTextColor(dark: Boolean): Int {
|
||||
return if (dark) {
|
||||
ContextCompat.getColor(this, R.color.md_light_primary_text)
|
||||
} else {
|
||||
ContextCompat.getColor(this, R.color.md_dark_primary_text)
|
||||
}
|
||||
}
|
||||
|
||||
@ColorInt
|
||||
fun Context.getSecondaryTextColor(dark: Boolean): Int {
|
||||
return if (dark) {
|
||||
ContextCompat.getColor(this, R.color.md_light_secondary)
|
||||
} else {
|
||||
ContextCompat.getColor(this, R.color.md_dark_primary_text)
|
||||
}
|
||||
}
|
||||
|
||||
@ColorInt
|
||||
fun Context.getPrimaryDisabledTextColor(dark: Boolean): Int {
|
||||
return if (dark) {
|
||||
ContextCompat.getColor(this, R.color.md_light_disabled)
|
||||
} else {
|
||||
ContextCompat.getColor(this, R.color.md_dark_disabled)
|
||||
}
|
||||
}
|
||||
|
||||
@ColorInt
|
||||
fun Context.getSecondaryDisabledTextColor(dark: Boolean): Int {
|
||||
return if (dark) {
|
||||
ContextCompat.getColor(
|
||||
this,
|
||||
androidx.appcompat.R.color.secondary_text_disabled_material_light
|
||||
)
|
||||
} else {
|
||||
ContextCompat.getColor(
|
||||
this,
|
||||
androidx.appcompat.R.color.secondary_text_disabled_material_dark
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val Context.primaryColor: Int
|
||||
get() = ThemeStore.primaryColor(this)
|
||||
|
||||
val Context.primaryColorDark: Int
|
||||
get() = ThemeStore.primaryColorDark(this)
|
||||
|
||||
val Context.accentColor: Int
|
||||
get() = ThemeStore.accentColor(this)
|
||||
|
||||
val Context.backgroundColor: Int
|
||||
get() = ThemeStore.backgroundColor(this)
|
||||
|
||||
val Context.bottomBackground: Int
|
||||
get() = ThemeStore.bottomBackground(this)
|
||||
|
||||
val Context.primaryTextColor: Int
|
||||
get() = getPrimaryTextColor(isDarkTheme)
|
||||
|
||||
val Context.secondaryTextColor: Int
|
||||
get() = getSecondaryTextColor(isDarkTheme)
|
||||
|
||||
val Context.primaryDisabledTextColor: Int
|
||||
get() = getPrimaryDisabledTextColor(isDarkTheme)
|
||||
|
||||
val Context.secondaryDisabledTextColor: Int
|
||||
get() = getSecondaryDisabledTextColor(isDarkTheme)
|
||||
|
||||
val Fragment.primaryColor: Int
|
||||
get() = ThemeStore.primaryColor(requireContext())
|
||||
|
||||
val Fragment.primaryColorDark: Int
|
||||
get() = ThemeStore.primaryColorDark(requireContext())
|
||||
|
||||
val Fragment.accentColor: Int
|
||||
get() = ThemeStore.accentColor(requireContext())
|
||||
|
||||
val Fragment.backgroundColor: Int
|
||||
get() = ThemeStore.backgroundColor(requireContext())
|
||||
|
||||
val Fragment.bottomBackground: Int
|
||||
get() = ThemeStore.bottomBackground(requireContext())
|
||||
|
||||
val Fragment.primaryTextColor: Int
|
||||
get() = requireContext().getPrimaryTextColor(isDarkTheme)
|
||||
|
||||
val Fragment.secondaryTextColor: Int
|
||||
get() = requireContext().getSecondaryTextColor(isDarkTheme)
|
||||
|
||||
val Fragment.primaryDisabledTextColor: Int
|
||||
get() = requireContext().getPrimaryDisabledTextColor(isDarkTheme)
|
||||
|
||||
val Fragment.secondaryDisabledTextColor: Int
|
||||
get() = requireContext().getSecondaryDisabledTextColor(isDarkTheme)
|
||||
|
||||
val Context.buttonDisabledColor: Int
|
||||
get() = if (isDarkTheme) {
|
||||
ContextCompat.getColor(this, R.color.md_dark_disabled)
|
||||
} else {
|
||||
ContextCompat.getColor(this, R.color.md_light_disabled)
|
||||
}
|
||||
|
||||
val Context.isDarkTheme: Boolean
|
||||
get() = ColorUtils.isColorLight(ThemeStore.primaryColor(this))
|
||||
|
||||
val Fragment.isDarkTheme: Boolean
|
||||
get() = requireContext().isDarkTheme
|
||||
|
||||
val Context.elevation: Float
|
||||
@SuppressLint("PrivateResource")
|
||||
get() {
|
||||
return if (AppConfig.elevation < 0) {
|
||||
ThemeUtils.resolveFloat(
|
||||
this,
|
||||
android.R.attr.elevation,
|
||||
resources.getDimension(com.google.android.material.R.dimen.design_appbar_elevation)
|
||||
)
|
||||
} else {
|
||||
AppConfig.elevation.toFloat().dpToPx()
|
||||
}
|
||||
}
|
||||
|
||||
val Context.filletBackground: GradientDrawable
|
||||
get() {
|
||||
val background = GradientDrawable()
|
||||
background.cornerRadius = 3f.dpToPx()
|
||||
background.setColor(backgroundColor)
|
||||
return background
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import androidx.core.content.ContextCompat
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.LogUtils
|
||||
import splitties.init.appCtx
|
||||
import androidx.core.graphics.toColorInt
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
|
||||
@@ -22,6 +23,18 @@ private constructor(private val mContext: Context) : ThemeStoreInterface {
|
||||
|
||||
private val mEditor = prefs(mContext).edit()
|
||||
|
||||
// override fun enableDynamicColors(context: Context, enable: Boolean): ThemeStore {
|
||||
// mEditor.putBoolean(ThemeStorePrefKeys.KEY_DYNAMIC_COLORS_ENABLED, enable)
|
||||
// if (enable && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
// // 使用系统动态颜色
|
||||
// val dynamicColors = DynamicColorsOptions.Builder()
|
||||
// .setThemeOverlay(R.style.Theme_App_Dynamic)
|
||||
// .build()
|
||||
// DynamicColors.applyToActivitiesIfAvailable(context.applicationContext, dynamicColors)
|
||||
// }
|
||||
// return this
|
||||
// }
|
||||
|
||||
override fun primaryColor(@ColorInt color: Int): ThemeStore {
|
||||
mEditor.putInt(ThemeStorePrefKeys.KEY_PRIMARY_COLOR, color)
|
||||
if (autoGeneratePrimaryDark(mContext))
|
||||
@@ -195,7 +208,7 @@ private constructor(private val mContext: Context) : ThemeStoreInterface {
|
||||
ThemeUtils.resolveColor(
|
||||
context,
|
||||
androidx.appcompat.R.attr.colorPrimary,
|
||||
Color.parseColor("#455A64")
|
||||
"#455A64".toColorInt()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ package io.legado.app.lib.theme
|
||||
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
object ThemeStorePrefKeys {
|
||||
const val KEY_DYNAMIC_COLORS_ENABLED = ""
|
||||
|
||||
const val CONFIG_PREFS_KEY_DEFAULT = "app_themes"
|
||||
const val IS_CONFIGURED_KEY = "is_configured"
|
||||
@@ -27,4 +28,10 @@ object ThemeStorePrefKeys {
|
||||
const val KEY_APPLY_PRIMARYDARK_STATUSBAR = "apply_primarydark_statusbar"
|
||||
const val KEY_APPLY_PRIMARY_NAVBAR = "apply_primary_navbar"
|
||||
const val KEY_AUTO_GENERATE_PRIMARYDARK = "auto_generate_primarydark"
|
||||
|
||||
const val KEY_COLOR_PRIMARY = "key_color_primary"
|
||||
const val KEY_COLOR_ON_PRIMARY = "key_color_on_primary"
|
||||
const val KEY_COLOR_PRIMARY_CONTAINER = "key_color_primary_container"
|
||||
const val KEY_COLOR_ON_PRIMARY_CONTAINER = "key_color_on_primary_container"
|
||||
const val KEY_COLOR_SECONDARY = "key_color_secondary"
|
||||
}
|
||||
@@ -12,28 +12,30 @@ import io.legado.app.databinding.ViewNavigationBadgeBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.Selector
|
||||
import io.legado.app.lib.theme.ThemeStore
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
import io.legado.app.ui.widget.text.BadgeView
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import androidx.core.graphics.drawable.toDrawable
|
||||
|
||||
class ThemeBottomNavigationVIew(context: Context, attrs: AttributeSet) :
|
||||
BottomNavigationView(context, attrs) {
|
||||
|
||||
init {
|
||||
val bgColor = context.bottomBackground
|
||||
setBackgroundColor(bgColor)
|
||||
val textIsDark = ColorUtils.isColorLight(bgColor)
|
||||
val textColor = context.getSecondaryTextColor(textIsDark)
|
||||
val colorStateList = Selector.colorBuild()
|
||||
.setDefaultColor(textColor)
|
||||
.setSelectedColor(ThemeStore.accentColor(context)).create()
|
||||
itemIconTintList = colorStateList
|
||||
itemTextColor = colorStateList
|
||||
// val bgColor = context.bottomBackground
|
||||
// setBackgroundColor(bgColor)
|
||||
// val textIsDark = ColorUtils.isColorLight(bgColor)
|
||||
// val textColor = context.getSecondaryTextColor(textIsDark)
|
||||
//
|
||||
// val colorStateList = Selector.colorBuild()
|
||||
// .setDefaultColor(textColor)
|
||||
// .setSelectedColor(ThemeStore.accentColor(context)).create()
|
||||
// itemIconTintList = colorStateList
|
||||
// itemTextColor = colorStateList
|
||||
|
||||
if (AppConfig.isEInkMode) {
|
||||
isItemHorizontalTranslationEnabled = false
|
||||
itemBackground = ColorDrawable(Color.TRANSPARENT)
|
||||
itemBackground = Color.TRANSPARENT.toDrawable()
|
||||
}
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this, null)
|
||||
|
||||
@@ -3,14 +3,15 @@ package io.legado.app.lib.theme.view
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatCheckBox
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import com.google.android.material.checkbox.MaterialCheckBox
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class ThemeCheckBox(context: Context, attrs: AttributeSet) : AppCompatCheckBox(context, attrs) {
|
||||
class ThemeCheckBox(context: Context, attrs: AttributeSet) : MaterialCheckBox(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
}
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import android.content.Context
|
||||
import android.os.Build
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatEditText
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class ThemeEditText @JvmOverloads constructor(
|
||||
@@ -12,12 +12,12 @@ class ThemeEditText @JvmOverloads constructor(
|
||||
attrs: AttributeSet? = null
|
||||
) : AppCompatEditText(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
|
||||
isLocalePreferredLineHeightForMinimumUsed = false
|
||||
}
|
||||
}
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
|
||||
// isLocalePreferredLineHeightForMinimumUsed = false
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -3,14 +3,14 @@ package io.legado.app.lib.theme.view
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.widget.ProgressBar
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class ThemeProgressBar(context: Context, attrs: AttributeSet) : ProgressBar(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
}
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -3,15 +3,16 @@ package io.legado.app.lib.theme.view
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatRadioButton
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import com.google.android.material.radiobutton.MaterialRadioButton
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
class ThemeRadioButton(context: Context, attrs: AttributeSet) :
|
||||
AppCompatRadioButton(context, attrs) {
|
||||
MaterialRadioButton(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
}
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -3,19 +3,19 @@ package io.legado.app.lib.theme.view
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatRadioButton
|
||||
import androidx.appcompat.widget.TooltipCompat
|
||||
import com.google.android.material.radiobutton.MaterialRadioButton
|
||||
import io.legado.app.R
|
||||
import io.legado.app.lib.theme.Selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.dpToPx
|
||||
import io.legado.app.utils.getCompatColor
|
||||
|
||||
class ThemeRadioNoButton(context: Context, attrs: AttributeSet) :
|
||||
AppCompatRadioButton(context, attrs) {
|
||||
MaterialRadioButton(context, attrs) {
|
||||
|
||||
private val isBottomBackground: Boolean
|
||||
|
||||
@@ -29,54 +29,54 @@ class ThemeRadioNoButton(context: Context, attrs: AttributeSet) :
|
||||
}
|
||||
|
||||
private fun initTheme() {
|
||||
when {
|
||||
isInEditMode -> Unit
|
||||
isBottomBackground -> {
|
||||
val accentColor = context.accentColor
|
||||
val isLight = ColorUtils.isColorLight(context.bottomBackground)
|
||||
val textColor = context.getPrimaryTextColor(isLight)
|
||||
val checkedTextColor = if (ColorUtils.isColorLight(accentColor)) {
|
||||
Color.BLACK
|
||||
} else {
|
||||
Color.WHITE
|
||||
}
|
||||
background = Selector.shapeBuild()
|
||||
.setCornerRadius(2.dpToPx())
|
||||
.setStrokeWidth(2.dpToPx())
|
||||
.setCheckedBgColor(accentColor)
|
||||
.setCheckedStrokeColor(accentColor)
|
||||
.setDefaultStrokeColor(textColor)
|
||||
.create()
|
||||
setTextColor(
|
||||
Selector.colorBuild()
|
||||
.setDefaultColor(textColor)
|
||||
.setCheckedColor(checkedTextColor)
|
||||
.create()
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
val accentColor = context.accentColor
|
||||
val defaultTextColor = context.getCompatColor(R.color.primaryText)
|
||||
val checkedTextColor = if (ColorUtils.isColorLight(accentColor)) {
|
||||
Color.BLACK
|
||||
} else {
|
||||
Color.WHITE
|
||||
}
|
||||
background = Selector.shapeBuild()
|
||||
.setCornerRadius(2.dpToPx())
|
||||
.setStrokeWidth(2.dpToPx())
|
||||
.setCheckedBgColor(accentColor)
|
||||
.setCheckedStrokeColor(accentColor)
|
||||
.setDefaultStrokeColor(defaultTextColor)
|
||||
.create()
|
||||
setTextColor(
|
||||
Selector.colorBuild()
|
||||
.setDefaultColor(defaultTextColor)
|
||||
.setCheckedColor(checkedTextColor)
|
||||
.create()
|
||||
)
|
||||
}
|
||||
}
|
||||
// when {
|
||||
// isInEditMode -> Unit
|
||||
// isBottomBackground -> {
|
||||
// val accentColor = context.accentColor
|
||||
// val isLight = ColorUtils.isColorLight(context.bottomBackground)
|
||||
// val textColor = context.getPrimaryTextColor(isLight)
|
||||
// val checkedTextColor = if (ColorUtils.isColorLight(accentColor)) {
|
||||
// Color.BLACK
|
||||
// } else {
|
||||
// Color.WHITE
|
||||
// }
|
||||
// background = Selector.shapeBuild()
|
||||
// .setCornerRadius(2.dpToPx())
|
||||
// .setStrokeWidth(2.dpToPx())
|
||||
// .setCheckedBgColor(accentColor)
|
||||
// .setCheckedStrokeColor(accentColor)
|
||||
// .setDefaultStrokeColor(textColor)
|
||||
// .create()
|
||||
// setTextColor(
|
||||
// Selector.colorBuild()
|
||||
// .setDefaultColor(textColor)
|
||||
// .setCheckedColor(checkedTextColor)
|
||||
// .create()
|
||||
// )
|
||||
// }
|
||||
// else -> {
|
||||
// val accentColor = context.accentColor
|
||||
// val defaultTextColor = context.getCompatColor(R.color.primaryText)
|
||||
// val checkedTextColor = if (ColorUtils.isColorLight(accentColor)) {
|
||||
// Color.BLACK
|
||||
// } else {
|
||||
// Color.WHITE
|
||||
// }
|
||||
// background = Selector.shapeBuild()
|
||||
// .setCornerRadius(2.dpToPx())
|
||||
// .setStrokeWidth(2.dpToPx())
|
||||
// .setCheckedBgColor(accentColor)
|
||||
// .setCheckedStrokeColor(accentColor)
|
||||
// .setDefaultStrokeColor(defaultTextColor)
|
||||
// .create()
|
||||
// setTextColor(
|
||||
// Selector.colorBuild()
|
||||
// .setDefaultColor(defaultTextColor)
|
||||
// .setCheckedColor(checkedTextColor)
|
||||
// .create()
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package io.legado.app.lib.theme.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatSeekBar
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad)
|
||||
*/
|
||||
class ThemeSeekBar(context: Context, attrs: AttributeSet) : AppCompatSeekBar(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package io.legado.app.lib.theme.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import com.google.android.material.slider.Slider
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad)
|
||||
*/
|
||||
class ThemeSlider(context: Context, attrs: AttributeSet) : Slider(context, attrs) {
|
||||
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -2,20 +2,20 @@ package io.legado.app.lib.theme.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.SwitchCompat
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import com.google.android.material.materialswitch.MaterialSwitch
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.applyTint
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad)
|
||||
*/
|
||||
class ThemeSwitch(context: Context, attrs: AttributeSet) : SwitchCompat(context, attrs) {
|
||||
class ThemeSwitch(context: Context, attrs: AttributeSet) : MaterialSwitch(context, attrs) {
|
||||
|
||||
init {
|
||||
if (!isInEditMode) {
|
||||
applyTint(context.accentColor)
|
||||
}
|
||||
|
||||
}
|
||||
// init {
|
||||
// if (!isInEditMode) {
|
||||
// applyTint(context.accentColor)
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -4,13 +4,14 @@ import android.os.Bundle
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableString
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.util.TypedValue
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseActivity
|
||||
import io.legado.app.databinding.ActivityAboutBinding
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.filletBackground
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.filletBackground
|
||||
import io.legado.app.utils.openUrl
|
||||
import io.legado.app.utils.share
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -21,7 +22,7 @@ class AboutActivity : BaseActivity<ActivityAboutBinding>() {
|
||||
override val binding by viewBinding(ActivityAboutBinding::inflate)
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
binding.llAbout.background = filletBackground
|
||||
//binding.llAbout.background = filletBackground
|
||||
val fTag = "aboutFragment"
|
||||
var aboutFragment = supportFragmentManager.findFragmentByTag(fTag)
|
||||
if (aboutFragment == null) aboutFragment = AboutFragment()
|
||||
@@ -30,12 +31,19 @@ class AboutActivity : BaseActivity<ActivityAboutBinding>() {
|
||||
.commit()
|
||||
binding.tvAppSummary.post {
|
||||
kotlin.runCatching {
|
||||
val span = ForegroundColorSpan(accentColor)
|
||||
val typedValue = TypedValue()
|
||||
val context = binding.root.context
|
||||
context.theme.resolveAttribute(
|
||||
com.google.android.material.R.attr.colorPrimary,
|
||||
typedValue,
|
||||
true
|
||||
)
|
||||
val accentColor = typedValue.data
|
||||
val spannableString = SpannableString(binding.tvAppSummary.text)
|
||||
val gzh = getString(R.string.legado_gzh)
|
||||
val start = spannableString.indexOf(gzh)
|
||||
spannableString.setSpan(
|
||||
span, start, start + gzh.length,
|
||||
accentColor, start, start + gzh.length,
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
)
|
||||
binding.tvAppSummary.text = spannableString
|
||||
|
||||
@@ -14,7 +14,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemAppLogBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.LogUtils
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -38,7 +38,7 @@ class AppLogDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.run {
|
||||
toolBar.setBackgroundColor(primaryColor)
|
||||
//toolBar.setBackgroundColor(primaryColor)
|
||||
toolBar.setTitle(R.string.log)
|
||||
toolBar.inflateMenu(R.menu.app_log)
|
||||
toolBar.setOnMenuItemClickListener(this@AppLogDialog)
|
||||
|
||||
@@ -19,7 +19,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.Item1lineTextBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.FileDoc
|
||||
import io.legado.app.utils.FileUtils
|
||||
@@ -47,7 +47,7 @@ class CrashLogsDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.crash_log)
|
||||
binding.toolBar.inflateMenu(R.menu.crash_log)
|
||||
binding.toolBar.setOnMenuItemClickListener(this)
|
||||
|
||||
@@ -18,7 +18,7 @@ import io.legado.app.databinding.ItemReadRecordBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.book.search.SearchActivity
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.applyTint
|
||||
@@ -112,7 +112,7 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.queryHint = getString(R.string.search)
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
|
||||
@@ -7,7 +7,7 @@ import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogUpdateBinding
|
||||
import io.legado.app.help.update.AppUpdate
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.Download
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.toastOnUi
|
||||
@@ -36,7 +36,7 @@ class UpdateDialog() : BaseDialogFragment(R.layout.dialog_update) {
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.title = arguments?.getString("newVersion")
|
||||
val updateBody = arguments?.getString("updateBody")
|
||||
if (updateBody == null) {
|
||||
|
||||
@@ -22,7 +22,7 @@ import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.*
|
||||
@@ -62,9 +62,9 @@ class ImportBookSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_book_source)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
initMenu()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
@@ -93,14 +93,14 @@ class ImportBookSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -15,7 +15,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.DictRule
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.*
|
||||
@@ -50,9 +50,9 @@ class ImportDictRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view)
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_dict_rule)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.tvCancel.visible()
|
||||
@@ -80,14 +80,14 @@ class ImportDictRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view)
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -15,7 +15,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.HttpTTS
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.GSON
|
||||
@@ -53,9 +53,9 @@ class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_tts)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.tvCancel.visible()
|
||||
@@ -83,14 +83,14 @@ class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -21,7 +21,7 @@ import io.legado.app.databinding.DialogCustomGroupBinding
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.*
|
||||
@@ -57,9 +57,9 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_replace_rule)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
initMenu()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
@@ -88,14 +88,14 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
// binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allRules)
|
||||
upSelectText()
|
||||
|
||||
@@ -22,7 +22,7 @@ import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.*
|
||||
@@ -61,9 +61,9 @@ class ImportRssSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_view
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_rss_source)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
initMenu()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
@@ -92,14 +92,14 @@ class ImportRssSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_view
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -9,13 +9,14 @@ import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.help.config.ThemeConfig
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.GSON
|
||||
@@ -25,7 +26,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import io.legado.app.utils.visible
|
||||
import splitties.views.onClick
|
||||
|
||||
class ImportThemeDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
||||
class ImportThemeDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_recycler_view) {
|
||||
|
||||
constructor(source: String, finishOnDismiss: Boolean = false) : this() {
|
||||
arguments = Bundle().apply {
|
||||
@@ -52,9 +53,9 @@ class ImportThemeDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_theme)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.tvCancel.visible()
|
||||
@@ -82,14 +83,14 @@ class ImportThemeDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -15,7 +15,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.TxtTocRule
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemSourceImportBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.CodeDialog
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.GSON
|
||||
@@ -52,9 +52,9 @@ class ImportTxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.import_txt_toc_rule)
|
||||
binding.rotateLoading.visible()
|
||||
//binding.rotateLoading.visible()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.tvCancel.visible()
|
||||
@@ -82,14 +82,14 @@ class ImportTxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
||||
upSelectText()
|
||||
}
|
||||
viewModel.errorLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
binding.tvMsg.apply {
|
||||
text = it
|
||||
visible()
|
||||
}
|
||||
}
|
||||
viewModel.successLiveData.observe(this) {
|
||||
binding.rotateLoading.gone()
|
||||
//binding.rotateLoading.gone()
|
||||
if (it > 0) {
|
||||
adapter.setItems(viewModel.allSources)
|
||||
upSelectText()
|
||||
|
||||
@@ -13,7 +13,7 @@ import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.databinding.DialogOpenUrlConfirmBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.toastOnUi
|
||||
@@ -55,7 +55,7 @@ class OpenUrlConfirmDialog() : BaseDialogFragment(R.layout.dialog_open_url_confi
|
||||
dismiss()
|
||||
return
|
||||
}
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.subtitle = viewModel.sourceName
|
||||
initView()
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import io.legado.app.help.glide.ImageLoader
|
||||
import io.legado.app.help.glide.OkHttpModelLoader
|
||||
import io.legado.app.help.source.SourceVerificationHelp
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ImageProvider
|
||||
import io.legado.app.ui.widget.dialog.PhotoDialog
|
||||
import io.legado.app.utils.applyTint
|
||||
@@ -66,7 +66,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
||||
initMenu()
|
||||
val arguments = arguments ?: return@run
|
||||
viewModel.initData(arguments)
|
||||
toolBar.setBackgroundColor(primaryColor)
|
||||
//toolBar.setBackgroundColor(primaryColor)
|
||||
toolBar.subtitle = arguments.getString("sourceName")
|
||||
sourceOrigin = arguments.getString("sourceOrigin")
|
||||
val imageUrl = arguments.getString("imageUrl") ?: return@run
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.view.MenuItem
|
||||
import android.widget.SeekBar
|
||||
import androidx.activity.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.slider.Slider
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.constant.BookType
|
||||
@@ -152,20 +153,40 @@ class AudioPlayActivity :
|
||||
binding.ivSkipPrevious.setOnClickListener {
|
||||
AudioPlay.prev()
|
||||
}
|
||||
binding.playerProgress.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
binding.tvDurTime.text = progressTimeFormat.format(progress.toLong())
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
// binding.playerProgress.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
// override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
// binding.tvDurTime.text = progressTimeFormat.format(progress.toLong())
|
||||
// }
|
||||
//
|
||||
// override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
// adjustProgress = true
|
||||
// }
|
||||
//
|
||||
// override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
// adjustProgress = false
|
||||
// AudioPlay.adjustProgress(seekBar.progress)
|
||||
// }
|
||||
// })
|
||||
|
||||
// 替换原来的 SeekBar 监听器
|
||||
binding.playerProgress.addOnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
binding.tvDurTime.text = progressTimeFormat.format(value.toLong())
|
||||
}
|
||||
}
|
||||
|
||||
binding.playerProgress.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
adjustProgress = true
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
adjustProgress = false
|
||||
AudioPlay.adjustProgress(seekBar.progress)
|
||||
AudioPlay.adjustProgress(slider.value.toInt())
|
||||
}
|
||||
})
|
||||
|
||||
binding.ivChapter.setOnClickListener {
|
||||
AudioPlay.book?.let {
|
||||
tocActivityResult.launch(it.bookUrl)
|
||||
@@ -275,18 +296,32 @@ class AudioPlayActivity :
|
||||
binding.ivSkipNext.isEnabled =
|
||||
AudioPlay.durChapterIndex < AudioPlay.simulatedChapterSize - 1
|
||||
}
|
||||
// observeEventSticky<Int>(EventBus.AUDIO_SIZE) {
|
||||
// binding.playerProgress.max = it
|
||||
// binding.tvAllTime.text = progressTimeFormat.format(it.toLong())
|
||||
// }
|
||||
// observeEventSticky<Int>(EventBus.AUDIO_PROGRESS) {
|
||||
// if (!adjustProgress) binding.playerProgress.progress = it
|
||||
// binding.tvDurTime.text = progressTimeFormat.format(it.toLong())
|
||||
// }
|
||||
// observeEventSticky<Int>(EventBus.AUDIO_BUFFER_PROGRESS) {
|
||||
// binding.playerProgress.secondaryProgress = it
|
||||
//
|
||||
// }
|
||||
observeEventSticky<Int>(EventBus.AUDIO_SIZE) {
|
||||
binding.playerProgress.max = it
|
||||
binding.playerProgress.valueTo = it.toFloat()
|
||||
binding.tvAllTime.text = progressTimeFormat.format(it.toLong())
|
||||
}
|
||||
|
||||
observeEventSticky<Int>(EventBus.AUDIO_PROGRESS) {
|
||||
if (!adjustProgress) binding.playerProgress.progress = it
|
||||
if (!adjustProgress) binding.playerProgress.value = it.toFloat()
|
||||
binding.tvDurTime.text = progressTimeFormat.format(it.toLong())
|
||||
}
|
||||
observeEventSticky<Int>(EventBus.AUDIO_BUFFER_PROGRESS) {
|
||||
binding.playerProgress.secondaryProgress = it
|
||||
|
||||
observeEventSticky<Int>(EventBus.AUDIO_BUFFER_PROGRESS) {
|
||||
//updateBufferProgress(it)
|
||||
}
|
||||
|
||||
observeEventSticky<Float>(EventBus.AUDIO_SPEED) {
|
||||
binding.tvSpeed.text = String.format(Locale.ROOT, "%.1fX", it)
|
||||
binding.tvSpeed.visible()
|
||||
|
||||
@@ -24,32 +24,32 @@ class TimerSliderPopup(private val context: Context) :
|
||||
isOutsideTouchable = false
|
||||
isFocusable = true
|
||||
|
||||
binding.seekBar.max = 180
|
||||
setProcessTextValue(binding.seekBar.progress)
|
||||
binding.seekBar.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
// 初始化 slider 值
|
||||
binding.slider.valueFrom = 1f
|
||||
binding.slider.valueTo = 180f
|
||||
binding.slider.stepSize = 1f
|
||||
binding.slider.value = AudioPlayService.timeMinute.toFloat()
|
||||
setSliderTextValue(AudioPlayService.timeMinute)
|
||||
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
setProcessTextValue(progress)
|
||||
if (fromUser) {
|
||||
AudioPlay.setTimer(progress)
|
||||
}
|
||||
binding.slider.addOnChangeListener { _, value, fromUser ->
|
||||
setSliderTextValue(value.toInt())
|
||||
if (fromUser) {
|
||||
AudioPlay.setTimer(value.toInt())
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun showAsDropDown(anchor: View?, xoff: Int, yoff: Int, gravity: Int) {
|
||||
super.showAsDropDown(anchor, xoff, yoff, gravity)
|
||||
binding.seekBar.progress = AudioPlayService.timeMinute
|
||||
binding.slider.value = AudioPlayService.timeMinute.toFloat()
|
||||
}
|
||||
|
||||
override fun showAtLocation(parent: View?, gravity: Int, x: Int, y: Int) {
|
||||
super.showAtLocation(parent, gravity, x, y)
|
||||
binding.seekBar.progress = AudioPlayService.timeMinute
|
||||
binding.slider.value = AudioPlayService.timeMinute.toFloat()
|
||||
}
|
||||
|
||||
private fun setProcessTextValue(process: Int) {
|
||||
binding.tvSeekValue.text = context.getString(R.string.timer_m, process)
|
||||
private fun setSliderTextValue(value: Int) {
|
||||
binding.tvSeekValue.text = context.getString(R.string.timer_m, value)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@ import android.text.TextPaint
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.utils.dpToPx
|
||||
import io.legado.app.utils.spToPx
|
||||
import splitties.init.appCtx
|
||||
@@ -20,11 +20,11 @@ class BookmarkDecoration(val adapter: BookmarkAdapter) : RecyclerView.ItemDecora
|
||||
private val headerHeight = 32f.dpToPx()
|
||||
|
||||
private val headerPaint = Paint().apply {
|
||||
color = appCtx.backgroundColor
|
||||
//color = appCtx.backgroundColor
|
||||
}
|
||||
private val textPaint = TextPaint().apply {
|
||||
textSize = 16f.spToPx()
|
||||
color = appCtx.accentColor
|
||||
//color = appCtx.accentColor
|
||||
isAntiAlias = true
|
||||
}
|
||||
private val textRect = Rect()
|
||||
|
||||
@@ -9,7 +9,7 @@ import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.DialogBookmarkBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import io.legado.app.utils.visible
|
||||
@@ -34,7 +34,7 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark, true) {
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
val arguments = arguments ?: let {
|
||||
dismiss()
|
||||
return
|
||||
|
||||
@@ -5,7 +5,9 @@ import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.adapter.DiffRecyclerAdapter
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
@@ -96,19 +98,19 @@ class CacheAdapter(context: Context, private val callBack: CallBack) :
|
||||
}
|
||||
}
|
||||
|
||||
private fun upDownloadIv(iv: ImageView, book: Book) {
|
||||
private fun upDownloadIv(button: MaterialButton, book: Book) {
|
||||
if (book.isLocal) {
|
||||
iv.gone()
|
||||
button.gone()
|
||||
} else {
|
||||
iv.visible()
|
||||
button.visible()
|
||||
CacheBook.cacheBookMap[book.bookUrl]?.let {
|
||||
if (!it.isStop()) {
|
||||
iv.setImageResource(R.drawable.ic_stop_black_24dp)
|
||||
button.icon = ContextCompat.getDrawable(context, R.drawable.ic_stop_black_24dp)
|
||||
} else {
|
||||
iv.setImageResource(R.drawable.ic_play_24dp)
|
||||
button.icon = ContextCompat.getDrawable(context, R.drawable.ic_play_24dp)
|
||||
}
|
||||
} ?: let {
|
||||
iv.setImageResource(R.drawable.ic_play_24dp)
|
||||
} ?: run {
|
||||
button.icon = ContextCompat.getDrawable(context, R.drawable.ic_play_24dp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogChangeCoverBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -49,7 +49,7 @@ class ChangeCoverDialog() : BaseDialogFragment(R.layout.dialog_change_cover),
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.change_cover_source)
|
||||
viewModel.initData(arguments)
|
||||
initMenu()
|
||||
|
||||
@@ -27,9 +27,8 @@ import io.legado.app.data.entities.SearchBook
|
||||
import io.legado.app.databinding.DialogBookChangeSourceBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.elevation
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||
import io.legado.app.ui.book.source.manage.BookSourceActivity
|
||||
@@ -101,7 +100,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
viewModel.initData(arguments, callBack?.oldBook, activity is ReadBookActivity)
|
||||
showTitle()
|
||||
initMenu()
|
||||
@@ -123,7 +122,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
binding.toolBar.subtitle = viewModel.author
|
||||
binding.toolBar.navigationIcon =
|
||||
getCompatDrawable(androidx.appcompat.R.drawable.abc_ic_ab_back_material)
|
||||
binding.toolBar.elevation = requireContext().elevation
|
||||
//binding.toolBar.elevation = requireContext().elevation
|
||||
}
|
||||
|
||||
private fun initMenu() {
|
||||
@@ -195,9 +194,9 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
val mNavButtonViewField = Toolbar::class.java.getDeclaredField("mNavButtonView")
|
||||
mNavButtonViewField.isAccessible = true
|
||||
val navigationView = mNavButtonViewField.get(binding.toolBar) as ImageButton
|
||||
val isLight = ColorUtils.isColorLight(primaryColor)
|
||||
val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
navigationView.setColorFilter(textColor)
|
||||
// val isLight = ColorUtils.isColorLight(primaryColor)
|
||||
// val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
//navigationView.setColorFilter(textColor)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,8 +29,7 @@ import io.legado.app.databinding.DialogChapterChangeSourceBinding
|
||||
import io.legado.app.help.book.BookHelp
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.elevation
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||
import io.legado.app.ui.book.source.manage.BookSourceActivity
|
||||
@@ -111,7 +110,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
viewModel.initData(arguments, callBack?.oldBook, activity is ReadBookActivity)
|
||||
showTitle()
|
||||
initMenu()
|
||||
@@ -157,7 +156,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
|
||||
binding.ivHideToc.setOnClickListener {
|
||||
binding.clToc.gone()
|
||||
}
|
||||
binding.flHideToc.elevation = requireContext().elevation
|
||||
//binding.flHideToc.elevation = requireContext().elevation
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
|
||||
@@ -8,7 +8,7 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
import io.legado.app.databinding.ItemChapterListBinding
|
||||
import io.legado.app.lib.theme.ThemeUtils
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.getCompatColor
|
||||
import io.legado.app.utils.gone
|
||||
import io.legado.app.utils.visible
|
||||
@@ -31,7 +31,7 @@ class ChangeChapterTocAdapter(context: Context, val callback: Callback) :
|
||||
binding.run {
|
||||
val isDur = durChapterIndex == item.index
|
||||
if (isDur) {
|
||||
tvChapterName.setTextColor(context.accentColor)
|
||||
//tvChapterName.setTextColor(context.accentColor)
|
||||
} else {
|
||||
tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText))
|
||||
}
|
||||
|
||||
@@ -5,11 +5,12 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.DialogBookGroupEditBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.MD5Utils
|
||||
import io.legado.app.utils.SelectImageContract
|
||||
@@ -26,7 +27,7 @@ import splitties.init.appCtx
|
||||
import splitties.views.onClick
|
||||
import java.io.FileOutputStream
|
||||
|
||||
class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) {
|
||||
class GroupEditDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_book_group_edit) {
|
||||
|
||||
constructor(bookGroup: BookGroup? = null) : this() {
|
||||
arguments = Bundle().apply {
|
||||
@@ -59,11 +60,11 @@ class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) {
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
@Suppress("DEPRECATION")
|
||||
bookGroup = arguments?.getParcelable("group")
|
||||
bookGroup?.let {
|
||||
|
||||
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
@@ -20,9 +21,9 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemBookGroupManageBinding
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyTint
|
||||
@@ -40,7 +41,7 @@ import kotlinx.coroutines.launch
|
||||
/**
|
||||
* 书籍分组管理
|
||||
*/
|
||||
class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
class GroupManageDialog : BaseBottomSheetDialogFragment(R.layout.dialog_recycler_view),
|
||||
Toolbar.OnMenuItemClickListener {
|
||||
|
||||
private val viewModel: GroupViewModel by viewModels()
|
||||
@@ -49,11 +50,11 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(0.9f, 0.9f)
|
||||
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.group_manage)
|
||||
initView()
|
||||
initData()
|
||||
@@ -67,7 +68,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
val itemTouchCallback = ItemTouchCallback(adapter)
|
||||
itemTouchCallback.isCanDrag = true
|
||||
ItemTouchHelper(itemTouchCallback).attachToRecyclerView(binding.recyclerView)
|
||||
binding.tvOk.setTextColor(requireContext().accentColor)
|
||||
//binding.tvOk.setTextColor(requireContext().accentColor)
|
||||
binding.tvOk.visible()
|
||||
binding.tvOk.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
@@ -120,7 +121,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
binding.run {
|
||||
root.setBackgroundColor(context.backgroundColor)
|
||||
//root.setBackgroundColor(context.backgroundColor)
|
||||
tvGroup.text = item.getManageName(context)
|
||||
swShow.isChecked = item.show
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
@@ -19,9 +20,9 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.DialogBookGroupPickerBinding
|
||||
import io.legado.app.databinding.ItemGroupSelectBinding
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyTint
|
||||
@@ -32,7 +33,7 @@ import kotlinx.coroutines.flow.conflate
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker),
|
||||
class GroupSelectDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_book_group_picker),
|
||||
Toolbar.OnMenuItemClickListener {
|
||||
|
||||
constructor(groupId: Long, requestCode: Int = -1) : this() {
|
||||
@@ -51,11 +52,11 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(0.9f, 0.9f)
|
||||
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
arguments?.let {
|
||||
groupId = it.getLong("groupId")
|
||||
requestCode = it.getInt("requestCode", -1)
|
||||
@@ -78,7 +79,7 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker
|
||||
binding.tvCancel.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
binding.tvOk.setTextColor(requireContext().accentColor)
|
||||
//binding.tvOk.setTextColor(requireContext().accentColor)
|
||||
binding.tvOk.setOnClickListener {
|
||||
callBack?.upGroup(requestCode, groupId)
|
||||
dismissAllowingStateLoss()
|
||||
@@ -119,7 +120,7 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
binding.run {
|
||||
root.setBackgroundColor(context.backgroundColor)
|
||||
//root.setBackgroundColor(context.backgroundColor)
|
||||
cbGroup.text = item.groupName
|
||||
cbGroup.isChecked = (groupId and item.groupId) > 0
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import io.legado.app.databinding.ActivityImportBookBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.model.localBook.LocalBook
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.utils.ArchiveUtils
|
||||
@@ -161,7 +161,7 @@ abstract class BaseImportBookActivity<VM : ViewModel> :
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||
|
||||
@@ -19,7 +19,7 @@ import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.permission.Permissions
|
||||
import io.legado.app.lib.permission.PermissionsCompat
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.ui.book.import.BaseImportBookActivity
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.ui.widget.SelectActionBar
|
||||
@@ -128,7 +128,7 @@ class ImportBookActivity : BaseImportBookActivity<ImportBookViewModel>(),
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
binding.layTop.setBackgroundColor(backgroundColor)
|
||||
//binding.layTop.setBackgroundColor(backgroundColor)
|
||||
binding.tvEmptyMsg.setText(R.string.empty_msg_import_book)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerView.adapter = adapter
|
||||
|
||||
@@ -16,7 +16,7 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.model.remote.RemoteBook
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.book.import.BaseImportBookActivity
|
||||
@@ -80,7 +80,7 @@ class RemoteBookActivity : BaseImportBookActivity<RemoteBookViewModel>(),
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
binding.layTop.setBackgroundColor(backgroundColor)
|
||||
//binding.layTop.setBackgroundColor(backgroundColor)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.selectActionBar.setMainActionText(R.string.add_to_bookshelf)
|
||||
|
||||
@@ -13,7 +13,7 @@ import io.legado.app.data.entities.Server
|
||||
import io.legado.app.data.entities.rule.RowUi
|
||||
import io.legado.app.databinding.DialogWebdavServerBinding
|
||||
import io.legado.app.databinding.ItemSourceEditBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -44,7 +44,7 @@ class ServerConfigDialog() : BaseDialogFragment(R.layout.dialog_webdav_server, t
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//inding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.inflateMenu(R.menu.server_config)
|
||||
binding.toolBar.menu.applyTint(requireContext())
|
||||
binding.toolBar.setOnMenuItemClickListener(this)
|
||||
|
||||
@@ -22,8 +22,8 @@ import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemServerSelectBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -54,7 +54,7 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.setTitle(R.string.server_config)
|
||||
initView()
|
||||
initData()
|
||||
@@ -148,7 +148,7 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
if (payloads.isEmpty()) {
|
||||
binding.root.setBackgroundColor(context.backgroundColor)
|
||||
//binding.root.setBackgroundColor(context.backgroundColor)
|
||||
binding.rbServer.text = item.name
|
||||
binding.rbServer.isChecked = item.id == selectServerId
|
||||
} else {
|
||||
|
||||
@@ -83,7 +83,7 @@ import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class BookInfoActivity :
|
||||
VMBaseActivity<ActivityBookInfoBinding, BookInfoViewModel>(toolBarTheme = Theme.Dark),
|
||||
VMBaseActivity<ActivityBookInfoBinding, BookInfoViewModel>(),
|
||||
GroupSelectDialog.CallBack,
|
||||
ChangeBookSourceDialog.CallBack,
|
||||
ChangeCoverDialog.CallBack,
|
||||
@@ -157,7 +157,9 @@ class BookInfoActivity :
|
||||
|
||||
@SuppressLint("PrivateResource")
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
binding.titleBar.setBackgroundResource(R.color.transparent)
|
||||
|
||||
setSupportActionBar(binding.topBar)
|
||||
|
||||
// binding.refreshLayout?.setColorSchemeColors(accentColor)
|
||||
// binding.llInfo.setBackgroundColor(backgroundColor)
|
||||
// binding.flAction.setBackgroundColor(bottomBackground)
|
||||
|
||||
@@ -14,7 +14,7 @@ import io.legado.app.data.entities.BookGroup
|
||||
import io.legado.app.databinding.ItemArrangeBookBinding
|
||||
import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
import java.util.*
|
||||
@@ -49,7 +49,7 @@ class BookAdapter(context: Context, val callBack: CallBack) :
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
binding.apply {
|
||||
root.setBackgroundColor(context.backgroundColor)
|
||||
//root.setBackgroundColor(context.backgroundColor)
|
||||
tvName.text = item.name
|
||||
tvAuthor.text = item.author
|
||||
tvAuthor.visibility = if (item.author.isEmpty()) View.GONE else View.VISIBLE
|
||||
|
||||
@@ -28,8 +28,8 @@ import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.book.group.GroupManageDialog
|
||||
import io.legado.app.ui.book.group.GroupSelectDialog
|
||||
import io.legado.app.ui.book.info.BookInfoActivity
|
||||
@@ -177,7 +177,7 @@ class BookshelfManageActivity :
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||
@@ -193,7 +193,7 @@ class BookshelfManageActivity :
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(this))
|
||||
binding.recyclerView.adapter = adapter
|
||||
|
||||
@@ -21,8 +21,8 @@ import io.legado.app.data.entities.BookSourcePart
|
||||
import io.legado.app.databinding.DialogSourcePickerBinding
|
||||
import io.legado.app.databinding.Item1lineTextBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.widget.number.NumberPickerDialog
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.dpToPx
|
||||
@@ -65,11 +65,11 @@ class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker),
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.title = "选择书源"
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.recyclerView.adapter = adapter
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.queryHint = getString(R.string.search_book_source)
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
|
||||
@@ -27,7 +27,7 @@ import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.ThemeStore
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.model.CacheBook
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.book.read.config.BgTextConfigDialog
|
||||
@@ -94,7 +94,7 @@ abstract class BaseReadBookActivity :
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
binding.navigationBar.setBackgroundColor(bottomBackground)
|
||||
//binding.navigationBar.setBackgroundColor(bottomBackground)
|
||||
viewModel.permissionDenialLiveData.observe(this) {
|
||||
selectBookFolderResult.launch {
|
||||
mode = HandleFileContract.DIR_SYS
|
||||
@@ -178,20 +178,20 @@ abstract class BaseReadBookActivity :
|
||||
}
|
||||
}
|
||||
upSystemUiVisibilityO(isInMultiWindow, toolBarHide)
|
||||
if (toolBarHide) {
|
||||
setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark())
|
||||
} else {
|
||||
val statusBarColor =
|
||||
if (AppConfig.readBarStyleFollowPage
|
||||
&& ReadBookConfig.durConfig.curBgType() == 0
|
||||
|| useBgMeanColor
|
||||
) {
|
||||
ReadBookConfig.bgMeanColor
|
||||
} else {
|
||||
ThemeStore.statusBarColor(this, AppConfig.isTransparentStatusBar)
|
||||
}
|
||||
setLightStatusBar(ColorUtils.isColorLight(statusBarColor))
|
||||
}
|
||||
// if (toolBarHide) {
|
||||
// setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark())
|
||||
// } else {
|
||||
// val statusBarColor =
|
||||
// if (AppConfig.readBarStyleFollowPage
|
||||
// && ReadBookConfig.durConfig.curBgType() == 0
|
||||
// || useBgMeanColor
|
||||
// ) {
|
||||
// ReadBookConfig.bgMeanColor
|
||||
// } else {
|
||||
// ThemeStore.statusBarColor(this, AppConfig.isTransparentStatusBar)
|
||||
// }
|
||||
// setLightStatusBar(ColorUtils.isColorLight(statusBarColor))
|
||||
// }
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@@ -223,7 +223,7 @@ abstract class BaseReadBookActivity :
|
||||
binding.readMenu.isVisible -> super.upNavigationBarColor()
|
||||
binding.searchMenu.bottomMenuVisible -> super.upNavigationBarColor()
|
||||
bottomDialog > 0 -> super.upNavigationBarColor()
|
||||
!AppConfig.immNavigationBar -> super.upNavigationBarColor()
|
||||
//!AppConfig.immNavigationBar -> super.upNavigationBarColor()
|
||||
else -> setNavigationBarColorAuto(ReadBookConfig.bgMeanColor)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import io.legado.app.help.book.ContentProcessor
|
||||
import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
import io.legado.app.utils.applyTint
|
||||
@@ -45,7 +45,7 @@ class ContentEditDialog : BaseDialogFragment(R.layout.dialog_content_edit) {
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.title = ReadBook.curTextChapter?.title
|
||||
initMenu()
|
||||
binding.toolBar.setOnClickListener {
|
||||
|
||||
@@ -18,7 +18,7 @@ import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.Item1lineTextBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.replace.edit.ReplaceEditActivity
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -50,7 +50,7 @@ class EffectiveReplacesDialog : BaseDialogFragment(R.layout.dialog_recycler_view
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.run {
|
||||
toolBar.setBackgroundColor(primaryColor)
|
||||
//toolBar.setBackgroundColor(primaryColor)
|
||||
toolBar.setTitle(R.string.effective_replaces)
|
||||
recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
recyclerView.adapter = adapter
|
||||
|
||||
@@ -10,12 +10,13 @@ import android.widget.FrameLayout
|
||||
import android.widget.SeekBar
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import com.google.android.material.slider.Slider
|
||||
import io.legado.app.R
|
||||
import io.legado.app.databinding.ViewMangaMenuBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.source.getSourceType
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.model.ReadManga
|
||||
import io.legado.app.ui.browser.WebViewActivity
|
||||
@@ -53,7 +54,7 @@ class MangaMenu @JvmOverloads constructor(
|
||||
loadAnimation(context, R.anim.anim_readbook_bottom_out)
|
||||
}
|
||||
private var isMenuOutAnimating = false
|
||||
private var bgColor = context.bottomBackground
|
||||
//private var bgColor = context.bottomBackground
|
||||
|
||||
private val menuOutListener = object : Animation.AnimationListener {
|
||||
override fun onAnimationStart(animation: Animation) {
|
||||
@@ -99,12 +100,12 @@ class MangaMenu @JvmOverloads constructor(
|
||||
initAnimation()
|
||||
val brightnessBackground = GradientDrawable()
|
||||
brightnessBackground.cornerRadius = 5F.dpToPx()
|
||||
brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
//brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
if (AppConfig.isEInkMode) {
|
||||
titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
bottomMenu.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
} else {
|
||||
bottomMenu.setBackgroundColor(bgColor)
|
||||
//bottomMenu.setBackgroundColor(bgColor)
|
||||
}
|
||||
if (AppConfig.showReadTitleBarAddition) {
|
||||
titleBarAddition.visible()
|
||||
@@ -210,27 +211,30 @@ class MangaMenu @JvmOverloads constructor(
|
||||
ReadManga.moveToPrevChapter(true)
|
||||
}
|
||||
|
||||
seekReadPage.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
callBack.skipToPage(seekBar.progress)
|
||||
}
|
||||
seekReadPage.addOnChangeListener { slider, value, fromUser ->
|
||||
if (fromUser) {
|
||||
callBack.skipToPage(value.toInt())
|
||||
}
|
||||
}
|
||||
seekReadPage.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
vwMenuBg.setOnClickListener(null)
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
binding.vwMenuBg.setOnClickListener(null)
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
binding.vwMenuBg.setOnClickListener { runMenuOut() }
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
vwMenuBg.setOnClickListener { runMenuOut() }
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun upSeekBar(value: Int, count: Int) {
|
||||
binding.seekReadPage.apply {
|
||||
max = count.minus(1)
|
||||
progress = value
|
||||
valueFrom = 0f
|
||||
valueTo = (count - 1).toFloat()
|
||||
this.value = value.toFloat()
|
||||
stepSize = 1f
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ import io.legado.app.help.storage.Backup
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||
@@ -258,8 +258,8 @@ class ReadBookActivity : BaseReadBookActivity(),
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
super.onActivityCreated(savedInstanceState)
|
||||
binding.cursorLeft.setColorFilter(accentColor)
|
||||
binding.cursorRight.setColorFilter(accentColor)
|
||||
//binding.cursorLeft.setColorFilter(accentColor)
|
||||
//binding.cursorRight.setColorFilter(accentColor)
|
||||
binding.cursorLeft.setOnTouchListener(this)
|
||||
binding.cursorRight.setOnTouchListener(this)
|
||||
window.setBackgroundDrawable(null)
|
||||
|
||||
@@ -15,6 +15,7 @@ import android.widget.SeekBar
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import com.google.android.material.slider.Slider
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.ViewReadMenuBinding
|
||||
@@ -26,12 +27,12 @@ import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.source.getSourceType
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.Selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.buttonDisabledColor
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.buttonDisabledColor
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.browser.WebViewActivity
|
||||
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
||||
@@ -51,6 +52,7 @@ import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.visible
|
||||
import splitties.views.onClick
|
||||
import splitties.views.onLongClick
|
||||
import androidx.core.graphics.toColorInt
|
||||
|
||||
/**
|
||||
* 阅读界面菜单
|
||||
@@ -78,23 +80,23 @@ class ReadMenu @JvmOverloads constructor(
|
||||
}
|
||||
private val immersiveMenu: Boolean
|
||||
get() = AppConfig.readBarStyleFollowPage && ReadBookConfig.durConfig.curBgType() == 0
|
||||
private var bgColor: Int = if (immersiveMenu) {
|
||||
kotlin.runCatching {
|
||||
Color.parseColor(ReadBookConfig.durConfig.curBgStr())
|
||||
}.getOrDefault(context.bottomBackground)
|
||||
} else {
|
||||
context.bottomBackground
|
||||
}
|
||||
private var textColor: Int = if (immersiveMenu) {
|
||||
ReadBookConfig.durConfig.curTextColor()
|
||||
} else {
|
||||
context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
}
|
||||
// private var bgColor: Int = if (immersiveMenu) {
|
||||
// kotlin.runCatching {
|
||||
// ReadBookConfig.durConfig.curBgStr().toColorInt()
|
||||
// }.getOrDefault(context.bottomBackground)
|
||||
// } else {
|
||||
// context.bottomBackground
|
||||
// }
|
||||
// private var textColor: Int = if (immersiveMenu) {
|
||||
// ReadBookConfig.durConfig.curTextColor()
|
||||
// } else {
|
||||
// context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
// }
|
||||
|
||||
private var bottomBackgroundList: ColorStateList = Selector.colorBuild()
|
||||
.setDefaultColor(bgColor)
|
||||
.setPressedColor(ColorUtils.darkenColor(bgColor))
|
||||
.create()
|
||||
// private var bottomBackgroundList: ColorStateList = Selector.colorBuild()
|
||||
// .setDefaultColor(bgColor)
|
||||
// .setPressedColor(ColorUtils.darkenColor(bgColor))
|
||||
// .create()
|
||||
private var onMenuOutEnd: (() -> Unit)? = null
|
||||
private val showBrightnessView
|
||||
get() = context.getPrefBoolean(
|
||||
@@ -115,6 +117,7 @@ class ReadMenu @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val menuInListener = object : Animation.AnimationListener {
|
||||
override fun onAnimationStart(animation: Animation) {
|
||||
binding.tvSourceAction.text =
|
||||
@@ -168,50 +171,50 @@ class ReadMenu @JvmOverloads constructor(
|
||||
}
|
||||
initAnimation()
|
||||
if (immersiveMenu) {
|
||||
val lightTextColor = ColorUtils.withAlpha(ColorUtils.lightenColor(textColor), 0.75f)
|
||||
titleBar.setTextColor(textColor)
|
||||
titleBar.setBackgroundColor(bgColor)
|
||||
titleBar.setColorFilter(textColor)
|
||||
tvChapterName.setTextColor(lightTextColor)
|
||||
tvChapterUrl.setTextColor(lightTextColor)
|
||||
// val lightTextColor = ColorUtils.withAlpha(ColorUtils.lightenColor(textColor), 0.75f)
|
||||
// titleBar.setTextColor(textColor)
|
||||
// titleBar.setBackgroundColor(bgColor)
|
||||
// titleBar.setColorFilter(textColor)
|
||||
// tvChapterName.setTextColor(lightTextColor)
|
||||
// tvChapterUrl.setTextColor(lightTextColor)
|
||||
} else if (reset) {
|
||||
val bgColor = context.primaryColor
|
||||
val textColor = context.primaryTextColor
|
||||
titleBar.setTextColor(textColor)
|
||||
titleBar.setBackgroundColor(bgColor)
|
||||
titleBar.setColorFilter(textColor)
|
||||
tvChapterName.setTextColor(textColor)
|
||||
tvChapterUrl.setTextColor(textColor)
|
||||
// val bgColor = context.primaryColor
|
||||
// val textColor = context.primaryTextColor
|
||||
// titleBar.setTextColor(textColor)
|
||||
// titleBar.setBackgroundColor(bgColor)
|
||||
// titleBar.setColorFilter(textColor)
|
||||
// tvChapterName.setTextColor(textColor)
|
||||
// tvChapterUrl.setTextColor(textColor)
|
||||
}
|
||||
val brightnessBackground = GradientDrawable()
|
||||
brightnessBackground.cornerRadius = 5F.dpToPx()
|
||||
brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
//brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
|
||||
llBrightness.background = brightnessBackground
|
||||
if (AppConfig.isEInkMode) {
|
||||
titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
||||
llBottomBg.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
} else {
|
||||
llBottomBg.setBackgroundColor(bgColor)
|
||||
//llBottomBg.setBackgroundColor(bgColor)
|
||||
}
|
||||
fabSearch.backgroundTintList = bottomBackgroundList
|
||||
fabSearch.setColorFilter(textColor)
|
||||
fabAutoPage.backgroundTintList = bottomBackgroundList
|
||||
fabAutoPage.setColorFilter(textColor)
|
||||
fabReplaceRule.backgroundTintList = bottomBackgroundList
|
||||
fabReplaceRule.setColorFilter(textColor)
|
||||
fabNightTheme.backgroundTintList = bottomBackgroundList
|
||||
fabNightTheme.setColorFilter(textColor)
|
||||
tvPre.setTextColor(textColor)
|
||||
tvNext.setTextColor(textColor)
|
||||
ivCatalog.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvCatalog.setTextColor(textColor)
|
||||
ivReadAloud.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvReadAloud.setTextColor(textColor)
|
||||
ivFont.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvFont.setTextColor(textColor)
|
||||
ivSetting.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvSetting.setTextColor(textColor)
|
||||
vwBrightnessPosAdjust.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// fabSearch.backgroundTintList = bottomBackgroundList
|
||||
// fabSearch.setColorFilter(textColor)
|
||||
// fabAutoPage.backgroundTintList = bottomBackgroundList
|
||||
// fabAutoPage.setColorFilter(textColor)
|
||||
// fabReplaceRule.backgroundTintList = bottomBackgroundList
|
||||
// fabReplaceRule.setColorFilter(textColor)
|
||||
// fabNightTheme.backgroundTintList = bottomBackgroundList
|
||||
// fabNightTheme.setColorFilter(textColor)
|
||||
//tvPre.setTextColor(textColor)
|
||||
//tvNext.setTextColor(textColor)
|
||||
// ivCatalog.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvCatalog.setTextColor(textColor)
|
||||
// ivReadAloud.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvReadAloud.setTextColor(textColor)
|
||||
// ivFont.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvFont.setTextColor(textColor)
|
||||
// ivSetting.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvSetting.setTextColor(textColor)
|
||||
// vwBrightnessPosAdjust.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
llBrightness.setOnClickListener(null)
|
||||
seekBrightness.post {
|
||||
seekBrightness.progress = AppConfig.readBrightness
|
||||
@@ -235,35 +238,35 @@ class ReadMenu @JvmOverloads constructor(
|
||||
|
||||
fun refreshMenuColorFilter() {
|
||||
if (immersiveMenu) {
|
||||
binding.titleBar.setColorFilter(textColor)
|
||||
//binding.titleBar.setColorFilter(textColor)
|
||||
}
|
||||
}
|
||||
|
||||
private fun upColorConfig() {
|
||||
bgColor = if (immersiveMenu) {
|
||||
kotlin.runCatching {
|
||||
Color.parseColor(ReadBookConfig.durConfig.curBgStr())
|
||||
}.getOrDefault(context.bottomBackground)
|
||||
} else {
|
||||
context.bottomBackground
|
||||
}
|
||||
textColor = if (immersiveMenu) {
|
||||
ReadBookConfig.durConfig.curTextColor()
|
||||
} else {
|
||||
context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
}
|
||||
bottomBackgroundList = Selector.colorBuild()
|
||||
.setDefaultColor(bgColor)
|
||||
.setPressedColor(ColorUtils.darkenColor(bgColor))
|
||||
.create()
|
||||
// bgColor = if (immersiveMenu) {
|
||||
// kotlin.runCatching {
|
||||
// Color.parseColor(ReadBookConfig.durConfig.curBgStr())
|
||||
// }.getOrDefault(context.bottomBackground)
|
||||
// } else {
|
||||
// context.bottomBackground
|
||||
// }
|
||||
// textColor = if (immersiveMenu) {
|
||||
// ReadBookConfig.durConfig.curTextColor()
|
||||
// } else {
|
||||
// context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
// }
|
||||
// bottomBackgroundList = Selector.colorBuild()
|
||||
// .setDefaultColor(bgColor)
|
||||
// .setPressedColor(ColorUtils.darkenColor(bgColor))
|
||||
// .create()
|
||||
}
|
||||
|
||||
fun upBrightnessState() {
|
||||
if (brightnessAuto()) {
|
||||
binding.ivBrightnessAuto.setColorFilter(context.accentColor)
|
||||
//binding.ivBrightnessAuto.setColorFilter(context.accentColor)
|
||||
binding.seekBrightness.isEnabled = false
|
||||
} else {
|
||||
binding.ivBrightnessAuto.setColorFilter(context.buttonDisabledColor)
|
||||
//binding.ivBrightnessAuto.setColorFilter(context.buttonDisabledColor)
|
||||
binding.seekBrightness.isEnabled = true
|
||||
}
|
||||
setScreenBrightness(AppConfig.readBrightness.toFloat())
|
||||
@@ -399,24 +402,25 @@ class ReadMenu @JvmOverloads constructor(
|
||||
upBrightnessVwPos()
|
||||
}
|
||||
//阅读进度
|
||||
seekReadPage.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
binding.vwMenuBg.setOnClickListener(null)
|
||||
seekReadPage.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
vwMenuBg.setOnClickListener(null)
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
binding.vwMenuBg.setOnClickListener { runMenuOut() }
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
vwMenuBg.setOnClickListener { runMenuOut() }
|
||||
|
||||
val progress = slider.value.toInt()
|
||||
when (AppConfig.progressBarBehavior) {
|
||||
"page" -> ReadBook.skipToPage(seekBar.progress)
|
||||
"page" -> ReadBook.skipToPage(progress - 1)
|
||||
"chapter" -> {
|
||||
if (confirmSkipToChapter) {
|
||||
callBack.skipToChapter(seekBar.progress)
|
||||
callBack.skipToChapter(progress)
|
||||
} else {
|
||||
context.alert("章节跳转确认", "确定要跳转章节吗?") {
|
||||
yesButton {
|
||||
confirmSkipToChapter = true
|
||||
callBack.skipToChapter(seekBar.progress)
|
||||
callBack.skipToChapter(progress)
|
||||
}
|
||||
noButton {
|
||||
upSeekBar()
|
||||
@@ -429,9 +433,9 @@ class ReadMenu @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
//搜索
|
||||
fabSearch.setOnClickListener {
|
||||
runMenuOut {
|
||||
@@ -479,6 +483,7 @@ class ReadMenu @JvmOverloads constructor(
|
||||
callBack.showReadAloudDialog()
|
||||
}
|
||||
}
|
||||
|
||||
//界面
|
||||
llFont.setOnClickListener {
|
||||
runMenuOut {
|
||||
@@ -523,22 +528,54 @@ class ReadMenu @JvmOverloads constructor(
|
||||
binding.seekReadPage.apply {
|
||||
when (AppConfig.progressBarBehavior) {
|
||||
"page" -> {
|
||||
ReadBook.curTextChapter?.let {
|
||||
max = it.pageSize.minus(1)
|
||||
progress = ReadBook.durPageIndex
|
||||
ReadBook.curTextChapter?.let { chapter ->
|
||||
if (chapter.pageSize > 0) {
|
||||
valueFrom = 1f
|
||||
valueTo = chapter.pageSize.toFloat()
|
||||
value = (ReadBook.durPageIndex).coerceIn(1, chapter.pageSize).toFloat()
|
||||
stepSize = 1f
|
||||
} else {
|
||||
valueFrom = 1f
|
||||
valueTo = 1f
|
||||
value = 1f
|
||||
}
|
||||
} ?: run {
|
||||
valueFrom = 1f
|
||||
valueTo = 1f
|
||||
value = 1f
|
||||
}
|
||||
}
|
||||
|
||||
"chapter" -> {
|
||||
max = ReadBook.simulatedChapterSize - 1
|
||||
progress = ReadBook.durChapterIndex
|
||||
valueFrom = 1f
|
||||
valueTo = ReadBook.simulatedChapterSize.toFloat()
|
||||
value = ReadBook.durChapterIndex.toFloat()
|
||||
stepSize = 1f
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// fun upSeekBar() {
|
||||
// binding.seekReadPage.apply {
|
||||
// when (AppConfig.progressBarBehavior) {
|
||||
// "page" -> {
|
||||
// ReadBook.curTextChapter?.let {
|
||||
// max = it.pageSize.minus(1)
|
||||
// progress = ReadBook.durPageIndex
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// "chapter" -> {
|
||||
// max = ReadBook.simulatedChapterSize - 1
|
||||
// progress = ReadBook.durChapterIndex
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
fun setSeekPage(seek: Int) {
|
||||
binding.seekReadPage.progress = seek
|
||||
binding.seekReadPage.value = seek.toFloat() + 1
|
||||
}
|
||||
|
||||
fun setAutoPage(autoPage: Boolean) = binding.run {
|
||||
@@ -549,7 +586,7 @@ class ReadMenu @JvmOverloads constructor(
|
||||
fabAutoPage.setImageResource(R.drawable.ic_auto_page)
|
||||
fabAutoPage.contentDescription = context.getString(R.string.auto_next_page)
|
||||
}
|
||||
fabAutoPage.setColorFilter(textColor)
|
||||
//fabAutoPage.setColorFilter(textColor)
|
||||
}
|
||||
|
||||
private fun upBrightnessVwPos() {
|
||||
|
||||
@@ -12,8 +12,8 @@ import androidx.core.view.isVisible
|
||||
import io.legado.app.R
|
||||
import io.legado.app.databinding.ViewSearchMenuBinding
|
||||
import io.legado.app.lib.theme.Selector
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.book.searchContent.SearchResult
|
||||
import io.legado.app.utils.ColorUtils
|
||||
@@ -35,11 +35,11 @@ class SearchMenu @JvmOverloads constructor(
|
||||
|
||||
private val menuBottomIn: Animation = loadAnimation(context, R.anim.anim_readbook_bottom_in)
|
||||
private val menuBottomOut: Animation = loadAnimation(context, R.anim.anim_readbook_bottom_out)
|
||||
private val bgColor: Int = context.bottomBackground
|
||||
private val textColor: Int = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
private val bottomBackgroundList: ColorStateList =
|
||||
Selector.colorBuild().setDefaultColor(bgColor)
|
||||
.setPressedColor(ColorUtils.darkenColor(bgColor)).create()
|
||||
//private val bgColor: Int = context.bottomBackground
|
||||
//private val textColor: Int = context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor))
|
||||
// private val bottomBackgroundList: ColorStateList =
|
||||
// Selector.colorBuild().setDefaultColor(bgColor)
|
||||
// .setPressedColor(ColorUtils.darkenColor(bgColor)).create()
|
||||
private var onMenuOutEnd: (() -> Unit)? = null
|
||||
private var isMenuOutAnimating = false
|
||||
|
||||
@@ -68,22 +68,22 @@ class SearchMenu @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
llSearchBaseInfo.setBackgroundColor(bgColor)
|
||||
tvCurrentSearchInfo.setTextColor(bottomBackgroundList)
|
||||
llBottomBg.setBackgroundColor(bgColor)
|
||||
fabLeft.backgroundTintList = bottomBackgroundList
|
||||
fabLeft.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
fabRight.backgroundTintList = bottomBackgroundList
|
||||
fabRight.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvMainMenu.setTextColor(textColor)
|
||||
tvSearchResults.setTextColor(textColor)
|
||||
tvSearchExit.setTextColor(textColor)
|
||||
ivMainMenu.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
ivSearchResults.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
ivSearchExit.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
ivSearchContentUp.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
ivSearchContentDown.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvCurrentSearchInfo.setTextColor(textColor)
|
||||
// llSearchBaseInfo.setBackgroundColor(bgColor)
|
||||
// tvCurrentSearchInfo.setTextColor(bottomBackgroundList)
|
||||
// llBottomBg.setBackgroundColor(bgColor)
|
||||
// fabLeft.backgroundTintList = bottomBackgroundList
|
||||
// fabLeft.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// fabRight.backgroundTintList = bottomBackgroundList
|
||||
// fabRight.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvMainMenu.setTextColor(textColor)
|
||||
// tvSearchResults.setTextColor(textColor)
|
||||
// tvSearchExit.setTextColor(textColor)
|
||||
// ivMainMenu.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivSearchResults.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivSearchExit.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivSearchContentUp.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivSearchContentDown.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvCurrentSearchInfo.setTextColor(textColor)
|
||||
applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
|
||||
@@ -8,12 +8,14 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogAutoReadBinding
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.service.BaseReadAloudService
|
||||
@@ -25,23 +27,23 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
class AutoReadDialog : BaseDialogFragment(R.layout.dialog_auto_read) {
|
||||
class AutoReadDialog : BaseBottomSheetDialogFragment(R.layout.dialog_auto_read) {
|
||||
|
||||
private val binding by viewBinding(DialogAutoReadBinding::bind)
|
||||
private val callBack: CallBack? get() = activity as? CallBack
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setBackgroundDrawableResource(R.color.background)
|
||||
decorView.setPadding(0, 0, 0, 0)
|
||||
val attr = attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.gravity = Gravity.BOTTOM
|
||||
attributes = attr
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
// dialog?.window?.run {
|
||||
// clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setBackgroundDrawableResource(R.color.background)
|
||||
// decorView.setPadding(0, 0, 0, 0)
|
||||
// val attr = attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.gravity = Gravity.BOTTOM
|
||||
// attributes = attr
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
@@ -55,20 +57,20 @@ class AutoReadDialog : BaseDialogFragment(R.layout.dialog_auto_read) {
|
||||
dismiss()
|
||||
return
|
||||
}
|
||||
val bg = requireContext().bottomBackground
|
||||
val isLight = ColorUtils.isColorLight(bg)
|
||||
val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
root.setBackgroundColor(bg)
|
||||
tvReadSpeedTitle.setTextColor(textColor)
|
||||
tvReadSpeed.setTextColor(textColor)
|
||||
ivCatalog.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvCatalog.setTextColor(textColor)
|
||||
ivMainMenu.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvMainMenu.setTextColor(textColor)
|
||||
ivAutoPageStop.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvAutoPageStop.setTextColor(textColor)
|
||||
ivSetting.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
tvSetting.setTextColor(textColor)
|
||||
//val bg = requireContext().bottomBackground
|
||||
//val isLight = ColorUtils.isColorLight(bg)
|
||||
//val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
//root.setBackgroundColor(bg)
|
||||
// tvReadSpeedTitle.setTextColor(textColor)
|
||||
// tvReadSpeed.setTextColor(textColor)
|
||||
// ivCatalog.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvCatalog.setTextColor(textColor)
|
||||
// ivMainMenu.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvMainMenu.setTextColor(textColor)
|
||||
// ivAutoPageStop.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvAutoPageStop.setTextColor(textColor)
|
||||
// ivSetting.setColorFilter(textColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvSetting.setTextColor(textColor)
|
||||
initOnChange()
|
||||
initData()
|
||||
initEvent()
|
||||
@@ -77,19 +79,22 @@ class AutoReadDialog : BaseDialogFragment(R.layout.dialog_auto_read) {
|
||||
private fun initData() {
|
||||
val speed = if (ReadBookConfig.autoReadSpeed < 1) 1 else ReadBookConfig.autoReadSpeed
|
||||
binding.tvReadSpeed.text = String.format(Locale.ROOT, "%ds", speed)
|
||||
binding.seekAutoRead.progress = speed
|
||||
binding.seekAutoRead.value = speed.toFloat()
|
||||
}
|
||||
|
||||
private fun initOnChange() {
|
||||
binding.seekAutoRead.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
val speed = if (progress < 1) 1 else progress
|
||||
binding.tvReadSpeed.text = String.format(Locale.ROOT, "%ds", speed)
|
||||
binding.seekAutoRead.addOnChangeListener { slider, value, fromUser ->
|
||||
val speed = if (value < 1) 1 else value.toInt()
|
||||
binding.tvReadSpeed.text = String.format(Locale.ROOT, "%ds", speed)
|
||||
}
|
||||
|
||||
binding.seekAutoRead.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
// 开始滑动时的操作
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
ReadBookConfig.autoReadSpeed =
|
||||
if (binding.seekAutoRead.progress < 1) 1 else binding.seekAutoRead.progress
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
ReadBookConfig.autoReadSpeed = if (slider.value < 1) 1 else slider.value.toInt()
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -13,6 +13,7 @@ import android.view.WindowManager
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.widget.TooltipCompat
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import com.google.android.material.slider.Slider
|
||||
import com.jaredrummler.android.colorpicker.ColorPickerDialog
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -28,9 +29,9 @@ import io.legado.app.help.http.okHttpClient
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.getSecondaryTextColor
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
||||
@@ -100,7 +101,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setBackgroundDrawableResource(R.color.background)
|
||||
//setBackgroundDrawableResource(R.color.background)
|
||||
decorView.setPadding(0, 0, 0, 0)
|
||||
val attr = attributes
|
||||
attr.dimAmount = 0.0f
|
||||
@@ -124,22 +125,22 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
val bg = requireContext().bottomBackground
|
||||
val isLight = ColorUtils.isColorLight(bg)
|
||||
primaryTextColor = requireContext().getPrimaryTextColor(isLight)
|
||||
secondaryTextColor = requireContext().getSecondaryTextColor(isLight)
|
||||
rootView.setBackgroundColor(bg)
|
||||
tvNameTitle.setTextColor(primaryTextColor)
|
||||
tvName.setTextColor(secondaryTextColor)
|
||||
ivEdit.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
tvRestore.setTextColor(primaryTextColor)
|
||||
swDarkStatusIcon.setTextColor(primaryTextColor)
|
||||
swUnderline.setTextColor(primaryTextColor)
|
||||
ivImport.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
ivExport.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
ivDelete.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
tvBgAlpha.setTextColor(primaryTextColor)
|
||||
tvBgImage.setTextColor(primaryTextColor)
|
||||
// val bg = requireContext().bottomBackground
|
||||
// val isLight = ColorUtils.isColorLight(bg)
|
||||
// primaryTextColor = requireContext().getPrimaryTextColor(isLight)
|
||||
// secondaryTextColor = requireContext().getSecondaryTextColor(isLight)
|
||||
// rootView.setBackgroundColor(bg)
|
||||
// tvNameTitle.setTextColor(primaryTextColor)
|
||||
// tvName.setTextColor(secondaryTextColor)
|
||||
// ivEdit.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvRestore.setTextColor(primaryTextColor)
|
||||
// swDarkStatusIcon.setTextColor(primaryTextColor)
|
||||
// swUnderline.setTextColor(primaryTextColor)
|
||||
// ivImport.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivExport.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
// ivDelete.setColorFilter(primaryTextColor, PorterDuff.Mode.SRC_IN)
|
||||
// tvBgAlpha.setTextColor(primaryTextColor)
|
||||
// tvBgImage.setTextColor(primaryTextColor)
|
||||
recyclerView.adapter = adapter
|
||||
adapter.addHeaderView {
|
||||
ItemBgImageBinding.inflate(layoutInflater, it, false).apply {
|
||||
@@ -162,7 +163,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
|
||||
binding.tvName.text = name.ifBlank { "文字" }
|
||||
binding.swDarkStatusIcon.isChecked = curStatusIconDark()
|
||||
binding.swUnderline.isChecked = underline
|
||||
binding.sbBgAlpha.progress = bgAlpha
|
||||
binding.sbBgAlpha.value = bgAlpha.toFloat()
|
||||
}
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@@ -245,13 +246,17 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
|
||||
toastOnUi("数量已是最少,不能删除.")
|
||||
}
|
||||
}
|
||||
binding.sbBgAlpha.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
ReadBookConfig.bgAlpha = progress
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(3))
|
||||
binding.sbBgAlpha.addOnChangeListener { slider, value, fromUser ->
|
||||
ReadBookConfig.bgAlpha = value.toInt()
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(3))
|
||||
}
|
||||
|
||||
binding.sbBgAlpha.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
// 可留空
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(3))
|
||||
}
|
||||
})
|
||||
|
||||
@@ -8,14 +8,14 @@ import android.util.AttributeSet
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.ui.widget.text.StrokeTextView
|
||||
|
||||
|
||||
class ChineseConverter(context: Context, attrs: AttributeSet?) : StrokeTextView(context, attrs) {
|
||||
|
||||
private val spannableString = SpannableString("简/繁")
|
||||
private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor)
|
||||
// private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor)
|
||||
private var onChanged: (() -> Unit)? = null
|
||||
|
||||
init {
|
||||
@@ -29,11 +29,11 @@ class ChineseConverter(context: Context, attrs: AttributeSet?) : StrokeTextView(
|
||||
}
|
||||
|
||||
private fun upUi(type: Int) {
|
||||
spannableString.removeSpan(enabledSpan)
|
||||
when (type) {
|
||||
1 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
2 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
}
|
||||
//spannableString.removeSpan(enabledSpan)
|
||||
// when (type) {
|
||||
// 1 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
// 2 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
// }
|
||||
text = spannableString
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.data.entities.HttpTTS
|
||||
import io.legado.app.databinding.DialogHttpTtsEditBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.login.SourceLoginActivity
|
||||
import io.legado.app.ui.widget.code.addJsPattern
|
||||
@@ -45,7 +45,7 @@ class HttpTtsEditDialog() : BaseDialogFragment(R.layout.dialog_http_tts_edit, tr
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.tvUrl.run {
|
||||
addLegadoPattern()
|
||||
addJsonPattern()
|
||||
|
||||
@@ -19,8 +19,8 @@ import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.lib.prefs.fragment.PreferenceFragment
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.book.read.page.provider.ChapterProvider
|
||||
@@ -37,16 +37,16 @@ class MoreConfigDialog : BasePrefDialogFragment() {
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setBackgroundDrawableResource(R.color.background)
|
||||
decorView.setPadding(0, 0, 0, 0)
|
||||
val attr = attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.gravity = Gravity.BOTTOM
|
||||
attributes = attr
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 360.dpToPx())
|
||||
}
|
||||
// dialog?.window?.run {
|
||||
// clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setBackgroundDrawableResource(R.color.background)
|
||||
// decorView.setPadding(0, 0, 0, 0)
|
||||
// val attr = attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.gravity = Gravity.BOTTOM
|
||||
// attributes = attr
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 360.dpToPx())
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
@@ -56,7 +56,7 @@ class MoreConfigDialog : BasePrefDialogFragment() {
|
||||
): View {
|
||||
(activity as ReadBookActivity).bottomDialog++
|
||||
val view = LinearLayout(context)
|
||||
view.setBackgroundColor(requireContext().bottomBackground)
|
||||
//view.setBackgroundColor(requireContext().bottomBackground)
|
||||
view.id = R.id.tag1
|
||||
container?.addView(view)
|
||||
return view
|
||||
@@ -93,7 +93,7 @@ class MoreConfigDialog : BasePrefDialogFragment() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
listView.setEdgeEffectColor(primaryColor)
|
||||
//listView.setEdgeEffectColor(primaryColor)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.databinding.DialogReadPaddingBinding
|
||||
@@ -20,13 +21,13 @@ class PaddingConfigDialog : BaseDialogFragment(R.layout.dialog_read_padding) {
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.let {
|
||||
it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
val attr = it.attributes
|
||||
attr.dimAmount = 0.0f
|
||||
it.attributes = attr
|
||||
}
|
||||
setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// dialog?.window?.let {
|
||||
// it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// val attr = it.attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// it.attributes = attr
|
||||
// }
|
||||
// setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -111,11 +112,11 @@ class PaddingConfigDialog : BaseDialogFragment(R.layout.dialog_read_padding) {
|
||||
ReadBookConfig.footerPaddingRight = it
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
|
||||
}
|
||||
cbShowTopLine.onCheckedChangeListener = { _, isChecked ->
|
||||
cbShowTopLine.setOnCheckedChangeListener { _, isChecked ->
|
||||
ReadBookConfig.showHeaderLine = isChecked
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
|
||||
}
|
||||
cbShowBottomLine.onCheckedChangeListener = { _, isChecked ->
|
||||
cbShowBottomLine.setOnCheckedChangeListener { _, isChecked ->
|
||||
ReadBookConfig.showFooterLine = isChecked
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.view.KeyEvent
|
||||
import android.view.ViewGroup
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.DialogPageKeyBinding
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.utils.getPrefString
|
||||
import io.legado.app.utils.hideSoftInput
|
||||
import io.legado.app.utils.putPrefString
|
||||
@@ -26,7 +26,7 @@ class PageKeyDialog(context: Context) : Dialog(context) {
|
||||
init {
|
||||
setContentView(binding.root)
|
||||
binding.run {
|
||||
contentView.setBackgroundColor(context.backgroundColor)
|
||||
//contentView.setBackgroundColor(context.backgroundColor)
|
||||
etPrev.setText(context.getPrefString(PreferKey.prevKeys))
|
||||
etNext.setText(context.getPrefString(PreferKey.nextKeys))
|
||||
tvReset.onClick {
|
||||
|
||||
@@ -18,8 +18,8 @@ import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.prefs.SwitchPreference
|
||||
import io.legado.app.lib.prefs.fragment.PreferenceFragment
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.service.BaseReadAloudService
|
||||
import io.legado.app.utils.GSON
|
||||
@@ -36,8 +36,8 @@ class ReadAloudConfigDialog : BasePrefDialogFragment() {
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
setBackgroundDrawableResource(R.color.transparent)
|
||||
setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
//setBackgroundDrawableResource(R.color.transparent)
|
||||
//setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class ReadAloudConfigDialog : BasePrefDialogFragment() {
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
val view = LinearLayout(requireContext())
|
||||
view.setBackgroundColor(requireContext().backgroundColor)
|
||||
//view.setBackgroundColor(requireContext().backgroundColor)
|
||||
view.id = R.id.tag1
|
||||
container?.addView(view)
|
||||
return view
|
||||
@@ -88,7 +88,7 @@ class ReadAloudConfigDialog : BasePrefDialogFragment() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
listView.setEdgeEffectColor(primaryColor)
|
||||
//listView.setEdgeEffectColor(primaryColor)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
||||
@@ -8,14 +8,17 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import android.widget.SeekBar
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.google.android.material.slider.Slider
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.databinding.DialogReadAloudBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.service.BaseReadAloudService
|
||||
@@ -25,22 +28,22 @@ import io.legado.app.utils.*
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
|
||||
class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
||||
class ReadAloudDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_aloud) {
|
||||
private val callBack: CallBack? get() = activity as? CallBack
|
||||
private val binding by viewBinding(DialogReadAloudBinding::bind)
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setBackgroundDrawableResource(R.color.background)
|
||||
decorView.setPadding(0, 0, 0, 0)
|
||||
val attr = attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.gravity = Gravity.BOTTOM
|
||||
attributes = attr
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
// dialog?.window?.run {
|
||||
// clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setBackgroundDrawableResource(R.color.background)
|
||||
// decorView.setPadding(0, 0, 0, 0)
|
||||
// val attr = attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.gravity = Gravity.BOTTOM
|
||||
// attributes = attr
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
@@ -54,32 +57,32 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
||||
dismiss()
|
||||
return
|
||||
}
|
||||
val bg = requireContext().bottomBackground
|
||||
val isLight = ColorUtils.isColorLight(bg)
|
||||
val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
//val bg = requireContext().bottomBackground
|
||||
//val isLight = ColorUtils.isColorLight(bg)
|
||||
//val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
binding.run {
|
||||
rootView.setBackgroundColor(bg)
|
||||
tvPre.setTextColor(textColor)
|
||||
tvNext.setTextColor(textColor)
|
||||
ivPlayPrev.setColorFilter(textColor)
|
||||
ivPlayPause.setColorFilter(textColor)
|
||||
ivPlayNext.setColorFilter(textColor)
|
||||
ivStop.setColorFilter(textColor)
|
||||
ivTimer.setColorFilter(textColor)
|
||||
tvTimer.setTextColor(textColor)
|
||||
ivTtsSpeechReduce.setColorFilter(textColor)
|
||||
tvTtsSpeed.setTextColor(textColor)
|
||||
tvTtsSpeedValue.setTextColor(textColor)
|
||||
ivTtsSpeechAdd.setColorFilter(textColor)
|
||||
ivCatalog.setColorFilter(textColor)
|
||||
tvCatalog.setTextColor(textColor)
|
||||
ivMainMenu.setColorFilter(textColor)
|
||||
tvMainMenu.setTextColor(textColor)
|
||||
ivToBackstage.setColorFilter(textColor)
|
||||
tvToBackstage.setTextColor(textColor)
|
||||
ivSetting.setColorFilter(textColor)
|
||||
tvSetting.setTextColor(textColor)
|
||||
cbTtsFollowSys.setTextColor(textColor)
|
||||
// rootView.setBackgroundColor(bg)
|
||||
// tvPre.setTextColor(textColor)
|
||||
// tvNext.setTextColor(textColor)
|
||||
// ivPlayPrev.setColorFilter(textColor)
|
||||
// ivPlayPause.setColorFilter(textColor)
|
||||
// ivPlayNext.setColorFilter(textColor)
|
||||
// ivStop.setColorFilter(textColor)
|
||||
// ivTimer.setColorFilter(textColor)
|
||||
// tvTimer.setTextColor(textColor)
|
||||
// ivTtsSpeechReduce.setColorFilter(textColor)
|
||||
// tvTtsSpeed.setTextColor(textColor)
|
||||
// tvTtsSpeedValue.setTextColor(textColor)
|
||||
// ivTtsSpeechAdd.setColorFilter(textColor)
|
||||
// ivCatalog.setColorFilter(textColor)
|
||||
// tvCatalog.setTextColor(textColor)
|
||||
// ivMainMenu.setColorFilter(textColor)
|
||||
// tvMainMenu.setTextColor(textColor)
|
||||
// ivToBackstage.setColorFilter(textColor)
|
||||
// tvToBackstage.setTextColor(textColor)
|
||||
// ivSetting.setColorFilter(textColor)
|
||||
// tvSetting.setTextColor(textColor)
|
||||
// cbTtsFollowSys.setTextColor(textColor)
|
||||
}
|
||||
initData()
|
||||
initEvent()
|
||||
@@ -117,50 +120,71 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
||||
upTtsSpeechRateEnabled(!isChecked)
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
ivTtsSpeechReduce.setOnClickListener {
|
||||
seekTtsSpeechRate.progress = AppConfig.ttsSpeechRate - 1
|
||||
AppConfig.ttsSpeechRate -= 1
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
ivTtsSpeechAdd.setOnClickListener {
|
||||
seekTtsSpeechRate.progress = AppConfig.ttsSpeechRate + 1
|
||||
AppConfig.ttsSpeechRate += 1
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
|
||||
ivTimer.setOnClickListener {
|
||||
AppConfig.ttsTimer = seekTimer.progress
|
||||
AppConfig.ttsTimer = seekTimer.value.toInt()
|
||||
toastOnUi("保存设定时间成功!")
|
||||
}
|
||||
tvTimer.setOnClickListener {
|
||||
|
||||
// 设置初始值
|
||||
seekTtsSpeechRate.value = AppConfig.ttsSpeechRate.toFloat()
|
||||
seekTimer.value = if (BaseReadAloudService.timeMinute > 0)
|
||||
BaseReadAloudService.timeMinute.toFloat()
|
||||
else AppConfig.ttsTimer.toFloat()
|
||||
|
||||
// 减速按钮逻辑
|
||||
ivTtsSpeechReduce.setOnClickListener {
|
||||
val newValue = (seekTtsSpeechRate.value - 1).coerceAtLeast(seekTtsSpeechRate.valueFrom)
|
||||
seekTtsSpeechRate.value = newValue
|
||||
AppConfig.ttsSpeechRate = newValue.toInt()
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
|
||||
// 加速按钮逻辑
|
||||
ivTtsSpeechAdd.setOnClickListener {
|
||||
val newValue = (seekTtsSpeechRate.value + 1).coerceAtMost(seekTtsSpeechRate.valueTo)
|
||||
seekTtsSpeechRate.value = newValue
|
||||
AppConfig.ttsSpeechRate = newValue.toInt()
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
|
||||
btnTimer.setOnClickListener {
|
||||
val times = intArrayOf(0, 5, 10, 15, 30, 60, 90, 180)
|
||||
val timeKeys = times.map { "$it 分钟" }
|
||||
context?.selector("设定时间", timeKeys) { _, index ->
|
||||
ReadAloud.setTimer(requireContext(), times[index])
|
||||
upTimerText(times[index])
|
||||
}
|
||||
}
|
||||
|
||||
//设置保存的默认值
|
||||
seekTtsSpeechRate.progress = AppConfig.ttsSpeechRate
|
||||
seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
super.onProgressChanged(seekBar, progress, fromUser)
|
||||
upTtsSpeechRateText(progress)
|
||||
seekTtsSpeechRate.addOnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
upTtsSpeechRateText(value.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
AppConfig.ttsSpeechRate = seekBar.progress
|
||||
seekTtsSpeechRate.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {}
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
AppConfig.ttsSpeechRate = slider.value.toInt()
|
||||
upTtsSpeechRate()
|
||||
}
|
||||
})
|
||||
seekTimer.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
upTimerText(progress)
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
ReadAloud.setTimer(requireContext(), seekTimer.progress)
|
||||
seekTimer.addOnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
upTimerText(value.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
seekTimer.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {}
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
ReadAloud.setTimer(requireContext(), slider.value.toInt())
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
private fun upTtsSpeechRateEnabled(enabled: Boolean) {
|
||||
@@ -175,39 +199,40 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
||||
|
||||
private fun upPlayState() {
|
||||
if (!BaseReadAloudService.pause) {
|
||||
binding.ivPlayPause.setImageResource(R.drawable.ic_pause_24dp)
|
||||
binding.ivPlayPause.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_pause_24dp)
|
||||
binding.ivPlayPause.contentDescription = getString(R.string.pause)
|
||||
} else {
|
||||
binding.ivPlayPause.setImageResource(R.drawable.ic_play_24dp)
|
||||
binding.ivPlayPause.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_play_24dp)
|
||||
binding.ivPlayPause.contentDescription = getString(R.string.audio_play)
|
||||
}
|
||||
val bg = requireContext().bottomBackground
|
||||
val isLight = ColorUtils.isColorLight(bg)
|
||||
val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
binding.ivPlayPause.setColorFilter(textColor)
|
||||
|
||||
// val bg = requireContext().bottomBackground
|
||||
// val isLight = ColorUtils.isColorLight(bg)
|
||||
// val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
// binding.ivPlayPause.iconTint = ColorStateList.valueOf(textColor)
|
||||
}
|
||||
|
||||
private fun upSeekTimer() {
|
||||
binding.seekTimer.post {
|
||||
if (BaseReadAloudService.timeMinute > 0) {
|
||||
binding.seekTimer.progress = BaseReadAloudService.timeMinute
|
||||
binding.seekTimer.value = if (BaseReadAloudService.timeMinute > 0) {
|
||||
BaseReadAloudService.timeMinute.toFloat()
|
||||
} else {
|
||||
binding.seekTimer.progress = AppConfig.ttsTimer
|
||||
AppConfig.ttsTimer.toFloat()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun upTimerText(timeMinute: Int) {
|
||||
if (timeMinute < 0) {
|
||||
binding.tvTimer.text = requireContext().getString(R.string.timer_m, 0)
|
||||
binding.btnTimer.text = requireContext().getString(R.string.timer_m, 0)
|
||||
} else {
|
||||
binding.tvTimer.text = requireContext().getString(R.string.timer_m, timeMinute)
|
||||
binding.btnTimer.text = requireContext().getString(R.string.timer_m, timeMinute)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun upTtsSpeechRateText(value: Int) {
|
||||
binding.tvTtsSpeedValue.text = ((value + 5) / 10f).toString()
|
||||
binding.tvTtsSpeedValue.text = value.toString()
|
||||
}
|
||||
|
||||
private fun upTtsSpeechRate() {
|
||||
@@ -220,7 +245,10 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
||||
|
||||
override fun observeLiveBus() {
|
||||
observeEvent<Int>(EventBus.ALOUD_STATE) { upPlayState() }
|
||||
observeEvent<Int>(EventBus.READ_ALOUD_DS) { binding.seekTimer.progress = it }
|
||||
observeEvent<Int>(EventBus.READ_ALOUD_DS) {
|
||||
val value = it.coerceIn(binding.seekTimer.valueFrom.toInt(), binding.seekTimer.valueTo.toInt())
|
||||
binding.seekTimer.value = value.toFloat()
|
||||
}
|
||||
}
|
||||
|
||||
interface CallBack {
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.view.WindowManager
|
||||
import androidx.core.view.get
|
||||
import com.github.liuyueyi.quick.transfer.constants.TransType
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseBottomSheetDialogFragment
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
@@ -18,9 +19,9 @@ import io.legado.app.databinding.ItemReadStyleBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.font.FontSelectDialog
|
||||
@@ -33,7 +34,7 @@ import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import splitties.views.onLongClick
|
||||
|
||||
class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_style),
|
||||
FontSelectDialog.CallBack {
|
||||
|
||||
private val binding by viewBinding(DialogReadBookStyleBinding::bind)
|
||||
@@ -42,16 +43,16 @@ class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.run {
|
||||
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
setBackgroundDrawableResource(R.color.background)
|
||||
decorView.setPadding(0, 0, 0, 0)
|
||||
val attr = attributes
|
||||
attr.dimAmount = 0.0f
|
||||
attr.gravity = Gravity.BOTTOM
|
||||
attributes = attr
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
// dialog?.window?.run {
|
||||
// clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setBackgroundDrawableResource(R.color.background)
|
||||
// decorView.setPadding(0, 0, 0, 0)
|
||||
// val attr = attributes
|
||||
// attr.dimAmount = 0.0f
|
||||
// attr.gravity = Gravity.BOTTOM
|
||||
// attributes = attr
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -68,13 +69,13 @@ class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
val bg = requireContext().bottomBackground
|
||||
val isLight = ColorUtils.isColorLight(bg)
|
||||
val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
rootView.setBackgroundColor(bg)
|
||||
tvPageAnim.setTextColor(textColor)
|
||||
tvBgTs.setTextColor(textColor)
|
||||
tvShareLayout.setTextColor(textColor)
|
||||
//val bg = requireContext().bottomBackground
|
||||
//val isLight = ColorUtils.isColorLight(bg)
|
||||
//val textColor = requireContext().getPrimaryTextColor(isLight)
|
||||
// rootView.setBackgroundColor(bg)
|
||||
// tvPageAnim.setTextColor(textColor)
|
||||
// tvBgTs.setTextColor(textColor)
|
||||
// tvShareLayout.setTextColor(textColor)
|
||||
dsbTextSize.valueFormat = {
|
||||
(it + 5).toString()
|
||||
}
|
||||
@@ -87,10 +88,10 @@ class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
rvStyle.adapter = styleAdapter
|
||||
styleAdapter.addFooterView {
|
||||
ItemReadStyleBinding.inflate(layoutInflater, it, false).apply {
|
||||
ivStyle.setPadding(6.dpToPx(), 6.dpToPx(), 6.dpToPx(), 6.dpToPx())
|
||||
ivStyle.setText(null)
|
||||
ivStyle.setColorFilter(textColor)
|
||||
ivStyle.borderColor = textColor
|
||||
// ivStyle.setPadding(6.dpToPx(), 6.dpToPx(), 6.dpToPx(), 6.dpToPx())
|
||||
// ivStyle.setText(null)
|
||||
// ivStyle.setColorFilter(textColor)
|
||||
// ivStyle.borderColor = textColor
|
||||
ivStyle.setImageResource(R.drawable.ic_add)
|
||||
root.setOnClickListener {
|
||||
ReadBookConfig.configList.add(ReadBookConfig.Config())
|
||||
@@ -133,13 +134,28 @@ class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
tvTip.setOnClickListener {
|
||||
TipConfigDialog().show(childFragmentManager, "tipConfigDialog")
|
||||
}
|
||||
rgPageAnim.setOnCheckedChangeListener { _, checkedId ->
|
||||
// rgPageAnim.setOnCheckedChangeListener { _, checkedId ->
|
||||
// ReadBook.book?.setPageAnim(-1)
|
||||
// ReadBookConfig.pageAnim = binding.rgPageAnim.getIndexById(checkedId)
|
||||
// callBack?.upPageAnim()
|
||||
// ReadBook.loadContent(false)
|
||||
// }
|
||||
binding.rgPageAnim.setOnCheckedStateChangeListener { group, checkedIds ->
|
||||
val checkedId = checkedIds.firstOrNull() ?: return@setOnCheckedStateChangeListener
|
||||
ReadBook.book?.setPageAnim(-1)
|
||||
ReadBookConfig.pageAnim = binding.rgPageAnim.getIndexById(checkedId)
|
||||
ReadBookConfig.pageAnim = when (checkedId) {
|
||||
R.id.rb_anim0 -> 0 // 覆盖动画
|
||||
R.id.rb_anim1 -> 1 // 滑动动画
|
||||
R.id.rb_simulation_anim -> 2 // 仿真翻页
|
||||
R.id.rb_scroll_anim -> 3 // 滚动动画
|
||||
R.id.rb_no_anim -> 4 // 无动画
|
||||
else -> 0
|
||||
}
|
||||
callBack?.upPageAnim()
|
||||
ReadBook.loadContent(false)
|
||||
}
|
||||
cbShareLayout.onCheckedChangeListener = { _, isChecked ->
|
||||
|
||||
cbShareLayout.setOnCheckedChangeListener { _, isChecked ->
|
||||
ReadBookConfig.shareLayout = isChecked
|
||||
upView()
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(1, 2, 5))
|
||||
@@ -224,9 +240,9 @@ class ReadStyleDialog : BaseDialogFragment(R.layout.dialog_read_book_style),
|
||||
binding.apply {
|
||||
ivStyle.setText(item.name.ifBlank { "文字" })
|
||||
ivStyle.setTextColor(item.curTextColor())
|
||||
ivStyle.setImageDrawable(item.curBgDrawable(100, 150))
|
||||
//ivStyle.setImageDrawable(item.curBgDrawable(100, 150))
|
||||
if (ReadBookConfig.styleSelect == holder.layoutPosition) {
|
||||
ivStyle.borderColor = accentColor
|
||||
//ivStyle.borderColor = accentColor
|
||||
ivStyle.setTextBold(true)
|
||||
} else {
|
||||
ivStyle.borderColor = item.curTextColor()
|
||||
|
||||
@@ -24,7 +24,7 @@ import io.legado.app.help.DirectLinkUpload
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.association.ImportHttpTtsDialog
|
||||
@@ -89,7 +89,7 @@ class SpeakEngineDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 0.9f)
|
||||
//setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 0.9f)
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -99,9 +99,9 @@ class SpeakEngineDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
toolBar.setBackgroundColor(primaryColor)
|
||||
//toolBar.setBackgroundColor(primaryColor)
|
||||
toolBar.setTitle(R.string.speak_engine)
|
||||
recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//recyclerView.setEdgeEffectColor(primaryColor)
|
||||
recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
recyclerView.adapter = adapter
|
||||
adapter.addHeaderView {
|
||||
|
||||
@@ -8,7 +8,7 @@ import android.util.AttributeSet
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.ui.widget.text.StrokeTextView
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ class TextFontWeightConverter(context: Context, attrs: AttributeSet?) :
|
||||
StrokeTextView(context, attrs) {
|
||||
|
||||
private val spannableString = SpannableString(context.getString(R.string.font_weight_text))
|
||||
private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor)
|
||||
//private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor)
|
||||
private var onChanged: (() -> Unit)? = null
|
||||
|
||||
init {
|
||||
@@ -31,12 +31,12 @@ class TextFontWeightConverter(context: Context, attrs: AttributeSet?) :
|
||||
|
||||
@Suppress("MemberVisibilityCanBePrivate")
|
||||
fun upUi(type: Int) {
|
||||
spannableString.removeSpan(enabledSpan)
|
||||
when (type) {
|
||||
0 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
1 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
2 -> spannableString.setSpan(enabledSpan, 4, 5, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
}
|
||||
// spannableString.removeSpan(enabledSpan)
|
||||
// when (type) {
|
||||
// 0 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
// 1 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
// 2 -> spannableString.setSpan(enabledSpan, 4, 5, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
|
||||
// }
|
||||
text = spannableString
|
||||
}
|
||||
|
||||
|
||||
@@ -26,10 +26,10 @@ import io.legado.app.data.entities.SearchKeyword
|
||||
import io.legado.app.databinding.ActivityBookSearchBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.Selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.book.info.BookInfoActivity
|
||||
import io.legado.app.ui.book.source.manage.BookSourceActivity
|
||||
@@ -88,7 +88,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
||||
private var isManualStopSearch = false
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
binding.llInputHelp.setBackgroundColor(backgroundColor)
|
||||
//binding.llInputHelp.setBackgroundColor(backgroundColor)
|
||||
initRecyclerView()
|
||||
initSearchView()
|
||||
initOtherView()
|
||||
@@ -178,7 +178,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.queryHint = getString(R.string.search_book_key)
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
@@ -212,9 +212,9 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.rvBookshelfSearch.setEdgeEffectColor(primaryColor)
|
||||
binding.rvHistoryKey.setEdgeEffectColor(primaryColor)
|
||||
// binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
// binding.rvBookshelfSearch.setEdgeEffectColor(primaryColor)
|
||||
// binding.rvHistoryKey.setEdgeEffectColor(primaryColor)
|
||||
binding.rvBookshelfSearch.layoutManager = FlexboxLayoutManager(this)
|
||||
binding.rvBookshelfSearch.adapter = bookAdapter
|
||||
binding.rvBookshelfSearch.applyNavigationBarMargin()
|
||||
@@ -266,8 +266,8 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
||||
private fun initOtherView() {
|
||||
binding.fbStartStop.backgroundTintList =
|
||||
Selector.colorBuild()
|
||||
.setDefaultColor(accentColor)
|
||||
.setPressedColor(ColorUtils.darkenColor(accentColor))
|
||||
// .setDefaultColor(accentColor)
|
||||
// .setPressedColor(ColorUtils.darkenColor(accentColor))
|
||||
.create()
|
||||
binding.fbStartStop.setOnClickListener {
|
||||
if (viewModel.isSearchLiveData.value == true) {
|
||||
|
||||
@@ -17,7 +17,7 @@ import io.legado.app.data.entities.BookSourcePart
|
||||
import io.legado.app.databinding.DialogSearchScopeBinding
|
||||
import io.legado.app.databinding.ItemCheckBoxBinding
|
||||
import io.legado.app.databinding.ItemRadioButtonBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.flowWithLifecycleAndDatabaseChange
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -50,7 +50,7 @@ class SearchScopeDialog : BaseDialogFragment(R.layout.dialog_search_scope) {
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
//binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.recyclerView.adapter = adapter
|
||||
initMenu()
|
||||
initSearchView()
|
||||
|
||||
@@ -22,9 +22,9 @@ import io.legado.app.databinding.ActivitySearchContentBinding
|
||||
import io.legado.app.help.IntentData
|
||||
import io.legado.app.help.book.BookHelp
|
||||
import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.ColorUtils
|
||||
@@ -61,13 +61,13 @@ class SearchContentActivity :
|
||||
private var initJob: Job? = null
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
val bbg = bottomBackground
|
||||
val btc = getPrimaryTextColor(ColorUtils.isColorLight(bbg))
|
||||
binding.llSearchBaseInfo.setBackgroundColor(bbg)
|
||||
// val bbg = bottomBackground
|
||||
// val btc = getPrimaryTextColor(ColorUtils.isColorLight(bbg))
|
||||
// binding.llSearchBaseInfo.setBackgroundColor(bbg)
|
||||
binding.llSearchBaseInfo.applyNavigationBarMargin()
|
||||
binding.tvCurrentSearchInfo.setTextColor(btc)
|
||||
binding.ivSearchContentTop.setColorFilter(btc)
|
||||
binding.ivSearchContentBottom.setColorFilter(btc)
|
||||
// binding.tvCurrentSearchInfo.setTextColor(btc)
|
||||
// binding.ivSearchContentTop.setColorFilter(btc)
|
||||
// binding.ivSearchContentBottom.setColorFilter(btc)
|
||||
val searchResultList = IntentData.get<List<SearchResult>>("searchResultList")
|
||||
val position = intent.getIntExtra("searchResultIndex", 0)
|
||||
val noSearchResult = searchResultList == null
|
||||
@@ -124,7 +124,7 @@ class SearchContentActivity :
|
||||
}
|
||||
|
||||
private fun initSearchView(requestFocus: Boolean) {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.isSubmitButtonEnabled = true
|
||||
searchView.queryHint = getString(R.string.search)
|
||||
if (requestFocus) searchView.isIconified = false
|
||||
|
||||
@@ -6,7 +6,7 @@ import io.legado.app.R
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.databinding.ItemSearchListBinding
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.getCompatColor
|
||||
import io.legado.app.utils.hexString
|
||||
|
||||
@@ -15,7 +15,7 @@ class SearchContentAdapter(context: Context, val callback: Callback) :
|
||||
RecyclerAdapter<SearchResult, ItemSearchListBinding>(context) {
|
||||
|
||||
val textColor = context.getCompatColor(R.color.primaryText).hexString.substring(2)
|
||||
val accentColor = context.accentColor.hexString.substring(2)
|
||||
//val accentColor = context.accentColor.hexString.substring(2)
|
||||
|
||||
override fun getViewBinding(parent: ViewGroup): ItemSearchListBinding {
|
||||
return ItemSearchListBinding.inflate(inflater, parent, false)
|
||||
@@ -30,7 +30,7 @@ class SearchContentAdapter(context: Context, val callback: Callback) :
|
||||
binding.run {
|
||||
val isDur = callback.durChapterIndex() == item.chapterIndex
|
||||
if (payloads.isEmpty()) {
|
||||
tvSearchResult.text = item.getHtmlCompat(textColor, accentColor)
|
||||
//tvSearchResult.text = item.getHtmlCompat(textColor, accentColor)
|
||||
tvSearchResult.paint.isFakeBoldText = isDur
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ import io.legado.app.databinding.ActivitySourceDebugBinding
|
||||
import io.legado.app.help.source.clearExploreKindsCache
|
||||
import io.legado.app.help.source.exploreKinds
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.qrcode.QrCodeResult
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
@@ -61,10 +61,10 @@ class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookS
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
binding.rotateLoading.loadingColor = accentColor
|
||||
//binding.rotateLoading.loadingColor = accentColor
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
|
||||
@@ -24,9 +24,9 @@ import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.search.SearchActivity
|
||||
import io.legado.app.ui.book.search.SearchScope
|
||||
import io.legado.app.ui.book.source.debug.BookSourceDebugActivity
|
||||
@@ -183,11 +183,11 @@ class BookSourceEditActivity :
|
||||
binding.tabLayout.addTab(binding.tabLayout.newTab().apply {
|
||||
setText(R.string.source_tab_content)
|
||||
})
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
// binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.layoutManager = NoChildScrollLinearLayoutManager(this)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.tabLayout.setBackgroundColor(backgroundColor)
|
||||
binding.tabLayout.setSelectedTabIndicatorColor(accentColor)
|
||||
// binding.tabLayout.setBackgroundColor(backgroundColor)
|
||||
// binding.tabLayout.setSelectedTabIndicatorColor(accentColor)
|
||||
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabReselected(tab: TabLayout.Tab?) {
|
||||
|
||||
|
||||
@@ -31,8 +31,8 @@ import io.legado.app.databinding.DialogEditTextBinding
|
||||
import io.legado.app.help.DirectLinkUpload
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.model.CheckSource
|
||||
import io.legado.app.model.Debug
|
||||
import io.legado.app.ui.association.ImportBookSourceDialog
|
||||
@@ -287,7 +287,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(this))
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.recycledViewPool.setMaxRecycledViews(0, 15)
|
||||
@@ -301,7 +301,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
searchView.applyTint(primaryTextColor)
|
||||
//searchView.applyTint(primaryTextColor)
|
||||
searchView.queryHint = getString(R.string.search_book_source)
|
||||
searchView.setOnQueryTextListener(this)
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.BookSourcePart
|
||||
import io.legado.app.databinding.ItemBookSourceBinding
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.model.Debug
|
||||
import io.legado.app.ui.login.SourceLoginActivity
|
||||
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
|
||||
@@ -98,7 +98,7 @@ class BookSourceAdapter(
|
||||
) {
|
||||
binding.run {
|
||||
if (payloads.isEmpty()) {
|
||||
root.setBackgroundColor(ColorUtils.withAlpha(context.backgroundColor, 0.5f))
|
||||
//root.setBackgroundColor(ColorUtils.withAlpha(context.backgroundColor, 0.5f))
|
||||
cbBookSource.text = item.getDisPlayNameGroup()
|
||||
swtEnabled.isChecked = item.enabled
|
||||
cbBookSource.isChecked = selected.contains(item)
|
||||
|
||||
@@ -19,8 +19,8 @@ import io.legado.app.databinding.DialogEditTextBinding
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
import io.legado.app.databinding.ItemGroupManageBinding
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.backgroundColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.requestInputMethod
|
||||
@@ -42,8 +42,8 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
view.setBackgroundColor(backgroundColor)
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
// view.setBackgroundColor(backgroundColor)
|
||||
// binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.title = getString(R.string.group_manage)
|
||||
binding.toolBar.inflateMenu(R.menu.group_manage)
|
||||
binding.toolBar.menu.applyTint(requireContext())
|
||||
@@ -116,7 +116,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
binding.run {
|
||||
root.setBackgroundColor(context.backgroundColor)
|
||||
//root.setBackgroundColor(context.backgroundColor)
|
||||
tvGroup.text = item
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import io.legado.app.constant.AppLog
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.FragmentBookmarkBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
@@ -47,7 +47,7 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.layoutManager = mLayoutManager
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(requireContext()))
|
||||
binding.recyclerView.adapter = adapter
|
||||
|
||||
@@ -15,7 +15,7 @@ import io.legado.app.help.book.ContentProcessor
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.theme.ThemeUtils
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.utils.getCompatColor
|
||||
import io.legado.app.utils.gone
|
||||
import io.legado.app.utils.longToastOnUi
|
||||
@@ -129,7 +129,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
|| cacheFileNames.contains(item.getFileName())
|
||||
if (payloads.isEmpty()) {
|
||||
if (isDur) {
|
||||
tvChapterName.setTextColor(context.accentColor)
|
||||
//tvChapterName.setTextColor(context.accentColor)
|
||||
} else {
|
||||
tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText))
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ import io.legado.app.databinding.FragmentChapterListBinding
|
||||
import io.legado.app.help.book.BookHelp
|
||||
import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.book.simulatedTotalChapterNum
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.bottomBackground
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.ColorUtils
|
||||
@@ -44,12 +44,12 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) = binding.run {
|
||||
viewModel.chapterListCallBack = this@ChapterListFragment
|
||||
val bbg = bottomBackground
|
||||
val btc = requireContext().getPrimaryTextColor(ColorUtils.isColorLight(bbg))
|
||||
llChapterBaseInfo.setBackgroundColor(bbg)
|
||||
tvCurrentChapterInfo.setTextColor(btc)
|
||||
ivChapterTop.setColorFilter(btc, PorterDuff.Mode.SRC_IN)
|
||||
ivChapterBottom.setColorFilter(btc, PorterDuff.Mode.SRC_IN)
|
||||
// val bbg = bottomBackground
|
||||
// val btc = requireContext().getPrimaryTextColor(ColorUtils.isColorLight(bbg))
|
||||
// llChapterBaseInfo.setBackgroundColor(bbg)
|
||||
// tvCurrentChapterInfo.setTextColor(btc)
|
||||
// ivChapterTop.setColorFilter(btc, PorterDuff.Mode.SRC_IN)
|
||||
// ivChapterBottom.setColorFilter(btc, PorterDuff.Mode.SRC_IN)
|
||||
initRecyclerView()
|
||||
initView()
|
||||
viewModel.bookData.observe(this@ChapterListFragment) {
|
||||
|
||||
@@ -18,8 +18,8 @@ import io.legado.app.data.entities.Book
|
||||
import io.legado.app.databinding.ActivityChapterListBinding
|
||||
import io.legado.app.help.book.isLocalTxt
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
//import io.legado.app.lib.theme.accentColor
|
||||
//import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.book.toc.rule.TxtTocRuleDialog
|
||||
@@ -58,7 +58,7 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>(),
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
tabLayout = binding.titleBar.findViewById(R.id.tab_layout)
|
||||
tabLayout.isTabIndicatorFullWidth = false
|
||||
tabLayout.setSelectedTabIndicatorColor(accentColor)
|
||||
//tabLayout.setSelectedTabIndicatorColor(accentColor)
|
||||
binding.viewPager.adapter = TabFragmentPageAdapter()
|
||||
tabLayout.setupWithViewPager(binding.viewPager)
|
||||
tabLayout.tabGravity = TabLayout.GRAVITY_CENTER
|
||||
@@ -86,7 +86,7 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>(),
|
||||
this.menu = menu
|
||||
val search = menu.findItem(R.id.menu_search)
|
||||
searchView = (search.actionView as SearchView).apply {
|
||||
applyTint(primaryTextColor)
|
||||
//applyTint(primaryTextColor)
|
||||
maxWidth = resources.displayMetrics.widthPixels
|
||||
onActionViewCollapsed()
|
||||
setOnCloseListener {
|
||||
|
||||
@@ -17,7 +17,7 @@ import io.legado.app.databinding.ActivityTxtTocRuleBinding
|
||||
import io.legado.app.databinding.DialogEditTextBinding
|
||||
import io.legado.app.help.DirectLinkUpload
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.association.ImportTxtTocRuleDialog
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.ui.qrcode.QrCodeResult
|
||||
@@ -93,7 +93,7 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
recyclerView.setEdgeEffectColor(primaryColor)
|
||||
//recyclerView.setEdgeEffectColor(primaryColor)
|
||||
recyclerView.addItemDecoration(VerticalDivider(this@TxtTocRuleActivity))
|
||||
recyclerView.adapter = adapter
|
||||
// When this page is opened, it is in selection mode
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user