优化
This commit is contained in:
@@ -27,7 +27,7 @@ class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) {
|
|||||||
private val binding by viewBinding(DialogBookGroupEditBinding::bind)
|
private val binding by viewBinding(DialogBookGroupEditBinding::bind)
|
||||||
private val viewModel by viewModels<GroupViewModel>()
|
private val viewModel by viewModels<GroupViewModel>()
|
||||||
private var bookGroup: BookGroup? = null
|
private var bookGroup: BookGroup? = null
|
||||||
val selectImage = registerForActivityResult(SelectImageContract()) {
|
private val selectImage = registerForActivityResult(SelectImageContract()) {
|
||||||
it ?: return@registerForActivityResult
|
it ?: return@registerForActivityResult
|
||||||
it.uri ?: return@registerForActivityResult
|
it.uri ?: return@registerForActivityResult
|
||||||
readUri(it.uri) { fileDoc, inputStream ->
|
readUri(it.uri) { fileDoc, inputStream ->
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ class RemoteBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Rem
|
|||||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_refresh -> upPath()
|
R.id.menu_refresh -> upPath()
|
||||||
R.id.menu_server_config -> showDialogFragment(ServerConfigDialog())
|
R.id.menu_server_config -> showDialogFragment<ServersDialog>()
|
||||||
R.id.menu_log -> showDialogFragment<AppLogDialog>()
|
R.id.menu_log -> showDialogFragment<AppLogDialog>()
|
||||||
R.id.menu_help -> showHelp("webDavBookHelp")
|
R.id.menu_help -> showHelp("webDavBookHelp")
|
||||||
R.id.menu_sort_name -> {
|
R.id.menu_sort_name -> {
|
||||||
|
|||||||
@@ -20,9 +20,15 @@ import io.legado.app.utils.applyTint
|
|||||||
import io.legado.app.utils.setLayout
|
import io.legado.app.utils.setLayout
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
|
|
||||||
class ServerConfigDialog : BaseDialogFragment(R.layout.dialog_webdav_server, true),
|
class ServerConfigDialog() : BaseDialogFragment(R.layout.dialog_webdav_server, true),
|
||||||
Toolbar.OnMenuItemClickListener {
|
Toolbar.OnMenuItemClickListener {
|
||||||
|
|
||||||
|
constructor(id: Long) : this() {
|
||||||
|
arguments = Bundle().apply {
|
||||||
|
putLong("id", id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val binding by viewBinding(DialogWebdavServerBinding::bind)
|
private val binding by viewBinding(DialogWebdavServerBinding::bind)
|
||||||
|
|
||||||
private val serverUi = listOf(
|
private val serverUi = listOf(
|
||||||
@@ -41,7 +47,8 @@ class ServerConfigDialog : BaseDialogFragment(R.layout.dialog_webdav_server, tru
|
|||||||
binding.toolBar.inflateMenu(R.menu.server_config)
|
binding.toolBar.inflateMenu(R.menu.server_config)
|
||||||
binding.toolBar.menu.applyTint(requireContext())
|
binding.toolBar.menu.applyTint(requireContext())
|
||||||
binding.toolBar.setOnMenuItemClickListener(this)
|
binding.toolBar.setOnMenuItemClickListener(this)
|
||||||
initConfigView()
|
|
||||||
|
upConfigView(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||||
@@ -64,7 +71,7 @@ class ServerConfigDialog : BaseDialogFragment(R.layout.dialog_webdav_server, tru
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initConfigView() {
|
private fun upConfigView(server: Server?) {
|
||||||
val data = appDb.serverDao.get(10001)?.getConfigJsonObject()
|
val data = appDb.serverDao.get(10001)?.getConfigJsonObject()
|
||||||
serverUi.forEachIndexed { index, rowUi ->
|
serverUi.forEachIndexed { index, rowUi ->
|
||||||
when (rowUi.type) {
|
when (rowUi.type) {
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ package io.legado.app.ui.book.import.remote
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseDialogFragment
|
import io.legado.app.base.BaseDialogFragment
|
||||||
import io.legado.app.base.adapter.ItemViewHolder
|
import io.legado.app.base.adapter.ItemViewHolder
|
||||||
@@ -15,10 +18,14 @@ import io.legado.app.databinding.DialogRecyclerViewBinding
|
|||||||
import io.legado.app.databinding.ItemServerSelectBinding
|
import io.legado.app.databinding.ItemServerSelectBinding
|
||||||
import io.legado.app.lib.theme.backgroundColor
|
import io.legado.app.lib.theme.backgroundColor
|
||||||
import io.legado.app.lib.theme.primaryColor
|
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
|
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
|
||||||
|
|
||||||
class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||||
|
Toolbar.OnMenuItemClickListener {
|
||||||
|
|
||||||
val binding by viewBinding(DialogRecyclerViewBinding::bind)
|
val binding by viewBinding(DialogRecyclerViewBinding::bind)
|
||||||
val viewModel by viewModels<ServersViewModel>()
|
val viewModel by viewModels<ServersViewModel>()
|
||||||
@@ -34,23 +41,37 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
|||||||
|
|
||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
binding.toolBar.setBackgroundColor(primaryColor)
|
binding.toolBar.setBackgroundColor(primaryColor)
|
||||||
|
binding.toolBar.setTitle(R.string.server_config)
|
||||||
|
initView()
|
||||||
|
initData()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initView() {
|
private fun initView() {
|
||||||
|
binding.toolBar.inflateMenu(R.menu.servers)
|
||||||
|
binding.toolBar.menu.applyTint(requireContext())
|
||||||
|
binding.toolBar.setOnMenuItemClickListener(this)
|
||||||
|
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||||
|
binding.recyclerView.addItemDecoration(VerticalDivider(requireContext()))
|
||||||
|
binding.recyclerView.adapter = adapter
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initData() {
|
private fun initData() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||||
|
when (item.itemId) {
|
||||||
|
R.id.menu_add -> showDialogFragment(ServerConfigDialog())
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDismiss(dialog: DialogInterface) {
|
override fun onDismiss(dialog: DialogInterface) {
|
||||||
super.onDismiss(dialog)
|
super.onDismiss(dialog)
|
||||||
callback?.onDialogDismiss("serversDialog")
|
callback?.onDialogDismiss("serversDialog")
|
||||||
}
|
}
|
||||||
|
|
||||||
class ServersAdapter(context: Context) :
|
inner class ServersAdapter(context: Context) :
|
||||||
RecyclerAdapter<Server, ItemServerSelectBinding>(context) {
|
RecyclerAdapter<Server, ItemServerSelectBinding>(context) {
|
||||||
|
|
||||||
private var selectServerId: Long? = null
|
private var selectServerId: Long? = null
|
||||||
@@ -60,7 +81,16 @@ 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 ->
|
||||||
|
if (buttonView.isPressed && isChecked) {
|
||||||
|
selectServerId = getItemByLayoutPosition(holder.layoutPosition)?.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.tvEdit.setOnClickListener {
|
||||||
|
getItemByLayoutPosition(holder.layoutPosition)?.let { server ->
|
||||||
|
showDialogFragment(ServerConfigDialog(server.id))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun convert(
|
override fun convert(
|
||||||
@@ -69,10 +99,12 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view) {
|
|||||||
item: Server,
|
item: Server,
|
||||||
payloads: MutableList<Any>
|
payloads: MutableList<Any>
|
||||||
) {
|
) {
|
||||||
binding.run {
|
if (payloads.isEmpty()) {
|
||||||
root.setBackgroundColor(context.backgroundColor)
|
binding.root.setBackgroundColor(context.backgroundColor)
|
||||||
rbServer.text = item.name
|
binding.rbServer.text = item.name
|
||||||
rbServer.isChecked = item.id == selectServerId
|
binding.rbServer.isChecked = item.id == selectServerId
|
||||||
|
} else {
|
||||||
|
binding.rbServer.isChecked = item.id == selectServerId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_add"
|
||||||
|
android:icon="@drawable/ic_add"
|
||||||
|
android:title="@string/create"
|
||||||
|
app:showAsAction="always" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
Reference in New Issue
Block a user