mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -16,11 +16,15 @@ import io.legado.app.constant.AppConst.channelIdReadAloud
|
||||
import io.legado.app.constant.AppConst.channelIdWeb
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.help.*
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.CrashHandler
|
||||
import io.legado.app.help.LifecycleHelp
|
||||
import io.legado.app.help.RuleBigDataHelp
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ThemeConfig.applyDayNight
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.http.cronet.CronetLoader
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.model.BookCover
|
||||
import io.legado.app.utils.defaultSharedPreferences
|
||||
import io.legado.app.utils.getPrefBoolean
|
||||
|
||||
@@ -7,8 +7,12 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookProgress
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.help.*
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.CacheManager
|
||||
import io.legado.app.help.ContentProcessor
|
||||
import io.legado.app.help.glide.ImageLoader
|
||||
import io.legado.app.help.isLocal
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.model.BookCover
|
||||
import io.legado.app.model.localBook.LocalBook
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package io.legado.app.ui.book.remote
|
||||
package io.legado.app.data.entities
|
||||
|
||||
import com.android.tools.r8.Keep
|
||||
|
||||
@Keep
|
||||
data class RemoteBook(
|
||||
val filename: String,
|
||||
val path: String,
|
||||
@@ -6,12 +6,12 @@ import androidx.documentfile.provider.DocumentFile
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.DirectLinkUpload
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.config.ThemeConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.utils.*
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.ensureActive
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.legado.app.help
|
||||
package io.legado.app.help.webdav
|
||||
|
||||
import android.content.Context
|
||||
import io.legado.app.R
|
||||
@@ -1,15 +1,14 @@
|
||||
package io.legado.app.ui.book.remote.manager
|
||||
package io.legado.app.help.webdav
|
||||
|
||||
import android.net.Uri
|
||||
import io.legado.app.constant.AppPattern.bookFileRegex
|
||||
import io.legado.app.constant.BookType
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.RemoteBook
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.lib.webdav.WebDav
|
||||
import io.legado.app.lib.webdav.WebDavFile
|
||||
import io.legado.app.model.localBook.LocalBook
|
||||
import io.legado.app.ui.book.remote.RemoteBook
|
||||
import io.legado.app.ui.book.remote.RemoteBookManager
|
||||
import io.legado.app.utils.NetworkUtils
|
||||
import io.legado.app.utils.isContentScheme
|
||||
@@ -89,7 +88,7 @@ object RemoteBookWebDav : RemoteBookManager() {
|
||||
override suspend fun upload(book: Book): Boolean {
|
||||
if (!NetworkUtils.isAvailable()) return false
|
||||
val localBookUri = Uri.parse(book.bookUrl)
|
||||
val putUrl = "${rootBookUrl}${File.separator}${book.originName}"
|
||||
val putUrl = "$rootBookUrl${File.separator}${book.originName}"
|
||||
AppWebDav.authorization?.let {
|
||||
if (localBookUri.isContentScheme()) {
|
||||
WebDav(putUrl, it).upload(
|
||||
@@ -3,13 +3,13 @@ package io.legado.app.model
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.*
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.ContentProcessor
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.isLocal
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
import io.legado.app.service.BaseReadAloudService
|
||||
import io.legado.app.ui.book.read.page.entities.TextChapter
|
||||
|
||||
@@ -14,11 +14,11 @@ import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.exception.TocEmptyException
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.isEpub
|
||||
import io.legado.app.help.isUmd
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.lib.webdav.WebDav
|
||||
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||
import io.legado.app.utils.*
|
||||
|
||||
@@ -18,13 +18,14 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.ContentProcessor
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.OrderCoroutine
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.utils.*
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.ensureActive
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import me.ag2s.epublib.domain.*
|
||||
|
||||
@@ -23,6 +23,7 @@ import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.isAudio
|
||||
import io.legado.app.help.isLocal
|
||||
import io.legado.app.help.isLocalTxt
|
||||
import io.legado.app.help.webdav.RemoteBookWebDav
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.lib.theme.bottomBackground
|
||||
@@ -36,7 +37,6 @@ import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||
import io.legado.app.ui.book.group.GroupSelectDialog
|
||||
import io.legado.app.ui.book.info.edit.BookInfoEditActivity
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.book.remote.manager.RemoteBookWebDav
|
||||
import io.legado.app.ui.book.search.SearchActivity
|
||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||
import io.legado.app.ui.book.toc.TocActivityResult
|
||||
|
||||
@@ -28,6 +28,7 @@ import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.config.ReadTipConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.storage.Backup
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.lib.dialogs.SelectItem
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.dialogs.selector
|
||||
|
||||
@@ -15,12 +15,12 @@ import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
import io.legado.app.data.entities.BookProgress
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.ContentProcessor
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.isLocal
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.model.ReadAloud
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||
|
||||
@@ -10,6 +10,7 @@ import androidx.core.view.isGone
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.data.entities.RemoteBook
|
||||
import io.legado.app.databinding.ActivityImportBookBinding
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
@@ -50,7 +51,7 @@ class RemoteBookActivity : VMBaseActivity<ActivityImportBookBinding, RemoteBookV
|
||||
binding.selectActionBar.setCallBack(this)
|
||||
}
|
||||
|
||||
private fun sortCheck(sortKey: Sort) {
|
||||
private fun sortCheck(sortKey: RemoteBookSort) {
|
||||
if (viewModel.sortKey == sortKey) {
|
||||
viewModel.sortAscending = !viewModel.sortAscending
|
||||
} else {
|
||||
@@ -89,12 +90,12 @@ class RemoteBookActivity : VMBaseActivity<ActivityImportBookBinding, RemoteBookV
|
||||
R.id.menu_log -> showDialogFragment<AppLogDialog>()
|
||||
R.id.menu_sort_name -> {
|
||||
item.isChecked = true
|
||||
sortCheck(Sort.Name)
|
||||
sortCheck(RemoteBookSort.Name)
|
||||
upPath()
|
||||
}
|
||||
R.id.menu_sort_time -> {
|
||||
item.isChecked = true
|
||||
sortCheck(Sort.Default)
|
||||
sortCheck(RemoteBookSort.Default)
|
||||
upPath()
|
||||
}
|
||||
}
|
||||
@@ -104,8 +105,10 @@ class RemoteBookActivity : VMBaseActivity<ActivityImportBookBinding, RemoteBookV
|
||||
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
||||
groupMenu = menu.findItem(R.id.menu_sort)?.subMenu
|
||||
groupMenu?.setGroupCheckable(R.id.menu_group_sort, true, true)
|
||||
groupMenu?.findItem(R.id.menu_sort_name)?.isChecked = viewModel.sortKey == Sort.Name
|
||||
groupMenu?.findItem(R.id.menu_sort_time)?.isChecked = viewModel.sortKey == Sort.Default
|
||||
groupMenu?.findItem(R.id.menu_sort_name)?.isChecked =
|
||||
viewModel.sortKey == RemoteBookSort.Name
|
||||
groupMenu?.findItem(R.id.menu_sort_time)?.isChecked =
|
||||
viewModel.sortKey == RemoteBookSort.Default
|
||||
return super.onPrepareOptionsMenu(menu)
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.legado.app.R
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.constant.AppConst
|
||||
import io.legado.app.data.entities.RemoteBook
|
||||
import io.legado.app.databinding.ItemImportBookBinding
|
||||
import io.legado.app.utils.ConvertUtils
|
||||
import io.legado.app.utils.gone
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.legado.app.ui.book.remote
|
||||
|
||||
import android.net.Uri
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.RemoteBook
|
||||
|
||||
abstract class RemoteBookManager {
|
||||
protected val remoteBookFolder : String = "books"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package io.legado.app.ui.book.remote
|
||||
|
||||
enum class Sort {
|
||||
enum class RemoteBookSort {
|
||||
Default, Name
|
||||
}
|
||||
@@ -4,8 +4,9 @@ import android.app.Application
|
||||
import io.legado.app.base.BaseViewModel
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.BookType
|
||||
import io.legado.app.data.entities.RemoteBook
|
||||
import io.legado.app.help.webdav.RemoteBookWebDav
|
||||
import io.legado.app.model.localBook.LocalBook
|
||||
import io.legado.app.ui.book.remote.manager.RemoteBookWebDav
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
@@ -15,7 +16,7 @@ import kotlinx.coroutines.flow.map
|
||||
import java.util.*
|
||||
|
||||
class RemoteBookViewModel(application: Application) : BaseViewModel(application) {
|
||||
var sortKey = Sort.Default
|
||||
var sortKey = RemoteBookSort.Default
|
||||
var sortAscending = false
|
||||
val dirList = arrayListOf<RemoteBook>()
|
||||
|
||||
@@ -49,10 +50,10 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application)
|
||||
}
|
||||
}.map { list ->
|
||||
if (sortAscending) when (sortKey) {
|
||||
Sort.Name -> list.sortedWith(compareBy({ !it.isDir }, { it.filename }))
|
||||
RemoteBookSort.Name -> list.sortedWith(compareBy({ !it.isDir }, { it.filename }))
|
||||
else -> list.sortedWith(compareBy({ !it.isDir }, { it.lastModify }))
|
||||
} else when (sortKey) {
|
||||
Sort.Name -> list.sortedWith { o1, o2 ->
|
||||
RemoteBookSort.Name -> list.sortedWith { o1, o2 ->
|
||||
val compare = -compareValues(o1.isDir, o2.isDir)
|
||||
if (compare == 0) {
|
||||
return@sortedWith -compareValues(o1.filename, o2.filename)
|
||||
|
||||
@@ -18,7 +18,6 @@ import androidx.preference.Preference
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
@@ -26,6 +25,7 @@ import io.legado.app.help.storage.Backup
|
||||
import io.legado.app.help.storage.BackupConfig
|
||||
import io.legado.app.help.storage.ImportOldData
|
||||
import io.legado.app.help.storage.Restore
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.permission.Permissions
|
||||
import io.legado.app.lib.permission.PermissionsCompat
|
||||
|
||||
@@ -3,8 +3,8 @@ package io.legado.app.ui.config
|
||||
import android.app.Application
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseViewModel
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.toastOnUi
|
||||
|
||||
|
||||
@@ -21,12 +21,12 @@ import io.legado.app.constant.AppConst.appInfo
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.ActivityMainBinding
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.storage.Backup
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.elevation
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
|
||||
@@ -9,12 +9,12 @@ import io.legado.app.constant.EventBus
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.BookHelp
|
||||
import io.legado.app.help.DefaultData
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.help.isLocal
|
||||
import io.legado.app.help.webdav.AppWebDav
|
||||
import io.legado.app.model.CacheBook
|
||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
|
||||
Reference in New Issue
Block a user