增加内置文件管理器

This commit is contained in:
kunfei
2023-03-31 19:45:01 +08:00
parent 79929cdf8d
commit 14ee3f0a8e
37 changed files with 98 additions and 53 deletions
+2 -2
View File
@@ -292,12 +292,12 @@
android:hardwareAccelerated="true" /> android:hardwareAccelerated="true" />
<!-- 文件管理 --> <!-- 文件管理 -->
<activity <activity
android:name=".ui.document.FileManageActivity" android:name=".ui.file.FileManageActivity"
android:configChanges="orientation|screenSize" android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true" /> android:hardwareAccelerated="true" />
<!-- 选择文件 --> <!-- 选择文件 -->
<activity <activity
android:name=".ui.document.HandleFileActivity" android:name=".ui.file.HandleFileActivity"
android:configChanges="orientation|screenSize" android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:theme="@style/AppTheme.Transparent" /> android:theme="@style/AppTheme.Transparent" />
@@ -15,7 +15,7 @@ import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.permission.Permissions import io.legado.app.lib.permission.Permissions
import io.legado.app.lib.permission.PermissionsCompat import io.legado.app.lib.permission.PermissionsCompat
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
@@ -9,7 +9,7 @@ import io.legado.app.base.VMBaseActivity
import io.legado.app.data.appDb import io.legado.app.data.appDb
import io.legado.app.data.entities.Bookmark import io.legado.app.data.entities.Bookmark
import io.legado.app.databinding.ActivityAllBookmarkBinding import io.legado.app.databinding.ActivityAllBookmarkBinding
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.launch import io.legado.app.utils.launch
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -24,7 +24,7 @@ import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.selector import io.legado.app.lib.dialogs.selector
import io.legado.app.model.CacheBook import io.legado.app.model.CacheBook
import io.legado.app.ui.about.AppLogDialog import io.legado.app.ui.about.AppLogDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
@@ -7,19 +7,18 @@ import androidx.appcompat.widget.SearchView
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
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.databinding.ActivityImportBookBinding
import io.legado.app.data.appDb
import io.legado.app.constant.AppPattern import io.legado.app.constant.AppPattern
import io.legado.app.data.appDb
import io.legado.app.databinding.ActivityImportBookBinding
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.selector import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.primaryTextColor import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.model.localBook.LocalBook import io.legado.app.model.localBook.LocalBook
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine
@@ -19,7 +19,7 @@ import io.legado.app.lib.permission.Permissions
import io.legado.app.lib.permission.PermissionsCompat import io.legado.app.lib.permission.PermissionsCompat
import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.backgroundColor
import io.legado.app.ui.book.import.BaseImportBookActivity import io.legado.app.ui.book.import.BaseImportBookActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.utils.* import io.legado.app.utils.*
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
@@ -41,7 +41,7 @@ import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.book.search.SearchActivity import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.ui.book.source.edit.BookSourceEditActivity import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.book.toc.TocActivityResult import io.legado.app.ui.book.toc.TocActivityResult
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.widget.dialog.PhotoDialog import io.legado.app.ui.widget.dialog.PhotoDialog
import io.legado.app.ui.widget.dialog.VariableDialog import io.legado.app.ui.widget.dialog.VariableDialog
@@ -32,7 +32,7 @@ import io.legado.app.model.ReadBook
import io.legado.app.ui.book.read.config.BgTextConfigDialog import io.legado.app.ui.book.read.config.BgTextConfigDialog
import io.legado.app.ui.book.read.config.ClickActionConfigDialog import io.legado.app.ui.book.read.config.ClickActionConfigDialog
import io.legado.app.ui.book.read.config.PaddingConfigDialog import io.legado.app.ui.book.read.config.PaddingConfigDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -61,7 +61,7 @@ import io.legado.app.ui.book.toc.TocActivityResult
import io.legado.app.ui.book.toc.rule.TxtTocRuleDialog import io.legado.app.ui.book.toc.rule.TxtTocRuleDialog
import io.legado.app.ui.browser.WebViewActivity import io.legado.app.ui.browser.WebViewActivity
import io.legado.app.ui.dict.DictDialog import io.legado.app.ui.dict.DictDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.ReplaceRuleActivity
import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity
@@ -31,7 +31,7 @@ import io.legado.app.lib.theme.bottomBackground
import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.lib.theme.getPrimaryTextColor
import io.legado.app.lib.theme.getSecondaryTextColor import io.legado.app.lib.theme.getSecondaryTextColor
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.compress.ZipUtils import io.legado.app.utils.compress.ZipUtils
@@ -26,7 +26,7 @@ import io.legado.app.lib.theme.primaryColor
import io.legado.app.model.ReadAloud import io.legado.app.model.ReadAloud
import io.legado.app.model.ReadBook import io.legado.app.model.ReadBook
import io.legado.app.ui.association.ImportHttpTtsDialog import io.legado.app.ui.association.ImportHttpTtsDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -25,7 +25,7 @@ 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.source.debug.BookSourceDebugActivity import io.legado.app.ui.book.source.debug.BookSourceDebugActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
@@ -32,7 +32,7 @@ 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.book.source.edit.BookSourceEditActivity import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.config.CheckSourceConfig import io.legado.app.ui.config.CheckSourceConfig
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
@@ -17,7 +17,7 @@ import io.legado.app.help.DirectLinkUpload
import io.legado.app.lib.dialogs.alert 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.ui.association.ImportTxtTocRuleDialog import io.legado.app.ui.association.ImportTxtTocRuleDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
@@ -25,7 +25,7 @@ import io.legado.app.lib.dialogs.alert
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.association.ImportTxtTocRuleDialog import io.legado.app.ui.association.ImportTxtTocRuleDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
@@ -22,7 +22,7 @@ import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.accentColor
import io.legado.app.model.Download import io.legado.app.model.Download
import io.legado.app.ui.association.OnLineImportActivity import io.legado.app.ui.association.OnLineImportActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import java.net.URLDecoder import java.net.URLDecoder
@@ -34,7 +34,7 @@ import io.legado.app.lib.permission.PermissionsCompat
import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.prefs.fragment.PreferenceFragment
import io.legado.app.lib.theme.primaryColor import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.about.AppLogDialog import io.legado.app.ui.about.AppLogDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.dialog.WaitDialog import io.legado.app.ui.widget.dialog.WaitDialog
import io.legado.app.utils.* import io.legado.app.utils.*
@@ -2,7 +2,6 @@ package io.legado.app.ui.config
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ComponentName import android.content.ComponentName
import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
@@ -24,7 +23,7 @@ import io.legado.app.model.CheckSource
import io.legado.app.receiver.SharedReceiverActivity import io.legado.app.receiver.SharedReceiverActivity
import io.legado.app.service.WebService import io.legado.app.service.WebService
import io.legado.app.ui.book.read.page.provider.ImageProvider import io.legado.app.ui.book.read.page.provider.ImageProvider
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.widget.number.NumberPickerDialog import io.legado.app.ui.widget.number.NumberPickerDialog
import io.legado.app.utils.* import io.legado.app.utils.*
import splitties.init.appCtx import splitties.init.appCtx
@@ -18,7 +18,7 @@ import io.legado.app.help.DirectLinkUpload
import io.legado.app.lib.dialogs.alert 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.ui.association.ImportDictRuleDialog import io.legado.app.ui.association.ImportDictRuleDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
@@ -1,8 +1,10 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.PopupMenu
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
@@ -17,7 +19,7 @@ import io.legado.app.databinding.ActivityFileManageBinding
import io.legado.app.databinding.ItemFileBinding import io.legado.app.databinding.ItemFileBinding
import io.legado.app.databinding.ItemPathPickerBinding import io.legado.app.databinding.ItemPathPickerBinding
import io.legado.app.lib.theme.primaryTextColor import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.ui.document.utils.FilePickerIcon import io.legado.app.ui.file.utils.FilePickerIcon
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.ConvertUtils import io.legado.app.utils.ConvertUtils
import io.legado.app.utils.applyTint import io.legado.app.utils.applyTint
@@ -152,7 +154,7 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
binding.root.setOnClickListener { binding.root.setOnClickListener {
val item = getItemByLayoutPosition(holder.layoutPosition) val item = getItemByLayoutPosition(holder.layoutPosition)
item?.let { item?.let {
if (item == (viewModel.subDocs.lastOrNull() ?: viewModel.rootDoc)) { if (item == viewModel.lastDir) {
viewModel.subDocs.removeLastOrNull() viewModel.subDocs.removeLastOrNull()
pathAdapter.setItems(viewModel.subDocs) pathAdapter.setItems(viewModel.subDocs)
viewModel.upFiles(viewModel.subDocs.lastOrNull() ?: viewModel.rootDoc) viewModel.upFiles(viewModel.subDocs.lastOrNull() ?: viewModel.rootDoc)
@@ -171,6 +173,16 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
} }
} }
} }
binding.root.setOnLongClickListener { view ->
val item = getItemByLayoutPosition(holder.layoutPosition)
if (item == viewModel.lastDir) {
return@setOnLongClickListener true
}
item?.let {
showFileMenu(view, item)
}
return@setOnLongClickListener true
}
} }
override fun convert( override fun convert(
@@ -179,7 +191,7 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
item: File, item: File,
payloads: MutableList<Any> payloads: MutableList<Any>
) { ) {
if (item == (viewModel.subDocs.lastOrNull() ?: viewModel.rootDoc)) { if (item == viewModel.lastDir) {
binding.imageView.setImageDrawable(upIcon) binding.imageView.setImageDrawable(upIcon)
binding.textView.text = dirParent binding.textView.text = dirParent
} else if (item.isDirectory) { } else if (item.isDirectory) {
@@ -191,6 +203,17 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
} }
} }
private fun showFileMenu(view: View, file: File) {
val popupMenu = PopupMenu(context, view)
popupMenu.inflate(R.menu.file_long_click)
popupMenu.setOnMenuItemClickListener {
when (it.itemId) {
R.id.menu_del -> viewModel.delFile(file)
}
true
}
popupMenu.show()
}
} }
@@ -1,4 +1,4 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.app.Application import android.app.Application
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
@@ -12,13 +12,20 @@ class FileManageViewModel(application: Application) : BaseViewModel(application)
var subDocs = mutableListOf<File>() var subDocs = mutableListOf<File>()
val filesLiveData = MutableLiveData<List<File>>() val filesLiveData = MutableLiveData<List<File>>()
val lastDir: File? get() = subDocs.lastOrNull() ?: rootDoc
fun upFiles(parentFile: File?) { fun upFiles(parentFile: File?) {
execute { execute {
parentFile ?: return@execute emptyList()
if (parentFile == rootDoc) { if (parentFile == rootDoc) {
parentFile?.listFiles()?.toList() parentFile.listFiles()?.sortedWith(
compareBy({ it.isFile }, { it.name })
)
} else { } else {
val list = arrayListOf(parentFile) val list = arrayListOf(parentFile)
parentFile?.listFiles()?.let { parentFile.listFiles()?.sortedWith(
compareBy({ it.isFile }, { it.name })
)?.let {
list.addAll(it) list.addAll(it)
} }
list list
@@ -32,5 +39,14 @@ class FileManageViewModel(application: Application) : BaseViewModel(application)
} }
} }
fun delFile(file: File) {
execute {
file.delete()
}.onSuccess {
upFiles(lastDir)
}.onError {
context.toastOnUi(it.localizedMessage)
}
}
} }
@@ -1,4 +1,4 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.content.DialogInterface import android.content.DialogInterface
import android.content.Intent import android.content.Intent
@@ -14,10 +14,10 @@ import io.legado.app.R
import io.legado.app.base.BaseDialogFragment import io.legado.app.base.BaseDialogFragment
import io.legado.app.databinding.DialogFileChooserBinding import io.legado.app.databinding.DialogFileChooserBinding
import io.legado.app.lib.theme.primaryColor import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.document.HandleFileContract.Companion.DIR import io.legado.app.ui.file.HandleFileContract.Companion.DIR
import io.legado.app.ui.document.HandleFileContract.Companion.FILE import io.legado.app.ui.file.HandleFileContract.Companion.FILE
import io.legado.app.ui.document.adapter.FileAdapter import io.legado.app.ui.file.adapter.FileAdapter
import io.legado.app.ui.document.adapter.PathAdapter import io.legado.app.ui.file.adapter.PathAdapter
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -1,4 +1,4 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
@@ -1,4 +1,4 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.app.Activity.RESULT_OK import android.app.Activity.RESULT_OK
import android.content.Context import android.content.Context
@@ -1,4 +1,4 @@
package io.legado.app.ui.document package io.legado.app.ui.file
import android.app.Application import android.app.Application
import android.net.Uri import android.net.Uri
@@ -1,4 +1,4 @@
package io.legado.app.ui.document.adapter package io.legado.app.ui.file.adapter
import android.content.Context import android.content.Context
@@ -9,8 +9,8 @@ import io.legado.app.databinding.ItemFilePickerBinding
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.lib.theme.getPrimaryDisabledTextColor import io.legado.app.lib.theme.getPrimaryDisabledTextColor
import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.lib.theme.getPrimaryTextColor
import io.legado.app.ui.document.entity.FileItem import io.legado.app.ui.file.entity.FileItem
import io.legado.app.ui.document.utils.FilePickerIcon import io.legado.app.ui.file.utils.FilePickerIcon
import io.legado.app.utils.ConvertUtils import io.legado.app.utils.ConvertUtils
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import java.io.File import java.io.File
@@ -1,4 +1,4 @@
package io.legado.app.ui.document.adapter package io.legado.app.ui.file.adapter
import android.content.Context import android.content.Context
import android.os.Environment import android.os.Environment
@@ -6,7 +6,7 @@ import android.view.ViewGroup
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter import io.legado.app.base.adapter.RecyclerAdapter
import io.legado.app.databinding.ItemPathPickerBinding import io.legado.app.databinding.ItemPathPickerBinding
import io.legado.app.ui.document.utils.FilePickerIcon import io.legado.app.ui.file.utils.FilePickerIcon
import io.legado.app.utils.ConvertUtils import io.legado.app.utils.ConvertUtils
import java.util.* import java.util.*
@@ -1,4 +1,4 @@
package io.legado.app.ui.document.entity package io.legado.app.ui.file.entity
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
@@ -1,4 +1,4 @@
package io.legado.app.ui.document.utils; package io.legado.app.ui.file.utils;
/** /**
* Generated by https://github.com/gzu-liyujiang/Image2ByteVar * Generated by https://github.com/gzu-liyujiang/Image2ByteVar
@@ -18,7 +18,7 @@ import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.permission.Permissions import io.legado.app.lib.permission.Permissions
import io.legado.app.lib.permission.PermissionsCompat import io.legado.app.lib.permission.PermissionsCompat
import io.legado.app.lib.theme.primaryColor import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
@@ -25,7 +25,7 @@ import io.legado.app.ui.book.import.local.ImportBookActivity
import io.legado.app.ui.book.import.remote.RemoteBookActivity import io.legado.app.ui.book.import.remote.RemoteBookActivity
import io.legado.app.ui.book.manage.BookshelfManageActivity import io.legado.app.ui.book.manage.BookshelfManageActivity
import io.legado.app.ui.book.search.SearchActivity import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.main.MainViewModel import io.legado.app.ui.main.MainViewModel
import io.legado.app.utils.* import io.legado.app.utils.*
@@ -29,7 +29,7 @@ import io.legado.app.ui.book.toc.rule.TxtTocRuleActivity
import io.legado.app.ui.config.ConfigActivity import io.legado.app.ui.config.ConfigActivity
import io.legado.app.ui.config.ConfigTag import io.legado.app.ui.config.ConfigTag
import io.legado.app.ui.dict.rule.DictRuleActivity import io.legado.app.ui.dict.rule.DictRuleActivity
import io.legado.app.ui.document.FileManageActivity import io.legado.app.ui.file.FileManageActivity
import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.ReplaceRuleActivity
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.utils.* import io.legado.app.utils.*
@@ -28,7 +28,7 @@ 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.association.ImportReplaceRuleDialog import io.legado.app.ui.association.ImportReplaceRuleDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
@@ -21,7 +21,7 @@ import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.primaryTextColor import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.model.Download import io.legado.app.model.Download
import io.legado.app.ui.association.OnLineImportActivity import io.legado.app.ui.association.OnLineImportActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -18,7 +18,7 @@ import io.legado.app.lib.dialogs.alert
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.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.rss.source.debug.RssSourceDebugActivity import io.legado.app.ui.rss.source.debug.RssSourceDebugActivity
@@ -23,7 +23,7 @@ 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.association.ImportRssSourceDialog import io.legado.app.ui.association.ImportRssSourceDialog
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.rss.source.edit.RssSourceEditActivity import io.legado.app.ui.rss.source.edit.RssSourceEditActivity
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_del"
android:title="@string/delete" />
</menu>