|
@@ -31,6 +31,7 @@ import io.legado.app.ui.association.ImportHttpTtsDialog
|
|
|
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
|
|
|
import io.legado.app.utils.ACache
|
|
import io.legado.app.utils.ACache
|
|
|
|
|
+import io.legado.app.utils.FileUtils
|
|
|
import io.legado.app.utils.GSON
|
|
import io.legado.app.utils.GSON
|
|
|
import io.legado.app.utils.fromJsonObject
|
|
import io.legado.app.utils.fromJsonObject
|
|
|
import io.legado.app.utils.gone
|
|
import io.legado.app.utils.gone
|
|
@@ -40,6 +41,7 @@ import io.legado.app.utils.sendToClip
|
|
|
import io.legado.app.utils.showDialogFragment
|
|
import io.legado.app.utils.showDialogFragment
|
|
|
import io.legado.app.utils.splitNotBlank
|
|
import io.legado.app.utils.splitNotBlank
|
|
|
import io.legado.app.utils.startActivity
|
|
import io.legado.app.utils.startActivity
|
|
|
|
|
+import io.legado.app.utils.toastOnUi
|
|
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|
|
import io.legado.app.utils.visible
|
|
import io.legado.app.utils.visible
|
|
|
import kotlinx.coroutines.Dispatchers.IO
|
|
import kotlinx.coroutines.Dispatchers.IO
|
|
@@ -47,6 +49,7 @@ import kotlinx.coroutines.flow.catch
|
|
|
import kotlinx.coroutines.flow.conflate
|
|
import kotlinx.coroutines.flow.conflate
|
|
|
import kotlinx.coroutines.flow.flowOn
|
|
import kotlinx.coroutines.flow.flowOn
|
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
+import java.io.File
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* tts引擎管理
|
|
* tts引擎管理
|
|
@@ -175,6 +178,7 @@ class SpeakEngineDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_recycl
|
|
|
|
|
|
|
|
override fun onMenuItemClick(item: MenuItem?): Boolean {
|
|
override fun onMenuItemClick(item: MenuItem?): Boolean {
|
|
|
when (item?.itemId) {
|
|
when (item?.itemId) {
|
|
|
|
|
+ R.id.menu_clear -> clearCache()
|
|
|
R.id.menu_add -> showDialogFragment<HttpTtsEditDialog>()
|
|
R.id.menu_add -> showDialogFragment<HttpTtsEditDialog>()
|
|
|
R.id.menu_default -> viewModel.importDefault()
|
|
R.id.menu_default -> viewModel.importDefault()
|
|
|
R.id.menu_import_local -> importDocResult.launch {
|
|
R.id.menu_import_local -> importDocResult.launch {
|
|
@@ -232,6 +236,18 @@ class SpeakEngineDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_recycl
|
|
|
adapter.notifyItemRangeChanged(adapter.getHeaderCount(), adapter.itemCount)
|
|
adapter.notifyItemRangeChanged(adapter.getHeaderCount(), adapter.itemCount)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ fun clearCache() {
|
|
|
|
|
+ execute {
|
|
|
|
|
+ ReadAloud.upReadAloudClass()
|
|
|
|
|
+ val ttsFolderPath = "${requireContext().cacheDir.absolutePath}${File.separator}httpTTS${File.separator}"
|
|
|
|
|
+ FileUtils.listDirsAndFiles(ttsFolderPath)?.forEach {
|
|
|
|
|
+ FileUtils.delete(it.absolutePath)
|
|
|
|
|
+ }
|
|
|
|
|
+ toastOnUi(R.string.clear_cache_success)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
inner class Adapter(context: Context) :
|
|
inner class Adapter(context: Context) :
|
|
|
RecyclerAdapter<HttpTTS, ItemHttpTtsBinding>(context) {
|
|
RecyclerAdapter<HttpTTS, ItemHttpTtsBinding>(context) {
|
|
|
|
|
|