|
@@ -7,6 +7,7 @@ import android.view.MenuItem
|
|
|
import android.view.View
|
|
import android.view.View
|
|
|
import androidx.activity.viewModels
|
|
import androidx.activity.viewModels
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
|
+import androidx.appcompat.widget.PopupMenu
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
import com.google.android.material.textfield.TextInputLayout
|
|
import com.google.android.material.textfield.TextInputLayout
|
|
@@ -38,11 +39,13 @@ import io.legado.app.ui.file.HandleFileContract
|
|
|
import io.legado.app.utils.ACache
|
|
import io.legado.app.utils.ACache
|
|
|
import io.legado.app.utils.FileDoc
|
|
import io.legado.app.utils.FileDoc
|
|
|
import io.legado.app.utils.applyNavigationBarPadding
|
|
import io.legado.app.utils.applyNavigationBarPadding
|
|
|
|
|
+import io.legado.app.utils.applyOpenTint
|
|
|
import io.legado.app.utils.applyTint
|
|
import io.legado.app.utils.applyTint
|
|
|
import io.legado.app.utils.checkWrite
|
|
import io.legado.app.utils.checkWrite
|
|
|
import io.legado.app.utils.cnCompare
|
|
import io.legado.app.utils.cnCompare
|
|
|
import io.legado.app.utils.enableCustomExport
|
|
import io.legado.app.utils.enableCustomExport
|
|
|
import io.legado.app.utils.flowWithLifecycleAndDatabaseChange
|
|
import io.legado.app.utils.flowWithLifecycleAndDatabaseChange
|
|
|
|
|
+import io.legado.app.utils.iconItemOnLongClick
|
|
|
import io.legado.app.utils.isContentScheme
|
|
import io.legado.app.utils.isContentScheme
|
|
|
import io.legado.app.utils.observeEvent
|
|
import io.legado.app.utils.observeEvent
|
|
|
import io.legado.app.utils.parseToUri
|
|
import io.legado.app.utils.parseToUri
|
|
@@ -65,6 +68,7 @@ import kotlin.math.max
|
|
|
* cache/download 缓存界面
|
|
* cache/download 缓存界面
|
|
|
*/
|
|
*/
|
|
|
class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>(),
|
|
class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>(),
|
|
|
|
|
+ PopupMenu.OnMenuItemClickListener,
|
|
|
CacheAdapter.CallBack {
|
|
CacheAdapter.CallBack {
|
|
|
|
|
|
|
|
override val binding by viewBinding(ActivityCacheBookBinding::inflate)
|
|
override val binding by viewBinding(ActivityCacheBookBinding::inflate)
|
|
@@ -120,6 +124,13 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
|
|
|
|
|
|
|
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
|
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
|
|
menuInflater.inflate(R.menu.book_cache, menu)
|
|
menuInflater.inflate(R.menu.book_cache, menu)
|
|
|
|
|
+ menu.iconItemOnLongClick(R.id.menu_download) {
|
|
|
|
|
+ PopupMenu(this, it).apply {
|
|
|
|
|
+ inflate(R.menu.book_cache_download)
|
|
|
|
|
+ this.menu.applyOpenTint(this@CacheActivity)
|
|
|
|
|
+ setOnMenuItemClickListener(this@CacheActivity)
|
|
|
|
|
+ }.show()
|
|
|
|
|
+ }
|
|
|
return super.onCompatCreateOptionsMenu(menu)
|
|
return super.onCompatCreateOptionsMenu(menu)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -158,7 +169,8 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
|
|
*/
|
|
*/
|
|
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
when (item.itemId) {
|
|
when (item.itemId) {
|
|
|
- R.id.menu_download -> {
|
|
|
|
|
|
|
+ R.id.menu_download,
|
|
|
|
|
+ R.id.menu_download_after -> {
|
|
|
if (!CacheBook.isRun) {
|
|
if (!CacheBook.isRun) {
|
|
|
adapter.getItems().forEach { book ->
|
|
adapter.getItems().forEach { book ->
|
|
|
CacheBook.start(
|
|
CacheBook.start(
|
|
@@ -172,6 +184,20 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
|
|
CacheBook.stop(this@CacheActivity)
|
|
CacheBook.stop(this@CacheActivity)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ R.id.menu_download_all -> {
|
|
|
|
|
+ if (!CacheBook.isRun) {
|
|
|
|
|
+ adapter.getItems().forEach { book ->
|
|
|
|
|
+ CacheBook.start(
|
|
|
|
|
+ this@CacheActivity,
|
|
|
|
|
+ book,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ book.lastChapterIndex
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ CacheBook.stop(this@CacheActivity)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
R.id.menu_export_all -> exportAll()
|
|
R.id.menu_export_all -> exportAll()
|
|
|
R.id.menu_enable_replace -> AppConfig.exportUseReplace = !item.isChecked
|
|
R.id.menu_enable_replace -> AppConfig.exportUseReplace = !item.isChecked
|
|
@@ -198,6 +224,10 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
|
|
return super.onCompatOptionsItemSelected(item)
|
|
return super.onCompatOptionsItemSelected(item)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ override fun onMenuItemClick(item: MenuItem): Boolean {
|
|
|
|
|
+ return onCompatOptionsItemSelected(item)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private fun initRecyclerView() {
|
|
private fun initRecyclerView() {
|
|
|
binding.recyclerView.layoutManager = layoutManager
|
|
binding.recyclerView.layoutManager = layoutManager
|
|
|
binding.recyclerView.adapter = adapter
|
|
binding.recyclerView.adapter = adapter
|