优化代码

pull/346/head
gedoor 5 years ago
parent 0e88541771
commit c0cad75f9f
  1. 5
      app/src/main/java/io/legado/app/constant/AppPattern.kt
  2. 3
      app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
  3. 3
      app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt
  4. 57
      app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt
  5. 3
      app/src/main/java/io/legado/app/ui/book/source/manage/GroupManageDialog.kt
  6. 3
      app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
  7. 3
      app/src/main/java/io/legado/app/ui/replacerule/GroupManageDialog.kt
  8. 3
      app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt
  9. 3
      app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt
  10. 3
      app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt

@ -3,8 +3,11 @@ package io.legado.app.constant
import java.util.regex.Pattern import java.util.regex.Pattern
object AppPattern { object AppPattern {
val JS_PATTERN: Pattern = Pattern.compile("(<js>[\\w\\W]*?</js>|@js:[\\w\\W]*$)", Pattern.CASE_INSENSITIVE) val JS_PATTERN: Pattern =
Pattern.compile("(<js>[\\w\\W]*?</js>|@js:[\\w\\W]*$)", Pattern.CASE_INSENSITIVE)
val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}") val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}")
val authorRegex = "\\s*者\\s*[::]".toRegex() val authorRegex = "\\s*者\\s*[::]".toRegex()
val splitGroupRegex = Regex("[,;]")
} }

@ -13,6 +13,7 @@ import com.google.android.flexbox.FlexboxLayoutManager
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppPattern
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.Book import io.legado.app.data.entities.Book
import io.legado.app.data.entities.SearchBook import io.legado.app.data.entities.SearchBook
@ -178,7 +179,7 @@ class SearchActivity : VMBaseActivity<SearchViewModel>(R.layout.activity_book_se
App.db.bookSourceDao().liveGroupEnabled().observe(this, { App.db.bookSourceDao().liveGroupEnabled().observe(this, {
groups.clear() groups.clear()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
upGroupMenu() upGroupMenu()
}) })

@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import io.legado.app.help.IntentDataHelp import io.legado.app.help.IntentDataHelp
import io.legado.app.help.ItemTouchCallback import io.legado.app.help.ItemTouchCallback
@ -181,7 +182,7 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity
App.db.bookSourceDao().liveGroup().observe(this, { App.db.bookSourceDao().liveGroup().observe(this, {
groups.clear() groups.clear()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
upGroupMenu() upGroupMenu()
}) })

@ -5,6 +5,7 @@ import android.text.TextUtils
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import io.legado.app.App import io.legado.app.App
import io.legado.app.base.BaseViewModel import io.legado.app.base.BaseViewModel
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import io.legado.app.utils.GSON import io.legado.app.utils.GSON
@ -94,41 +95,41 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
} }
fun selectionAddToGroups(sources: List<BookSource>, groups: String) { fun selectionAddToGroups(sources: List<BookSource>, groups: String) {
execute { execute {
val list = arrayListOf<BookSource>() val list = arrayListOf<BookSource>()
sources.forEach { sources.forEach { source ->
val newGroupList = arrayListOf<String>() val newGroupList = arrayListOf<String>()
it.bookSourceGroup?.splitNotBlank(",", ";")?.forEach { source.bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.forEach {
newGroupList.add(it) newGroupList.add(it)
}
groups.splitNotBlank(",", ";", "").forEach {
newGroupList.add(it)
}
val lh = LinkedHashSet(newGroupList)
val newGroup = ArrayList(lh).joinToString(separator = ",")
list.add(it.copy(bookSourceGroup = newGroup))
} }
App.db.bookSourceDao().update(*list.toTypedArray()) groups.splitNotBlank(",", ";", "").forEach {
newGroupList.add(it)
}
val lh = LinkedHashSet(newGroupList)
val newGroup = ArrayList(lh).joinToString(separator = ",")
list.add(source.copy(bookSourceGroup = newGroup))
} }
App.db.bookSourceDao().update(*list.toTypedArray())
}
} }
fun selectionRemoveFromGroups(sources: List<BookSource>, groups: String) { fun selectionRemoveFromGroups(sources: List<BookSource>, groups: String) {
execute { execute {
val list = arrayListOf<BookSource>() val list = arrayListOf<BookSource>()
sources.forEach { sources.forEach { source ->
val newGroupList = arrayListOf<String>() val newGroupList = arrayListOf<String>()
it.bookSourceGroup?.splitNotBlank(",", ";")?.forEach { source.bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.forEach {
newGroupList.add(it) newGroupList.add(it)
}
groups.splitNotBlank(",", ";", "").forEach {
newGroupList.remove(it)
}
val lh = LinkedHashSet(newGroupList)
val newGroup = ArrayList(lh).joinToString(separator = ",")
list.add(it.copy(bookSourceGroup = newGroup))
} }
App.db.bookSourceDao().update(*list.toTypedArray()) groups.splitNotBlank(",", ";", "").forEach {
newGroupList.remove(it)
}
val lh = LinkedHashSet(newGroupList)
val newGroup = ArrayList(lh).joinToString(separator = ",")
list.add(source.copy(bookSourceGroup = newGroup))
} }
App.db.bookSourceDao().update(*list.toTypedArray())
}
} }
fun delSelection(sources: List<BookSource>) { fun delSelection(sources: List<BookSource>) {

@ -16,6 +16,7 @@ import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.base.adapter.SimpleRecyclerAdapter
import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton import io.legado.app.lib.dialogs.noButton
@ -71,7 +72,7 @@ class GroupManageDialog : DialogFragment(), Toolbar.OnMenuItemClickListener {
App.db.bookSourceDao().liveGroup().observe(viewLifecycleOwner, { App.db.bookSourceDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf<String>() val groups = linkedSetOf<String>()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
adapter.setItems(groups.toList()) adapter.setItems(groups.toList())
}) })

@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseFragment import io.legado.app.base.VMBaseFragment
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.primaryTextColor import io.legado.app.lib.theme.primaryTextColor
@ -95,7 +96,7 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_find_
liveGroup?.observe(viewLifecycleOwner, { liveGroup?.observe(viewLifecycleOwner, {
groups.clear() groups.clear()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
upGroupsMenu() upGroupsMenu()
}) })

@ -16,6 +16,7 @@ import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.base.adapter.SimpleRecyclerAdapter
import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton import io.legado.app.lib.dialogs.noButton
@ -71,7 +72,7 @@ class GroupManageDialog : DialogFragment(), Toolbar.OnMenuItemClickListener {
App.db.replaceRuleDao().liveGroup().observe(viewLifecycleOwner, { App.db.replaceRuleDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf<String>() val groups = linkedSetOf<String>()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
adapter.setItems(groups.toList()) adapter.setItems(groups.toList())
}) })

@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.ReplaceRule import io.legado.app.data.entities.ReplaceRule
import io.legado.app.help.BookHelp import io.legado.app.help.BookHelp
import io.legado.app.help.IntentDataHelp import io.legado.app.help.IntentDataHelp
@ -148,7 +149,7 @@ class ReplaceRuleActivity : VMBaseActivity<ReplaceRuleViewModel>(R.layout.activi
App.db.replaceRuleDao().liveGroup().observe(this, { App.db.replaceRuleDao().liveGroup().observe(this, {
groups.clear() groups.clear()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
upGroupMenu() upGroupMenu()
}) })

@ -16,6 +16,7 @@ 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
import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.base.adapter.SimpleRecyclerAdapter
import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton import io.legado.app.lib.dialogs.noButton
@ -65,7 +66,7 @@ class GroupManageDialog : BaseDialogFragment(), Toolbar.OnMenuItemClickListener
App.db.rssSourceDao().liveGroup().observe(viewLifecycleOwner, { App.db.rssSourceDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf<String>() val groups = linkedSetOf<String>()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
adapter.setItems(groups.toList()) adapter.setItems(groups.toList())
}) })

@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.RssSource import io.legado.app.data.entities.RssSource
import io.legado.app.help.IntentDataHelp import io.legado.app.help.IntentDataHelp
import io.legado.app.help.ItemTouchCallback import io.legado.app.help.ItemTouchCallback
@ -144,7 +145,7 @@ class RssSourceActivity : VMBaseActivity<RssSourceViewModel>(R.layout.activity_r
App.db.rssSourceDao().liveGroup().observe(this, { App.db.rssSourceDao().liveGroup().observe(this, {
groups.clear() groups.clear()
it.map { group -> it.map { group ->
groups.addAll(group.splitNotBlank(",", ";")) groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
} }
upGroupMenu() upGroupMenu()
}) })

Loading…
Cancel
Save