mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -7,21 +7,20 @@ import android.view.View
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.theme.ThemeStore
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
|
||||
abstract class BaseDialogFragment(
|
||||
@LayoutRes layoutID: Int,
|
||||
private val adaptationSoftKeyboard: Boolean = false
|
||||
) : DialogFragment(layoutID), CoroutineScope by MainScope() {
|
||||
) : DialogFragment(layoutID) {
|
||||
|
||||
private var onDismissListener: OnDismissListener? = null
|
||||
|
||||
@@ -65,13 +64,8 @@ abstract class BaseDialogFragment(
|
||||
onDismissListener?.onDismiss(dialog)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
cancel()
|
||||
}
|
||||
|
||||
fun <T> execute(
|
||||
scope: CoroutineScope = this,
|
||||
scope: CoroutineScope = lifecycleScope,
|
||||
context: CoroutineContext = Dispatchers.IO,
|
||||
block: suspend CoroutineScope.() -> T
|
||||
) = Coroutine.async(scope, context) { block() }
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -20,7 +21,15 @@ import io.legado.app.databinding.Item1lineTextBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.FileDoc
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.delete
|
||||
import io.legado.app.utils.find
|
||||
import io.legado.app.utils.getFile
|
||||
import io.legado.app.utils.list
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.isActive
|
||||
import java.io.FileFilter
|
||||
@@ -59,7 +68,7 @@ class CrashLogsDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
|
||||
private fun showLogFile(fileDoc: FileDoc) {
|
||||
viewModel.readFile(fileDoc) {
|
||||
if (isActive) {
|
||||
if (lifecycleScope.isActive) {
|
||||
showDialogFragment(TextDialog(fileDoc.name, it))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.legado.app.ui.book.bookmark
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.data.appDb
|
||||
@@ -57,7 +58,7 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark, true) {
|
||||
tvOk.setOnClickListener {
|
||||
bookmark.bookText = editBookText.text?.toString() ?: ""
|
||||
bookmark.content = editContent.text?.toString() ?: ""
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
withContext(IO) {
|
||||
appDb.bookmarkDao.insert(bookmark)
|
||||
}
|
||||
@@ -65,7 +66,7 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark, true) {
|
||||
}
|
||||
}
|
||||
tvFooterLeft.setOnClickListener {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
withContext(IO) {
|
||||
appDb.bookmarkDao.delete(bookmark)
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
if (it) {
|
||||
val searchGroup = AppConfig.searchGroup
|
||||
if (searchGroup.isNotEmpty()) {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
alert("搜索结果为空") {
|
||||
setMessage("${searchGroup}分组搜索结果为空,是否切换到全部分组")
|
||||
cancelButton()
|
||||
@@ -204,7 +204,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.bookSourceDao.flowEnabledGroups().flowOn(IO).conflate().collect {
|
||||
groups.clear()
|
||||
groups.addAll(it)
|
||||
@@ -251,7 +251,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
|
||||
AppConfig.searchGroup = item.title.toString()
|
||||
}
|
||||
upGroupMenuName()
|
||||
launch(IO) {
|
||||
lifecycleScope.launch(IO) {
|
||||
if (viewModel.refresh()) {
|
||||
viewModel.startOrStopSearch()
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
|
||||
if (it) {
|
||||
val searchGroup = AppConfig.searchGroup
|
||||
if (searchGroup.isNotEmpty()) {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
alert("搜索结果为空") {
|
||||
setMessage("${searchGroup}分组搜索结果为空,是否切换到全部分组")
|
||||
noButton()
|
||||
@@ -234,7 +234,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.bookSourceDao.flowEnabledGroups().flowOn(IO).conflate().collect {
|
||||
groups.clear()
|
||||
groups.addAll(it)
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -68,7 +69,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.bookGroupDao.flowAll().conflate().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -85,7 +86,7 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.bookGroupDao.flowSelect().conflate().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -8,12 +8,13 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppConst.DEFAULT_WEBDAV_ID
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.constant.AppConst.DEFAULT_WEBDAV_ID
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Server
|
||||
import io.legado.app.databinding.DialogRecyclerViewBinding
|
||||
@@ -77,8 +78,8 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
appDb.serverDao.observeAll().collect{
|
||||
lifecycleScope.launch {
|
||||
appDb.serverDao.observeAll().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -71,7 +72,7 @@ class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) {
|
||||
|
||||
private fun initData(searchKey: String? = null) {
|
||||
sourceFlowJob?.cancel()
|
||||
sourceFlowJob = launch {
|
||||
sourceFlowJob = lifecycleScope.launch {
|
||||
when {
|
||||
searchKey.isNullOrEmpty() -> appDb.bookSourceDao.flowEnabled()
|
||||
else -> appDb.bookSourceDao.flowSearchEnabled(searchKey)
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.BaseViewModel
|
||||
@@ -48,7 +49,7 @@ class ContentEditDialog : BaseDialogFragment(R.layout.dialog_content_edit) {
|
||||
binding.toolBar.title = ReadBook.curTextChapter?.title
|
||||
initMenu()
|
||||
binding.toolBar.setOnClickListener {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
val book = ReadBook.book ?: return@launch
|
||||
val chapter = withContext(IO) {
|
||||
appDb.bookChapterDao.getChapter(book.bookUrl, ReadBook.durChapterIndex)
|
||||
@@ -103,7 +104,7 @@ class ContentEditDialog : BaseDialogFragment(R.layout.dialog_content_edit) {
|
||||
setCustomView(alertBinding.root)
|
||||
okButton {
|
||||
chapter.title = alertBinding.editView.text.toString()
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
withContext(IO) {
|
||||
appDb.bookChapterDao.upDate(chapter)
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -28,8 +29,21 @@ import io.legado.app.model.ReadBook
|
||||
import io.legado.app.ui.association.ImportHttpTtsDialog
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.ui.login.SourceLoginActivity
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.ACache
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.fromJsonObject
|
||||
import io.legado.app.utils.gone
|
||||
import io.legado.app.utils.isAbsUrl
|
||||
import io.legado.app.utils.isJsonObject
|
||||
import io.legado.app.utils.sendToClip
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.splitNotBlank
|
||||
import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import io.legado.app.utils.visible
|
||||
import kotlinx.coroutines.flow.conflate
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -148,7 +162,7 @@ class SpeakEngineDialog(val callBack: CallBack) : BaseDialogFragment(R.layout.di
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.httpTTSDao.flowAll().conflate().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -100,7 +101,7 @@ class SearchScopeDialog : BaseDialogFragment(R.layout.dialog_search_scope) {
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
groups = withContext(IO) {
|
||||
appDb.bookSourceDao.allEnabledGroups()
|
||||
}
|
||||
@@ -113,7 +114,7 @@ class SearchScopeDialog : BaseDialogFragment(R.layout.dialog_search_scope) {
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun upData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
withContext(IO) {
|
||||
if (binding.rbSource.isChecked) {
|
||||
sources.filter { source ->
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -56,7 +57,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.bookSourceDao.flowGroups().flowOn(IO).collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -106,7 +107,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.txtTocRuleDao.observeAll().conflate().collect { tocRules ->
|
||||
initSelectedName(tocRules)
|
||||
adapter.setItems(tocRules, adapter.diffItemCallBack)
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogCoverRuleConfigBinding
|
||||
@@ -53,7 +54,7 @@ class CoverRuleConfigDialog : BaseDialogFragment(R.layout.dialog_cover_rule_conf
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
val rule = withContext(IO) {
|
||||
BookCover.getCoverRule()
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -19,7 +20,19 @@ import io.legado.app.lib.permission.Permissions
|
||||
import io.legado.app.lib.permission.PermissionsCompat
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.FileDoc
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.RealPathUtil
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.cnCompare
|
||||
import io.legado.app.utils.externalFiles
|
||||
import io.legado.app.utils.getPrefString
|
||||
import io.legado.app.utils.isContentScheme
|
||||
import io.legado.app.utils.list
|
||||
import io.legado.app.utils.listFileDocs
|
||||
import io.legado.app.utils.putPrefString
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -111,7 +124,7 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
|
||||
}
|
||||
|
||||
private fun openFolder() {
|
||||
launch(Main) {
|
||||
lifecycleScope.launch(Main) {
|
||||
val defaultPath = "SD${File.separator}Fonts"
|
||||
selectFontDir.launch {
|
||||
otherActions = arrayListOf(SelectItem(defaultPath, -1))
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.constant.AppLog
|
||||
@@ -19,13 +20,26 @@ import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.dpToPx
|
||||
import io.legado.app.utils.isAbsUrl
|
||||
import io.legado.app.utils.openUrl
|
||||
import io.legado.app.utils.printOnDebug
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import splitties.views.onClick
|
||||
import kotlin.collections.HashMap
|
||||
import kotlin.collections.List
|
||||
import kotlin.collections.forEachIndexed
|
||||
import kotlin.collections.hashMapOf
|
||||
import kotlin.collections.set
|
||||
|
||||
|
||||
class SourceLoginDialog : BaseDialogFragment(R.layout.dialog_login, true) {
|
||||
@@ -140,7 +154,7 @@ class SourceLoginDialog : BaseDialogFragment(R.layout.dialog_login, true) {
|
||||
}
|
||||
|
||||
private fun login(source: BaseSource, loginData: HashMap<String, String>) {
|
||||
launch(IO) {
|
||||
lifecycleScope.launch(IO) {
|
||||
if (loginData.isEmpty()) {
|
||||
source.removeLoginInfo()
|
||||
withContext(Main) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -59,7 +60,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.replaceRuleDao.flowGroups().conflate().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -61,7 +62,7 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.rssSourceDao.flowGroups().conflate().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.legado.app.ui.widget.dialog
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogTextViewBinding
|
||||
@@ -80,7 +81,7 @@ class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
|
||||
}
|
||||
if (time > 0) {
|
||||
binding.badgeView.setBadgeCount((time / 1000).toInt())
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
while (time > 0) {
|
||||
delay(1000)
|
||||
time -= 1000
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -67,7 +68,7 @@ class KeyboardAssistsConfig : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
launch {
|
||||
lifecycleScope.launch {
|
||||
appDb.keyboardAssistsDao.flowAll.collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
@@ -94,7 +95,7 @@ class KeyboardAssistsConfig : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
setCustomView(alertBinding.root)
|
||||
cancelButton()
|
||||
okButton {
|
||||
launch(IO) {
|
||||
lifecycleScope.launch(IO) {
|
||||
val newKeyboardAssist = KeyboardAssist(
|
||||
key = alertBinding.edit1.text.toString(),
|
||||
value = alertBinding.edit2.text.toString()
|
||||
@@ -142,7 +143,7 @@ class KeyboardAssistsConfig : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
}
|
||||
binding.ivDelete.setOnClickListener {
|
||||
getItemByLayoutPosition(holder.layoutPosition)?.let { keyboardAssist ->
|
||||
launch(IO) {
|
||||
lifecycleScope.launch(IO) {
|
||||
appDb.keyboardAssistsDao.delete(keyboardAssist)
|
||||
}
|
||||
}
|
||||
@@ -160,7 +161,7 @@ class KeyboardAssistsConfig : BaseDialogFragment(R.layout.dialog_recycler_view),
|
||||
for ((index, item) in getItems().withIndex()) {
|
||||
item.serialNo = index + 1
|
||||
}
|
||||
launch(IO) {
|
||||
lifecycleScope.launch(IO) {
|
||||
appDb.keyboardAssistsDao.update(*getItems().toTypedArray())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user