kunfei 3 лет назад
Родитель
Сommit
b215c726e6

+ 3 - 0
app/src/main/java/io/legado/app/data/dao/DictRuleDao.kt

@@ -20,6 +20,9 @@ interface DictRuleDao {
     @Query("select * from dictRules where enabled = 1 order by sortNumber")
     @Query("select * from dictRules where enabled = 1 order by sortNumber")
     fun flowAll(): Flow<List<DictRule>>
     fun flowAll(): Flow<List<DictRule>>
 
 
+    @Query("select * from dictRules where name = :name")
+    fun getByName(name: String): DictRule?
+
     @Upsert
     @Upsert
     fun upsert(vararg dictRule: DictRule)
     fun upsert(vararg dictRule: DictRule)
 
 

+ 5 - 4
app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt

@@ -18,6 +18,7 @@ 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 io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.setEdgeEffectColor
 import io.legado.app.utils.setEdgeEffectColor
+import io.legado.app.utils.showDialogFragment
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
@@ -77,7 +78,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
 
 
     override fun onContextItemSelected(item: MenuItem): Boolean {
     override fun onContextItemSelected(item: MenuItem): Boolean {
         when (item.itemId) {
         when (item.itemId) {
-            R.id.menu_create -> {}
+            R.id.menu_create -> showDialogFragment<DictRuleEditDialog>()
         }
         }
         return super.onContextItemSelected(item)
         return super.onContextItemSelected(item)
     }
     }
@@ -91,9 +92,9 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
 
 
     override fun selectAll(selectAll: Boolean) {
     override fun selectAll(selectAll: Boolean) {
         if (selectAll) {
         if (selectAll) {
-            adapter.revertSelection()
-        } else {
             adapter.selectAll()
             adapter.selectAll()
+        } else {
+            adapter.revertSelection()
         }
         }
     }
     }
 
 
@@ -110,7 +111,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
     }
     }
 
 
     override fun edit(rule: DictRule) {
     override fun edit(rule: DictRule) {
-
+        showDialogFragment(DictRuleEditDialog(rule.name))
     }
     }
 
 
     override fun upOrder() {
     override fun upOrder() {

+ 60 - 0
app/src/main/java/io/legado/app/ui/dict/rule/DictRuleEditDialog.kt

@@ -0,0 +1,60 @@
+package io.legado.app.ui.dict.rule
+
+import android.app.Application
+import android.os.Bundle
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.viewModels
+import io.legado.app.R
+import io.legado.app.base.BaseDialogFragment
+import io.legado.app.base.BaseViewModel
+import io.legado.app.data.appDb
+import io.legado.app.data.entities.DictRule
+import io.legado.app.databinding.DialogDictRuleEditBinding
+import io.legado.app.lib.theme.primaryColor
+import io.legado.app.utils.setLayout
+import io.legado.app.utils.viewbindingdelegate.viewBinding
+
+class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit, true) {
+
+    val viewModel by viewModels<DictRuleEditViewModel>()
+    val binding by viewBinding(DialogDictRuleEditBinding::bind)
+
+    constructor(name: String) : this() {
+        arguments = Bundle().apply {
+            putString("name", name)
+        }
+    }
+
+    override fun onStart() {
+        super.onStart()
+        setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
+    }
+
+    override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
+        binding.toolBar.setBackgroundColor(primaryColor)
+        viewModel.initData(arguments?.getString("name")) {
+            binding.tvRuleName.setText(viewModel.dictRule?.name)
+            binding.tvUrlRule.setText(viewModel.dictRule?.urlRule)
+            binding.tvShowRule.setText(viewModel.dictRule?.showRule)
+        }
+    }
+
+
+    class DictRuleEditViewModel(application: Application) : BaseViewModel(application) {
+
+        var dictRule: DictRule? = null
+
+        fun initData(name: String?, onFinally: () -> Unit) {
+            execute {
+                if (dictRule == null && name != null) {
+                    dictRule = appDb.dictRuleDao.getByName(name)
+                }
+            }.onFinally {
+                onFinally.invoke()
+            }
+        }
+
+    }
+
+}

+ 86 - 0
app/src/main/res/layout/dialog_dict_rule_edit.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="16dp">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:background="@drawable/shape_card_view"
+        android:orientation="vertical"
+        tools:ignore="UselessParent">
+
+        <androidx.appcompat.widget.Toolbar
+            android:id="@+id/tool_bar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/background_menu"
+            android:elevation="5dp"
+            android:theme="?attr/actionBarStyle"
+            app:displayHomeAsUp="false"
+            app:fitStatusBar="false"
+            app:popupTheme="@style/AppTheme.PopupOverlay"
+            app:title="@string/dict_rule"
+            app:titleTextAppearance="@style/ToolbarTitle" />
+
+        <androidx.core.widget.NestedScrollView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="6dp"
+            android:overScrollMode="ifContentScrolls">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <io.legado.app.ui.widget.text.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/name">
+
+                    <io.legado.app.lib.theme.view.ThemeEditText
+                        android:id="@+id/tv_rule_name"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
+
+                </io.legado.app.ui.widget.text.TextInputLayout>
+
+                <io.legado.app.ui.widget.text.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/url_rule">
+
+                    <io.legado.app.lib.theme.view.ThemeEditText
+                        android:id="@+id/tv_url_rule"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
+
+                </io.legado.app.ui.widget.text.TextInputLayout>
+
+                <io.legado.app.ui.widget.text.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/show_rule">
+
+                    <io.legado.app.lib.theme.view.ThemeEditText
+                        android:id="@+id/tv_show_rule"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
+
+                </io.legado.app.ui.widget.text.TextInputLayout>
+
+            </LinearLayout>
+
+        </androidx.core.widget.NestedScrollView>
+
+    </LinearLayout>
+
+</FrameLayout>

+ 1 - 0
app/src/main/res/layout/dialog_toc_regex_edit.xml

@@ -30,6 +30,7 @@
         <androidx.core.widget.NestedScrollView
         <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:paddingTop="6dp"
             android:overScrollMode="ifContentScrolls">
             android:overScrollMode="ifContentScrolls">
 
 
             <LinearLayout
             <LinearLayout

+ 2 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -1075,4 +1075,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -1078,4 +1078,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -1078,4 +1078,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values-zh-rHK/strings.xml

@@ -1075,4 +1075,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values-zh-rTW/strings.xml

@@ -1077,4 +1077,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values-zh/strings.xml

@@ -1077,4 +1077,6 @@
     <string name="dict_rule">字典规则</string>
     <string name="dict_rule">字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="config_dict_rule">配置字典规则</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -1078,4 +1078,6 @@
     <string name="dict_rule">Dict rule</string>
     <string name="dict_rule">Dict rule</string>
     <string name="config_dict_rule">Config dict rule</string>
     <string name="config_dict_rule">Config dict rule</string>
     <string name="create">新建</string>
     <string name="create">新建</string>
+    <string name="url_rule">url规则(urlRule)</string>
+    <string name="show_rule">显示规则(showRule)</string>
 </resources>
 </resources>