优化 #5696
This commit is contained in:
@@ -8,9 +8,30 @@ import io.legado.app.utils.applyTint
|
|||||||
|
|
||||||
class ThemeCheckBox(context: Context, attrs: AttributeSet) : AppCompatCheckBox(context, attrs) {
|
class ThemeCheckBox(context: Context, attrs: AttributeSet) : AppCompatCheckBox(context, attrs) {
|
||||||
|
|
||||||
|
private var isUserAction = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (!isInEditMode) {
|
if (!isInEditMode) {
|
||||||
applyTint(context.accentColor)
|
applyTint(context.accentColor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun performClick(): Boolean {
|
||||||
|
isUserAction = true
|
||||||
|
val result = super.performClick()
|
||||||
|
isUserAction = false
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnUserCheckedChangeListener(listener: ((Boolean) -> Unit)?) {
|
||||||
|
if (listener == null) {
|
||||||
|
return super.setOnCheckedChangeListener(null)
|
||||||
|
}
|
||||||
|
super.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
if (isUserAction) {
|
||||||
|
listener.invoke(isChecked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,30 @@ import io.legado.app.utils.applyTint
|
|||||||
class ThemeRadioButton(context: Context, attrs: AttributeSet) :
|
class ThemeRadioButton(context: Context, attrs: AttributeSet) :
|
||||||
AppCompatRadioButton(context, attrs) {
|
AppCompatRadioButton(context, attrs) {
|
||||||
|
|
||||||
|
private var isUserAction = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (!isInEditMode) {
|
if (!isInEditMode) {
|
||||||
applyTint(context.accentColor)
|
applyTint(context.accentColor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun performClick(): Boolean {
|
||||||
|
isUserAction = true
|
||||||
|
val result = super.performClick()
|
||||||
|
isUserAction = false
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnUserCheckedChangeListener(listener: ((Boolean) -> Unit)?) {
|
||||||
|
if (listener == null) {
|
||||||
|
return super.setOnCheckedChangeListener(null)
|
||||||
|
}
|
||||||
|
super.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
if (isUserAction) {
|
||||||
|
listener.invoke(isChecked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,30 @@ import io.legado.app.utils.applyTint
|
|||||||
*/
|
*/
|
||||||
class ThemeSwitch(context: Context, attrs: AttributeSet) : SwitchCompat(context, attrs) {
|
class ThemeSwitch(context: Context, attrs: AttributeSet) : SwitchCompat(context, attrs) {
|
||||||
|
|
||||||
|
private var isUserAction = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (!isInEditMode) {
|
if (!isInEditMode) {
|
||||||
applyTint(context.accentColor)
|
applyTint(context.accentColor)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun performClick(): Boolean {
|
||||||
|
isUserAction = true
|
||||||
|
val result = super.performClick()
|
||||||
|
isUserAction = false
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnUserCheckedChangeListener(listener: ((Boolean) -> Unit)?) {
|
||||||
|
if (listener == null) {
|
||||||
|
return super.setOnCheckedChangeListener(null)
|
||||||
|
}
|
||||||
|
super.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
if (isUserAction) {
|
||||||
|
listener.invoke(isChecked)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,14 @@ 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.CodeDialog
|
||||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.GSON
|
||||||
|
import io.legado.app.utils.dpToPx
|
||||||
|
import io.legado.app.utils.fromJsonObject
|
||||||
|
import io.legado.app.utils.putPrefBoolean
|
||||||
|
import io.legado.app.utils.setLayout
|
||||||
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
|
import io.legado.app.utils.visible
|
||||||
import splitties.views.onClick
|
import splitties.views.onClick
|
||||||
|
|
||||||
|
|
||||||
@@ -255,11 +261,9 @@ class ImportBookSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -18,8 +18,12 @@ 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.CodeDialog
|
||||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.GSON
|
||||||
|
import io.legado.app.utils.fromJsonObject
|
||||||
|
import io.legado.app.utils.setLayout
|
||||||
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
|
import io.legado.app.utils.visible
|
||||||
import splitties.views.onClick
|
import splitties.views.onClick
|
||||||
|
|
||||||
class ImportDictRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
class ImportDictRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||||
@@ -148,11 +152,9 @@ class ImportDictRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view)
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -152,11 +152,9 @@ class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -24,8 +24,14 @@ 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.CodeDialog
|
||||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.GSON
|
||||||
|
import io.legado.app.utils.dpToPx
|
||||||
|
import io.legado.app.utils.fromJsonObject
|
||||||
|
import io.legado.app.utils.putPrefBoolean
|
||||||
|
import io.legado.app.utils.setLayout
|
||||||
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
|
import io.legado.app.utils.visible
|
||||||
import splitties.views.onClick
|
import splitties.views.onClick
|
||||||
|
|
||||||
class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||||
@@ -212,6 +218,7 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi
|
|||||||
|| item.replacement != localRule.replacement
|
|| item.replacement != localRule.replacement
|
||||||
|| item.isRegex != localRule.isRegex
|
|| item.isRegex != localRule.isRegex
|
||||||
|| item.scope != localRule.scope -> "更新"
|
|| item.scope != localRule.scope -> "更新"
|
||||||
|
|
||||||
else -> "已有"
|
else -> "已有"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,11 +226,9 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.run {
|
binding.run {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -240,11 +240,9 @@ class ImportRssSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_view
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -151,11 +151,9 @@ class ImportThemeDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -151,11 +151,9 @@ class ImportTxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemSourceImportBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
cbSourceName.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbSourceName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
||||||
viewModel.selectStatus[holder.layoutPosition] = isChecked
|
upSelectText()
|
||||||
upSelectText()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.onClick {
|
root.onClick {
|
||||||
cbSourceName.isChecked = !cbSourceName.isChecked
|
cbSourceName.isChecked = !cbSourceName.isChecked
|
||||||
|
|||||||
@@ -135,11 +135,9 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
swShow.setOnCheckedChangeListener { buttonView, isChecked ->
|
swShow.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
viewModel.upGroup(it.copy(show = isChecked))
|
||||||
viewModel.upGroup(it.copy(show = isChecked))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,14 +127,12 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemGroupSelectBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemGroupSelectBinding) {
|
||||||
binding.run {
|
binding.run {
|
||||||
cbGroup.setOnCheckedChangeListener { buttonView, isChecked ->
|
cbGroup.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
groupId = if (isChecked) {
|
||||||
groupId = if (isChecked) {
|
groupId + it.groupId
|
||||||
groupId + it.groupId
|
} else {
|
||||||
} else {
|
groupId - it.groupId
|
||||||
groupId - it.groupId
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemServerSelectBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemServerSelectBinding) {
|
||||||
binding.rbServer.setOnCheckedChangeListener { buttonView, isChecked ->
|
binding.rbServer.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed && isChecked) {
|
if (isChecked) {
|
||||||
selectServerId = getItemByLayoutPosition(holder.layoutPosition)!!.id
|
selectServerId = getItemByLayoutPosition(holder.layoutPosition)!!.id
|
||||||
adapter.updateItems(0, itemCount - 1, "upSelect")
|
adapter.updateItems(0, itemCount - 1, "upSelect")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ 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.DragSelectTouchHelper
|
||||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||||
import java.util.*
|
import java.util.Collections
|
||||||
|
|
||||||
class BookAdapter(context: Context, val callBack: CallBack) :
|
class BookAdapter(context: Context, val callBack: CallBack) :
|
||||||
RecyclerAdapter<Book, ItemArrangeBookBinding>(context),
|
RecyclerAdapter<Book, ItemArrangeBookBinding>(context),
|
||||||
@@ -65,18 +65,14 @@ class BookAdapter(context: Context, val callBack: CallBack) :
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemArrangeBookBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemArrangeBookBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
checkbox.setOnCheckedChangeListener { buttonView, isChecked ->
|
checkbox.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
if (isChecked) {
|
||||||
if (buttonView.isPressed) {
|
selectedBooks.add(it)
|
||||||
if (isChecked) {
|
} else {
|
||||||
selectedBooks.add(it)
|
selectedBooks.remove(it)
|
||||||
} else {
|
|
||||||
selectedBooks.remove(it)
|
|
||||||
}
|
|
||||||
callBack.upSelectCount()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
callBack.upSelectCount()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
|
|||||||
@@ -203,16 +203,14 @@ class SearchScopeDialog : BaseDialogFragment(R.layout.dialog_search_scope) {
|
|||||||
groups.getOrNull(position)?.let {
|
groups.getOrNull(position)?.let {
|
||||||
holder.binding.checkBox.isChecked = selectGroups.contains(it)
|
holder.binding.checkBox.isChecked = selectGroups.contains(it)
|
||||||
holder.binding.checkBox.text = it
|
holder.binding.checkBox.text = it
|
||||||
holder.binding.checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
|
holder.binding.checkBox.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
if (isChecked) {
|
||||||
if (isChecked) {
|
selectGroups.add(it)
|
||||||
selectGroups.add(it)
|
} else {
|
||||||
} else {
|
selectGroups.remove(it)
|
||||||
selectGroups.remove(it)
|
}
|
||||||
}
|
holder.itemView.post {
|
||||||
buttonView.post {
|
notifyItemRangeChanged(0, itemCount, "up")
|
||||||
notifyItemRangeChanged(0, itemCount, "up")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,14 +220,12 @@ class SearchScopeDialog : BaseDialogFragment(R.layout.dialog_search_scope) {
|
|||||||
screenSources.getOrNull(position)?.let {
|
screenSources.getOrNull(position)?.let {
|
||||||
holder.binding.radioButton.isChecked = selectSource == it
|
holder.binding.radioButton.isChecked = selectSource == it
|
||||||
holder.binding.radioButton.text = it.bookSourceName
|
holder.binding.radioButton.text = it.bookSourceName
|
||||||
holder.binding.radioButton.setOnCheckedChangeListener { buttonView, isChecked ->
|
holder.binding.radioButton.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
if (isChecked) {
|
||||||
if (isChecked) {
|
selectSource = it
|
||||||
selectSource = it
|
}
|
||||||
}
|
holder.itemView.post {
|
||||||
buttonView.post {
|
notifyItemRangeChanged(0, itemCount, "up")
|
||||||
notifyItemRangeChanged(0, itemCount, "up")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,24 +125,20 @@ class BookSourceAdapter(
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemBookSourceBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemBookSourceBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
swtEnabled.setOnCheckedChangeListener { view, checked ->
|
swtEnabled.setOnUserCheckedChangeListener { checked ->
|
||||||
getItem(holder.layoutPosition)?.let {
|
getItem(holder.layoutPosition)?.let {
|
||||||
if (view.isPressed) {
|
it.enabled = checked
|
||||||
it.enabled = checked
|
callBack.enable(checked, it)
|
||||||
callBack.enable(checked, it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cbBookSource.setOnCheckedChangeListener { view, checked ->
|
cbBookSource.setOnUserCheckedChangeListener { checked ->
|
||||||
getItem(holder.layoutPosition)?.let {
|
getItem(holder.layoutPosition)?.let {
|
||||||
if (view.isPressed) {
|
if (checked) {
|
||||||
if (checked) {
|
selected.add(it)
|
||||||
selected.add(it)
|
} else {
|
||||||
} else {
|
selected.remove(it)
|
||||||
selected.remove(it)
|
|
||||||
}
|
|
||||||
callBack.upCountView()
|
|
||||||
}
|
}
|
||||||
|
callBack.upCountView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ivEdit.setOnClickListener {
|
ivEdit.setOnClickListener {
|
||||||
|
|||||||
@@ -100,24 +100,20 @@ class TxtTocRuleAdapter(context: Context, private val callBack: CallBack) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemTxtTocRuleBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemTxtTocRuleBinding) {
|
||||||
binding.cbSource.setOnCheckedChangeListener { buttonView, isChecked ->
|
binding.cbSource.setOnUserCheckedChangeListener { isChecked ->
|
||||||
getItem(holder.layoutPosition)?.let {
|
getItem(holder.layoutPosition)?.let {
|
||||||
if (buttonView.isPressed) {
|
if (isChecked) {
|
||||||
if (isChecked) {
|
selected.add(it)
|
||||||
selected.add(it)
|
} else {
|
||||||
} else {
|
selected.remove(it)
|
||||||
selected.remove(it)
|
|
||||||
}
|
|
||||||
callBack.upCountView()
|
|
||||||
}
|
}
|
||||||
|
callBack.upCountView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.swtEnabled.setOnCheckedChangeListener { buttonView, isChecked ->
|
binding.swtEnabled.setOnUserCheckedChangeListener { isChecked ->
|
||||||
getItem(holder.layoutPosition)?.let {
|
getItem(holder.layoutPosition)?.let {
|
||||||
if (buttonView.isPressed) {
|
it.enable = isChecked
|
||||||
it.enable = isChecked
|
callBack.update(it)
|
||||||
callBack.update(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.ivEdit.setOnClickListener {
|
binding.ivEdit.setOnClickListener {
|
||||||
@@ -142,7 +138,7 @@ class TxtTocRuleAdapter(context: Context, private val callBack: CallBack) :
|
|||||||
when (menuItem.itemId) {
|
when (menuItem.itemId) {
|
||||||
R.id.menu_top -> callBack.toTop(source)
|
R.id.menu_top -> callBack.toTop(source)
|
||||||
R.id.menu_bottom -> callBack.toBottom(source)
|
R.id.menu_bottom -> callBack.toBottom(source)
|
||||||
R.id.menu_del -> {
|
R.id.menu_del -> {
|
||||||
callBack.del(source)
|
callBack.del(source)
|
||||||
selected.remove(source)
|
selected.remove(source)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
|||||||
mode = HandleFileContract.FILE
|
mode = HandleFileContract.FILE
|
||||||
allowExtensions = arrayOf("txt", "json")
|
allowExtensions = arrayOf("txt", "json")
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.menu_import_onLine -> showImportDialog()
|
R.id.menu_import_onLine -> showImportDialog()
|
||||||
R.id.menu_import_qr -> qrCodeResult.launch()
|
R.id.menu_import_qr -> qrCodeResult.launch()
|
||||||
R.id.menu_import_default -> viewModel.importDefault()
|
R.id.menu_import_default -> viewModel.importDefault()
|
||||||
@@ -274,18 +275,16 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemTocRegexBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemTocRegexBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
rbRegexName.setOnCheckedChangeListener { buttonView, isChecked ->
|
rbRegexName.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed && isChecked) {
|
if (isChecked) {
|
||||||
selectedName = getItem(holder.layoutPosition)?.name
|
selectedName = getItem(holder.layoutPosition)?.name
|
||||||
updateItems(0, itemCount - 1, bundleOf("upSelect" to null))
|
updateItems(0, itemCount - 1, bundleOf("upSelect" to null))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
swtEnabled.setOnCheckedChangeListener { buttonView, isChecked ->
|
swtEnabled.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
it.enable = isChecked
|
||||||
it.enable = isChecked
|
viewModel.update(it)
|
||||||
viewModel.update(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ivEdit.setOnClickListener {
|
ivEdit.setOnClickListener {
|
||||||
|
|||||||
@@ -117,12 +117,10 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemDictRuleBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemDictRuleBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
swtEnabled.setOnCheckedChangeListener { buttonView, isChecked ->
|
swtEnabled.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
it.enabled = isChecked
|
||||||
it.enabled = isChecked
|
callBack.update(it)
|
||||||
callBack.update(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cbName.setOnClickListener {
|
cbName.setOnClickListener {
|
||||||
|
|||||||
@@ -125,12 +125,10 @@ class ReplaceRuleAdapter(context: Context, var callBack: CallBack) :
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemReplaceRuleBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemReplaceRuleBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
swtEnabled.setOnCheckedChangeListener { buttonView, isChecked ->
|
swtEnabled.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
it.isEnabled = isChecked
|
||||||
it.isEnabled = isChecked
|
callBack.update(it)
|
||||||
callBack.update(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ivEdit.setOnClickListener {
|
ivEdit.setOnClickListener {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class RssSourceEditAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||||||
.inflate(LayoutInflater.from(parent.context), parent, false)
|
.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||||
CheckBoxViewHolder(binding)
|
CheckBoxViewHolder(binding)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
val binding = ItemSourceEditBinding
|
val binding = ItemSourceEditBinding
|
||||||
.inflate(LayoutInflater.from(parent.context), parent, false)
|
.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||||
@@ -113,19 +114,17 @@ class RssSourceEditAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class CheckBoxViewHolder(val binding: ItemSourceEditCheckBoxBinding) :
|
class CheckBoxViewHolder(val binding: ItemSourceEditCheckBoxBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(editEntity: EditEntity) = binding.run {
|
fun bind(editEntity: EditEntity) = binding.run {
|
||||||
checkBox.setOnCheckedChangeListener(null)
|
|
||||||
checkBox.text = editEntity.hint
|
checkBox.text = editEntity.hint
|
||||||
checkBox.isChecked = editEntity.value.isTrue()
|
checkBox.isChecked = editEntity.value.isTrue()
|
||||||
checkBox.setOnCheckedChangeListener { _, isChecked ->
|
checkBox.setOnUserCheckedChangeListener { isChecked ->
|
||||||
editEntity.value = isChecked.toString()
|
editEntity.value = isChecked.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -95,28 +95,20 @@ class RssSourceAdapter(context: Context, val callBack: CallBack) :
|
|||||||
|
|
||||||
override fun registerListener(holder: ItemViewHolder, binding: ItemRssSourceBinding) {
|
override fun registerListener(holder: ItemViewHolder, binding: ItemRssSourceBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
swtEnabled.setOnCheckedChangeListener { view, checked ->
|
swtEnabled.setOnUserCheckedChangeListener { checked ->
|
||||||
if (view.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
it.enabled = checked
|
||||||
if (view.isPressed) {
|
callBack.update(it)
|
||||||
it.enabled = checked
|
|
||||||
callBack.update(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cbSource.setOnCheckedChangeListener { view, checked ->
|
cbSource.setOnUserCheckedChangeListener { checked ->
|
||||||
if (view.isPressed) {
|
getItem(holder.layoutPosition)?.let {
|
||||||
getItem(holder.layoutPosition)?.let {
|
if (checked) {
|
||||||
if (view.isPressed) {
|
selected.add(it)
|
||||||
if (checked) {
|
} else {
|
||||||
selected.add(it)
|
selected.remove(it)
|
||||||
} else {
|
|
||||||
selected.remove(it)
|
|
||||||
}
|
|
||||||
callBack.upCountView()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
callBack.upCountView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ivEdit.setOnClickListener {
|
ivEdit.setOnClickListener {
|
||||||
|
|||||||
@@ -44,10 +44,8 @@ class SelectActionBar @JvmOverloads constructor(
|
|||||||
binding.cbSelectedAll.setTextColor(primaryTextColor)
|
binding.cbSelectedAll.setTextColor(primaryTextColor)
|
||||||
TintHelper.setTint(binding.cbSelectedAll, context.accentColor, !bgIsLight)
|
TintHelper.setTint(binding.cbSelectedAll, context.accentColor, !bgIsLight)
|
||||||
binding.ivMenuMore.setColorFilter(disabledColor, PorterDuff.Mode.SRC_IN)
|
binding.ivMenuMore.setColorFilter(disabledColor, PorterDuff.Mode.SRC_IN)
|
||||||
binding.cbSelectedAll.setOnCheckedChangeListener { buttonView, isChecked ->
|
binding.cbSelectedAll.setOnUserCheckedChangeListener { isChecked ->
|
||||||
if (buttonView.isPressed) {
|
callBack?.selectAll(isChecked)
|
||||||
callBack?.selectAll(isChecked)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
binding.btnRevertSelection.setOnClickListener { callBack?.revertSelection() }
|
binding.btnRevertSelection.setOnClickListener { callBack?.revertSelection() }
|
||||||
binding.btnSelectActionMain.setOnClickListener { callBack?.onClickSelectBarMainAction() }
|
binding.btnSelectActionMain.setOnClickListener { callBack?.onClickSelectBarMainAction() }
|
||||||
|
|||||||
Reference in New Issue
Block a user