更新界面与图标
This commit is contained in:
@@ -2,9 +2,7 @@ package io.legato.kazusa.help
|
||||
|
||||
import android.content.ComponentName
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.ui.welcome.*
|
||||
import io.legato.kazusa.utils.toastOnUi
|
||||
import splitties.init.appCtx
|
||||
|
||||
@@ -15,6 +13,7 @@ import splitties.init.appCtx
|
||||
object LauncherIconHelp {
|
||||
private val packageManager: PackageManager = appCtx.packageManager
|
||||
private val componentNames = arrayListOf(
|
||||
ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher0"),
|
||||
ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher1"),
|
||||
ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher2"),
|
||||
ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher3"),
|
||||
@@ -31,10 +30,6 @@ object LauncherIconHelp {
|
||||
|
||||
fun changeIcon(icon: String?) {
|
||||
if (icon.isNullOrEmpty()) return
|
||||
if (Build.VERSION.SDK_INT < 26) {
|
||||
appCtx.toastOnUi(R.string.change_icon_error)
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
// 首先禁用主Activity的启动器intent
|
||||
|
||||
@@ -18,6 +18,7 @@ import io.legato.kazusa.lib.dialogs.alert
|
||||
import io.legato.kazusa.utils.getCompatColor
|
||||
import io.legato.kazusa.utils.gone
|
||||
import io.legato.kazusa.utils.invisible
|
||||
import io.legato.kazusa.utils.themeColor
|
||||
import io.legato.kazusa.utils.visible
|
||||
import splitties.init.appCtx
|
||||
import splitties.views.onLongClick
|
||||
@@ -62,8 +63,10 @@ class ChangeBookSourceAdapter(
|
||||
tvRespondTime.text = context.getString(R.string.respondTime, item.respondTime)
|
||||
if (callBack.oldBookUrl == item.bookUrl) {
|
||||
ivChecked.visible()
|
||||
root.setBackgroundColor(context.themeColor(com.google.android.material.R.attr.colorSurfaceContainerHighest))
|
||||
} else {
|
||||
ivChecked.invisible()
|
||||
root.setBackgroundColor(context.themeColor(com.google.android.material.R.attr.colorSurfaceContainerLow))
|
||||
}
|
||||
} else {
|
||||
for (i in payloads.indices) {
|
||||
@@ -74,8 +77,10 @@ class ChangeBookSourceAdapter(
|
||||
"latest" -> tvLast.text = item.getDisplayLastChapterTitle()
|
||||
"upCurSource" -> if (callBack.oldBookUrl == item.bookUrl) {
|
||||
ivChecked.visible()
|
||||
root.setBackgroundColor(context.themeColor(com.google.android.material.R.attr.colorSurfaceContainer))
|
||||
} else {
|
||||
ivChecked.invisible()
|
||||
root.setBackgroundColor(context.themeColor(com.google.android.material.R.attr.colorSurfaceContainerLow))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.legato.kazusa.ui.book.changesource
|
||||
|
||||
//import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
//import io.legado.app.lib.theme.primaryColor
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
@@ -41,6 +42,7 @@ import io.legato.kazusa.utils.observeEvent
|
||||
import io.legato.kazusa.utils.startActivity
|
||||
import io.legato.kazusa.utils.transaction
|
||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||
import io.legato.kazusa.utils.visible
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.conflate
|
||||
@@ -205,9 +207,11 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initLiveData() {
|
||||
viewModel.searchStateData.observe(viewLifecycleOwner) {
|
||||
binding.refreshProgressBar.isVisible = it
|
||||
|
||||
if (it) {
|
||||
startStopMenuItem?.let { item ->
|
||||
item.setIcon(R.drawable.ic_stop_black_24dp)
|
||||
@@ -226,7 +230,7 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b
|
||||
viewModel.searchDataFlow.conflate().collect {
|
||||
adapter.setItems(it)
|
||||
|
||||
binding.loadingIndicator.isVisible = it.isEmpty()
|
||||
binding.tvEmptyMsg.isVisible = it.isEmpty()
|
||||
binding.recyclerView.isVisible = it.isNotEmpty()
|
||||
|
||||
delay(1000)
|
||||
@@ -239,15 +243,16 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b
|
||||
viewModel.changeSourceProgress
|
||||
.drop(1)
|
||||
.collect { (count, name) ->
|
||||
binding.tvDur.text =
|
||||
getString(
|
||||
R.string.change_source_progress,
|
||||
adapter.itemCount,
|
||||
count,
|
||||
viewModel.totalSourceCount,
|
||||
name
|
||||
)
|
||||
delay(500)
|
||||
val total = viewModel.totalSourceCount
|
||||
val progress = if (total > 0) (count * 100 / total) else 0
|
||||
|
||||
binding.refreshProgressBar.isIndeterminate = false
|
||||
binding.refreshProgressBar.progress = progress
|
||||
binding.llInfo.visible()
|
||||
|
||||
binding.tvProgress.text = "$count / $total"
|
||||
binding.tvResult.text =
|
||||
getString(R.string.change_source_progress, adapter.itemCount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -549,6 +549,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
|
||||
override fun showFooterConfig() {
|
||||
showDialogFragment(MangaFooterSettingDialog().apply {
|
||||
initialScrollMode = viewModel.getEffectiveScrollMode()
|
||||
initialWebtoonSidePadding = viewModel.getEffectiveWebtoonSidePadding()
|
||||
callback = this@ReadMangaActivity
|
||||
})
|
||||
}
|
||||
@@ -565,8 +567,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
|
||||
override fun showScrollModeDialog() {
|
||||
showDialogFragment(MangaScrollModeDialog().apply {
|
||||
initialScrollMode = viewModel.getEffectiveScrollMode()
|
||||
initialWebtoonSidePadding = viewModel.getEffectiveWebtoonSidePadding()
|
||||
initialAutoPageEnabled = enableScroll
|
||||
callback = this@ReadMangaActivity
|
||||
})
|
||||
@@ -574,7 +574,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
|
||||
//漫画模式
|
||||
override fun onScrollModeChanged(mode: Int) {
|
||||
//AppConfig.mangaScrollMode = mode
|
||||
onAutoPageToggle(false)
|
||||
viewModel.updateReadConfig {
|
||||
mangaScrollMode = mode
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ class MangaColorFilterDialog : BaseBottomSheetDialogFragment(R.layout.dialog_man
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
||||
// setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import com.google.android.material.chip.Chip
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
|
||||
import io.legato.kazusa.constant.EventBus
|
||||
@@ -21,6 +22,9 @@ class MangaFooterSettingDialog :
|
||||
val config = GSON.fromJsonObject<MangaFooterConfig>(AppConfig.mangaFooterConfig).getOrNull()
|
||||
?: MangaFooterConfig()
|
||||
|
||||
var initialWebtoonSidePadding: Int = 0
|
||||
var initialScrollMode: Int = MangaScrollMode.PAGE_RIGHT_TO_LEFT
|
||||
|
||||
var callback: Callback? = null
|
||||
|
||||
private val binding by viewBinding(DialogMangaFooterSettingBinding::bind)
|
||||
@@ -32,6 +36,56 @@ class MangaFooterSettingDialog :
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
||||
binding.chipGroupScrollMode.removeAllViews()
|
||||
|
||||
MangaScrollMode.ALL.forEach { mode ->
|
||||
binding.chipGroupScrollMode.addView(Chip(requireContext()).apply {
|
||||
text = MangaScrollMode.labelOf(mode)
|
||||
isCheckable = true
|
||||
isChecked = (mode == initialScrollMode)
|
||||
|
||||
setOnClickListener {
|
||||
callback?.onScrollModeChanged(mode)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
binding.scvPadding.apply {
|
||||
valueFormat = { "$it %" }
|
||||
progress = initialWebtoonSidePadding
|
||||
onChanged = { newValue ->
|
||||
callback?.upSidePadding(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxDisableClickScroll.apply {
|
||||
isChecked = AppConfig.disableClickScroll
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onClickScrollDisabledChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxDisableMangaScale.apply {
|
||||
isChecked = AppConfig.disableMangaScale
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onMangaScaleDisabledChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxHideMangaTitle.apply {
|
||||
isChecked = AppConfig.hideMangaTitle
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onHideMangaTitleChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxVolumeKeyPage.apply {
|
||||
isChecked = AppConfig.MangaVolumeKeyPage
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onVolumeKeyPageChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.cbChapterLabel.run {
|
||||
isChecked = !config.hideChapterLabel
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
@@ -187,6 +241,12 @@ class MangaFooterSettingDialog :
|
||||
fun onAutoPageSpeedChanged(speed: Int)
|
||||
fun showColorFilterConfig()
|
||||
fun showClickConfig()
|
||||
fun onScrollModeChanged(mode: Int)
|
||||
fun upSidePadding(padding: Int)
|
||||
fun onClickScrollDisabledChanged(disabled: Boolean)
|
||||
fun onMangaScaleDisabledChanged(disabled: Boolean)
|
||||
fun onHideMangaTitleChanged(hide: Boolean)
|
||||
fun onVolumeKeyPageChanged(enable: Boolean)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package io.legato.kazusa.ui.book.manga.config
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.google.android.material.chip.Chip
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
|
||||
import io.legato.kazusa.databinding.DialogMangaScrollModeBinding
|
||||
@@ -14,8 +13,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
|
||||
private val binding by viewBinding(DialogMangaScrollModeBinding::bind)
|
||||
|
||||
var initialAutoPageEnabled: Boolean = false
|
||||
var initialWebtoonSidePadding: Int = 0
|
||||
var initialScrollMode: Int = MangaScrollMode.PAGE_RIGHT_TO_LEFT
|
||||
|
||||
var callback: Callback? = null
|
||||
|
||||
@@ -24,20 +21,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
binding.chipGroupScrollMode.removeAllViews()
|
||||
|
||||
MangaScrollMode.ALL.forEach { mode ->
|
||||
binding.chipGroupScrollMode.addView(Chip(requireContext()).apply {
|
||||
text = MangaScrollMode.labelOf(mode)
|
||||
isCheckable = true
|
||||
isChecked = (mode == initialScrollMode)
|
||||
|
||||
setOnClickListener {
|
||||
callback?.onScrollModeChanged(mode)
|
||||
binding.chipAutoPage.isChecked = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
binding.chipAutoPage.run {
|
||||
isChecked = initialAutoPageEnabled
|
||||
@@ -47,42 +30,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxDisableClickScroll.apply {
|
||||
isChecked = AppConfig.disableClickScroll
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onClickScrollDisabledChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxDisableMangaScale.apply {
|
||||
isChecked = AppConfig.disableMangaScale
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onMangaScaleDisabledChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxHideMangaTitle.apply {
|
||||
isChecked = AppConfig.hideMangaTitle
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onHideMangaTitleChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.checkboxVolumeKeyPage.apply {
|
||||
isChecked = AppConfig.MangaVolumeKeyPage
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
callback?.onVolumeKeyPageChanged(isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
binding.scvPadding.apply {
|
||||
valueFormat = { "$it %" }
|
||||
progress = initialWebtoonSidePadding
|
||||
onChanged = { newValue ->
|
||||
callback?.upSidePadding(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
initAutoPageSpeed(initialAutoPageEnabled)
|
||||
}
|
||||
|
||||
@@ -101,12 +48,6 @@ class MangaScrollModeDialog : BaseBottomSheetDialogFragment(R.layout.dialog_mang
|
||||
interface Callback {
|
||||
fun onAutoPageToggle(enable: Boolean)
|
||||
fun onAutoPageSpeedChanged(speed: Int)
|
||||
fun onScrollModeChanged(mode: Int)
|
||||
fun onClickScrollDisabledChanged(disabled: Boolean)
|
||||
fun onMangaScaleDisabledChanged(disabled: Boolean)
|
||||
fun upSidePadding(padding: Int)
|
||||
fun onHideMangaTitleChanged(hide: Boolean)
|
||||
fun onVolumeKeyPageChanged(enable: Boolean)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user