kunfei 3 anni fa
parent
commit
258dc9eeea

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt

@@ -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 ->

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt

@@ -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 -> {

+ 10 - 3
app/src/main/java/io/legado/app/ui/book/import/remote/ServerConfigDialog.kt

@@ -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) {

+ 41 - 9
app/src/main/java/io/legado/app/ui/book/import/remote/ServersDialog.kt

@@ -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 {
-                root.setBackgroundColor(context.backgroundColor)
-                rbServer.text = item.name
-                rbServer.isChecked = item.id == selectServerId
+            if (payloads.isEmpty()) {
+                binding.root.setBackgroundColor(context.backgroundColor)
+                binding.rbServer.text = item.name
+                binding.rbServer.isChecked = item.id == selectServerId
+            } else {
+                binding.rbServer.isChecked = item.id == selectServerId
             }
             }
         }
         }
 
 

+ 11 - 0
app/src/main/res/menu/servers.xml

@@ -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>