Horis 3 lat temu
rodzic
commit
bcaa10eae6

+ 43 - 1
app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt

@@ -28,6 +28,8 @@ import io.legado.app.lib.dialogs.selector
 import io.legado.app.lib.theme.accentColor
 import io.legado.app.lib.theme.accentColor
 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.book.search.SearchActivity
+import io.legado.app.ui.book.search.SearchScope
 import io.legado.app.ui.book.source.debug.BookSourceDebugActivity
 import io.legado.app.ui.book.source.debug.BookSourceDebugActivity
 import io.legado.app.ui.file.HandleFileContract
 import io.legado.app.ui.file.HandleFileContract
 import io.legado.app.ui.login.SourceLoginActivity
 import io.legado.app.ui.login.SourceLoginActivity
@@ -119,11 +121,13 @@ class BookSourceEditActivity :
                 setResult(Activity.RESULT_OK)
                 setResult(Activity.RESULT_OK)
                 finish()
                 finish()
             }
             }
+
             R.id.menu_debug_source -> viewModel.save(getSource()) { source ->
             R.id.menu_debug_source -> viewModel.save(getSource()) { source ->
                 startActivity<BookSourceDebugActivity> {
                 startActivity<BookSourceDebugActivity> {
                     putExtra("key", source.bookSourceUrl)
                     putExtra("key", source.bookSourceUrl)
                 }
                 }
             }
             }
+
             R.id.menu_clear_cookie -> viewModel.clearCookie(getSource().bookSourceUrl)
             R.id.menu_clear_cookie -> viewModel.clearCookie(getSource().bookSourceUrl)
             R.id.menu_auto_complete -> viewModel.autoComplete = !viewModel.autoComplete
             R.id.menu_auto_complete -> viewModel.autoComplete = !viewModel.autoComplete
             R.id.menu_copy_source -> sendToClip(GSON.toJson(getSource()))
             R.id.menu_copy_source -> sendToClip(GSON.toJson(getSource()))
@@ -135,6 +139,7 @@ class BookSourceEditActivity :
                 getString(R.string.share_book_source),
                 getString(R.string.share_book_source),
                 ErrorCorrectionLevel.L
                 ErrorCorrectionLevel.L
             )
             )
+
             R.id.menu_help -> showHelp("ruleHelp")
             R.id.menu_help -> showHelp("ruleHelp")
             R.id.menu_login -> viewModel.save(getSource()) { source ->
             R.id.menu_login -> viewModel.save(getSource()) { source ->
                 startActivity<SourceLoginActivity> {
                 startActivity<SourceLoginActivity> {
@@ -142,7 +147,14 @@ class BookSourceEditActivity :
                     putExtra("key", source.bookSourceUrl)
                     putExtra("key", source.bookSourceUrl)
                 }
                 }
             }
             }
+
             R.id.menu_set_source_variable -> setSourceVariable()
             R.id.menu_set_source_variable -> setSourceVariable()
+            R.id.menu_search -> viewModel.save(getSource()) { source ->
+                startActivity<SearchActivity> {
+                    putExtra("searchScope", SearchScope(source).toString())
+                }
+            }
+
         }
         }
         return super.onCompatOptionsItemSelected(item)
         return super.onCompatOptionsItemSelected(item)
     }
     }
@@ -387,20 +399,28 @@ class BookSourceEditActivity :
                 "bookList" -> searchRule.bookList = it.value
                 "bookList" -> searchRule.bookList = it.value
                 "name" -> searchRule.name =
                 "name" -> searchRule.name =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "author" -> searchRule.author =
                 "author" -> searchRule.author =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "kind" -> searchRule.kind =
                 "kind" -> searchRule.kind =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "intro" -> searchRule.intro =
                 "intro" -> searchRule.intro =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "updateTime" -> searchRule.updateTime =
                 "updateTime" -> searchRule.updateTime =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "wordCount" -> searchRule.wordCount =
                 "wordCount" -> searchRule.wordCount =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "lastChapter" -> searchRule.lastChapter =
                 "lastChapter" -> searchRule.lastChapter =
                     viewModel.ruleComplete(it.value, searchRule.bookList)
                     viewModel.ruleComplete(it.value, searchRule.bookList)
+
                 "coverUrl" -> searchRule.coverUrl =
                 "coverUrl" -> searchRule.coverUrl =
                     viewModel.ruleComplete(it.value, searchRule.bookList, 3)
                     viewModel.ruleComplete(it.value, searchRule.bookList, 3)
+
                 "bookUrl" -> searchRule.bookUrl =
                 "bookUrl" -> searchRule.bookUrl =
                     viewModel.ruleComplete(it.value, searchRule.bookList, 2)
                     viewModel.ruleComplete(it.value, searchRule.bookList, 2)
             }
             }
@@ -411,20 +431,28 @@ class BookSourceEditActivity :
                 "bookList" -> exploreRule.bookList = it.value
                 "bookList" -> exploreRule.bookList = it.value
                 "name" -> exploreRule.name =
                 "name" -> exploreRule.name =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "author" -> exploreRule.author =
                 "author" -> exploreRule.author =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "kind" -> exploreRule.kind =
                 "kind" -> exploreRule.kind =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "intro" -> exploreRule.intro =
                 "intro" -> exploreRule.intro =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "updateTime" -> exploreRule.updateTime =
                 "updateTime" -> exploreRule.updateTime =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "wordCount" -> exploreRule.wordCount =
                 "wordCount" -> exploreRule.wordCount =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "lastChapter" -> exploreRule.lastChapter =
                 "lastChapter" -> exploreRule.lastChapter =
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
                     viewModel.ruleComplete(it.value, exploreRule.bookList)
+
                 "coverUrl" -> exploreRule.coverUrl =
                 "coverUrl" -> exploreRule.coverUrl =
                     viewModel.ruleComplete(it.value, exploreRule.bookList, 3)
                     viewModel.ruleComplete(it.value, exploreRule.bookList, 3)
+
                 "bookUrl" -> exploreRule.bookUrl =
                 "bookUrl" -> exploreRule.bookUrl =
                     viewModel.ruleComplete(it.value, exploreRule.bookList, 2)
                     viewModel.ruleComplete(it.value, exploreRule.bookList, 2)
             }
             }
@@ -435,20 +463,28 @@ class BookSourceEditActivity :
                 "name" -> bookInfoRule.name = viewModel.ruleComplete(it.value, bookInfoRule.init)
                 "name" -> bookInfoRule.name = viewModel.ruleComplete(it.value, bookInfoRule.init)
                 "author" -> bookInfoRule.author =
                 "author" -> bookInfoRule.author =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "kind" -> bookInfoRule.kind =
                 "kind" -> bookInfoRule.kind =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "intro" -> bookInfoRule.intro =
                 "intro" -> bookInfoRule.intro =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "updateTime" -> bookInfoRule.updateTime =
                 "updateTime" -> bookInfoRule.updateTime =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "wordCount" -> bookInfoRule.wordCount =
                 "wordCount" -> bookInfoRule.wordCount =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "lastChapter" -> bookInfoRule.lastChapter =
                 "lastChapter" -> bookInfoRule.lastChapter =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
+
                 "coverUrl" -> bookInfoRule.coverUrl =
                 "coverUrl" -> bookInfoRule.coverUrl =
                     viewModel.ruleComplete(it.value, bookInfoRule.init, 3)
                     viewModel.ruleComplete(it.value, bookInfoRule.init, 3)
+
                 "tocUrl" -> bookInfoRule.tocUrl =
                 "tocUrl" -> bookInfoRule.tocUrl =
                     viewModel.ruleComplete(it.value, bookInfoRule.init, 2)
                     viewModel.ruleComplete(it.value, bookInfoRule.init, 2)
+
                 "canReName" -> bookInfoRule.canReName = it.value
                 "canReName" -> bookInfoRule.canReName = it.value
                 "downloadUrls" -> bookInfoRule.downloadUrls =
                 "downloadUrls" -> bookInfoRule.downloadUrls =
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
                     viewModel.ruleComplete(it.value, bookInfoRule.init)
@@ -493,12 +529,16 @@ class BookSourceEditActivity :
                 "reviewUrl" -> reviewRule.reviewUrl = it.value
                 "reviewUrl" -> reviewRule.reviewUrl = it.value
                 "avatarRule" -> reviewRule.avatarRule =
                 "avatarRule" -> reviewRule.avatarRule =
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl, 3)
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl, 3)
+
                 "contentRule" -> reviewRule.contentRule =
                 "contentRule" -> reviewRule.contentRule =
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl)
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl)
+
                 "postTimeRule" -> reviewRule.postTimeRule =
                 "postTimeRule" -> reviewRule.postTimeRule =
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl)
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl)
+
                 "reviewQuoteUrl" -> reviewRule.reviewQuoteUrl =
                 "reviewQuoteUrl" -> reviewRule.reviewQuoteUrl =
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl, 2)
                     viewModel.ruleComplete(it.value, reviewRule.reviewUrl, 2)
+
                 "voteUpUrl" -> reviewRule.voteUpUrl = it.value
                 "voteUpUrl" -> reviewRule.voteUpUrl = it.value
                 "voteDownUrl" -> reviewRule.voteDownUrl = it.value
                 "voteDownUrl" -> reviewRule.voteDownUrl = it.value
                 "postReviewUrl" -> reviewRule.postReviewUrl = it.value
                 "postReviewUrl" -> reviewRule.postReviewUrl = it.value
@@ -541,6 +581,7 @@ class BookSourceEditActivity :
                         SelectItem("插入分组", "addGroup")
                         SelectItem("插入分组", "addGroup")
                     )
                     )
                 }
                 }
+
                 else -> {
                 else -> {
                     helpActions.add(
                     helpActions.add(
                         SelectItem("选择文件", "selectFile")
                         SelectItem("选择文件", "selectFile")
@@ -588,7 +629,8 @@ class BookSourceEditActivity :
     private fun setSourceVariable() {
     private fun setSourceVariable() {
         viewModel.save(getSource()) { source ->
         viewModel.save(getSource()) { source ->
             launch {
             launch {
-                val comment = source.getDisplayVariableComment("源变量可在js中通过source.getVariable()获取")
+                val comment =
+                    source.getDisplayVariableComment("源变量可在js中通过source.getVariable()获取")
                 val variable = withContext(IO) { source.getVariable() }
                 val variable = withContext(IO) { source.getVariable() }
                 showDialogFragment(
                 showDialogFragment(
                     VariableDialog(
                     VariableDialog(

+ 3 - 1
app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt

@@ -164,6 +164,7 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
             when (it.itemId) {
             when (it.itemId) {
                 R.id.menu_edit -> callBack.editSource(source.bookSourceUrl)
                 R.id.menu_edit -> callBack.editSource(source.bookSourceUrl)
                 R.id.menu_top -> callBack.toTop(source)
                 R.id.menu_top -> callBack.toTop(source)
+                R.id.menu_search -> callBack.searchBook(source)
                 R.id.menu_login -> context.startActivity<SourceLoginActivity> {
                 R.id.menu_login -> context.startActivity<SourceLoginActivity> {
                     putExtra("type", "bookSource")
                     putExtra("type", "bookSource")
                     putExtra("key", source.bookSourceUrl)
                     putExtra("key", source.bookSourceUrl)
@@ -188,5 +189,6 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
         fun editSource(sourceUrl: String)
         fun editSource(sourceUrl: String)
         fun toTop(source: BookSource)
         fun toTop(source: BookSource)
         fun deleteSource(source: BookSource)
         fun deleteSource(source: BookSource)
+        fun searchBook(bookSource: BookSource)
     }
     }
-}
+}

+ 8 - 0
app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt

@@ -22,6 +22,8 @@ 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.lib.theme.primaryTextColor
 import io.legado.app.lib.theme.primaryTextColor
 import io.legado.app.ui.book.explore.ExploreShowActivity
 import io.legado.app.ui.book.explore.ExploreShowActivity
+import io.legado.app.ui.book.search.SearchActivity
+import io.legado.app.ui.book.search.SearchScope
 import io.legado.app.ui.book.source.edit.BookSourceEditActivity
 import io.legado.app.ui.book.source.edit.BookSourceEditActivity
 import io.legado.app.ui.main.MainActivity
 import io.legado.app.ui.main.MainActivity
 import io.legado.app.ui.main.MainFragmentInterface
 import io.legado.app.ui.main.MainFragmentInterface
@@ -214,6 +216,12 @@ class ExploreFragment() : VMBaseFragment<ExploreViewModel>(R.layout.fragment_exp
         }
         }
     }
     }
 
 
+    override fun searchBook(bookSource: BookSource) {
+        startActivity<SearchActivity> {
+            putExtra("searchScope", SearchScope(bookSource).toString())
+        }
+    }
+
     fun compressExplore() {
     fun compressExplore() {
         if (!adapter.compressExplore()) {
         if (!adapter.compressExplore()) {
             if (AppConfig.isEInkMode) {
             if (AppConfig.isEInkMode) {

+ 4 - 0
app/src/main/res/menu/explore_item.xml

@@ -13,6 +13,10 @@
         android:id="@+id/menu_login"
         android:id="@+id/menu_login"
         android:title="@string/login" />
         android:title="@string/login" />
 
 
+    <item
+        android:id="@+id/menu_search"
+        android:title="@string/search" />
+
     <item
     <item
         android:id="@+id/menu_refresh"
         android:id="@+id/menu_refresh"
         android:title="@string/refresh" />
         android:title="@string/refresh" />

+ 8 - 3
app/src/main/res/menu/source_edit.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:tools="http://schemas.android.com/tools"
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     tools:ignore="AlwaysShowAction">
     tools:ignore="AlwaysShowAction">
 
 
     <item
     <item
@@ -21,6 +21,11 @@
         android:title="@string/login"
         android:title="@string/login"
         app:showAsAction="never" />
         app:showAsAction="never" />
 
 
+    <item
+        android:id="@+id/menu_search"
+        android:title="@string/search"
+        app:showAsAction="never" />
+
     <item
     <item
         android:id="@+id/menu_clear_cookie"
         android:id="@+id/menu_clear_cookie"
         android:title="@string/cookie"
         android:title="@string/cookie"
@@ -28,8 +33,8 @@
 
 
     <item
     <item
         android:id="@+id/menu_auto_complete"
         android:id="@+id/menu_auto_complete"
-        android:title="@string/auto_complete"
         android:checkable="true"
         android:checkable="true"
+        android:title="@string/auto_complete"
         app:showAsAction="never" />
         app:showAsAction="never" />
 
 
     <item
     <item