优化
This commit is contained in:
@@ -7,6 +7,7 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import com.bumptech.glide.load.DataSource
|
import com.bumptech.glide.load.DataSource
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
@@ -19,6 +20,7 @@ import io.legado.app.databinding.DialogVerificationCodeViewBinding
|
|||||||
import io.legado.app.help.glide.ImageLoader
|
import io.legado.app.help.glide.ImageLoader
|
||||||
import io.legado.app.help.glide.OkHttpModelLoader
|
import io.legado.app.help.glide.OkHttpModelLoader
|
||||||
import io.legado.app.help.source.SourceVerificationHelp
|
import io.legado.app.help.source.SourceVerificationHelp
|
||||||
|
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.model.ImageProvider
|
import io.legado.app.model.ImageProvider
|
||||||
import io.legado.app.ui.widget.dialog.PhotoDialog
|
import io.legado.app.ui.widget.dialog.PhotoDialog
|
||||||
@@ -49,6 +51,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
}
|
}
|
||||||
|
|
||||||
val binding by viewBinding(DialogVerificationCodeViewBinding::bind)
|
val binding by viewBinding(DialogVerificationCodeViewBinding::bind)
|
||||||
|
val viewModel by viewModels<VerificationCodeViewModel>()
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
@@ -60,6 +63,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run {
|
||||||
initMenu()
|
initMenu()
|
||||||
val arguments = arguments ?: return@run
|
val arguments = arguments ?: return@run
|
||||||
|
viewModel.initData(arguments)
|
||||||
toolBar.setBackgroundColor(primaryColor)
|
toolBar.setBackgroundColor(primaryColor)
|
||||||
toolBar.subtitle = arguments.getString("sourceName")
|
toolBar.subtitle = arguments.getString("sourceName")
|
||||||
sourceOrigin = arguments.getString("sourceOrigin")
|
sourceOrigin = arguments.getString("sourceOrigin")
|
||||||
@@ -119,6 +123,24 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
SourceVerificationHelp.setResult(sourceOrigin!!, verificationCode)
|
SourceVerificationHelp.setResult(sourceOrigin!!, verificationCode)
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.menu_disable_source -> {
|
||||||
|
viewModel.disableSource {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.menu_delete_source -> {
|
||||||
|
alert(R.string.draw) {
|
||||||
|
setMessage(getString(R.string.sure_del) + "\n" + viewModel.sourceName)
|
||||||
|
noButton()
|
||||||
|
yesButton {
|
||||||
|
viewModel.deleteSource {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package io.legado.app.ui.association
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.os.Bundle
|
||||||
|
import io.legado.app.base.BaseViewModel
|
||||||
|
import io.legado.app.data.appDb
|
||||||
|
|
||||||
|
class VerificationCodeViewModel(app: Application): BaseViewModel(app) {
|
||||||
|
|
||||||
|
var sourceOrigin = ""
|
||||||
|
var sourceName = ""
|
||||||
|
|
||||||
|
fun initData(arguments: Bundle) {
|
||||||
|
sourceName = arguments.getString("sourceName") ?: ""
|
||||||
|
sourceOrigin = arguments.getString("sourceOrigin") ?: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
fun disableSource(block: () -> Unit) {
|
||||||
|
execute {
|
||||||
|
appDb.bookSourceDao.enable(sourceOrigin, false)
|
||||||
|
}.onSuccess {
|
||||||
|
block.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deleteSource(block: () -> Unit) {
|
||||||
|
execute {
|
||||||
|
appDb.bookSourceDao.delete(sourceOrigin)
|
||||||
|
}.onSuccess {
|
||||||
|
block.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -30,6 +30,7 @@ import io.legado.app.help.config.AppConfig
|
|||||||
import io.legado.app.help.http.CookieStore
|
import io.legado.app.help.http.CookieStore
|
||||||
import io.legado.app.help.source.SourceVerificationHelp
|
import io.legado.app.help.source.SourceVerificationHelp
|
||||||
import io.legado.app.lib.dialogs.SelectItem
|
import io.legado.app.lib.dialogs.SelectItem
|
||||||
|
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.model.Download
|
import io.legado.app.model.Download
|
||||||
import io.legado.app.ui.association.OnLineImportActivity
|
import io.legado.app.ui.association.OnLineImportActivity
|
||||||
@@ -102,6 +103,14 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
return super.onCompatCreateOptionsMenu(menu)
|
return super.onCompatCreateOptionsMenu(menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
||||||
|
if (viewModel.sourceOrigin.isNotEmpty()) {
|
||||||
|
menu.findItem(R.id.menu_disable_source)?.isVisible = true
|
||||||
|
menu.findItem(R.id.menu_delete_source)?.isVisible = true
|
||||||
|
}
|
||||||
|
return super.onPrepareOptionsMenu(menu)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_open_in_browser -> openUrl(viewModel.baseUrl)
|
R.id.menu_open_in_browser -> openUrl(viewModel.baseUrl)
|
||||||
@@ -117,6 +126,23 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
R.id.menu_full_screen -> toggleFullScreen()
|
R.id.menu_full_screen -> toggleFullScreen()
|
||||||
|
R.id.menu_disable_source -> {
|
||||||
|
viewModel.disableSource {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.menu_delete_source -> {
|
||||||
|
alert(R.string.draw) {
|
||||||
|
setMessage(getString(R.string.sure_del) + "\n" + viewModel.sourceName)
|
||||||
|
noButton()
|
||||||
|
yesButton {
|
||||||
|
viewModel.deleteSource {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onCompatOptionsItemSelected(item)
|
return super.onCompatOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
val headerMap: HashMap<String, String> = hashMapOf()
|
val headerMap: HashMap<String, String> = hashMapOf()
|
||||||
var sourceVerificationEnable: Boolean = false
|
var sourceVerificationEnable: Boolean = false
|
||||||
var refetchAfterSuccess: Boolean = true
|
var refetchAfterSuccess: Boolean = true
|
||||||
|
var sourceName: String = ""
|
||||||
var sourceOrigin: String = ""
|
var sourceOrigin: String = ""
|
||||||
|
|
||||||
fun initData(
|
fun initData(
|
||||||
@@ -43,6 +44,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
this@WebViewModel.intent = intent
|
this@WebViewModel.intent = intent
|
||||||
val url = intent.getStringExtra("url")
|
val url = intent.getStringExtra("url")
|
||||||
?: throw NoStackTraceException("url不能为空")
|
?: throw NoStackTraceException("url不能为空")
|
||||||
|
sourceName = intent.getStringExtra("sourceName") ?: ""
|
||||||
sourceOrigin = intent.getStringExtra("sourceOrigin") ?: ""
|
sourceOrigin = intent.getStringExtra("sourceOrigin") ?: ""
|
||||||
sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false)
|
sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false)
|
||||||
refetchAfterSuccess = intent.getBooleanExtra("refetchAfterSuccess", true)
|
refetchAfterSuccess = intent.getBooleanExtra("refetchAfterSuccess", true)
|
||||||
@@ -123,4 +125,20 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun disableSource(block: () -> Unit) {
|
||||||
|
execute {
|
||||||
|
appDb.bookSourceDao.enable(sourceOrigin, false)
|
||||||
|
}.onSuccess {
|
||||||
|
block.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deleteSource(block: () -> Unit) {
|
||||||
|
execute {
|
||||||
|
appDb.bookSourceDao.delete(sourceOrigin)
|
||||||
|
}.onSuccess {
|
||||||
|
block.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -10,4 +10,14 @@
|
|||||||
android:title="@string/ok"
|
android:title="@string/ok"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_disable_source"
|
||||||
|
android:title="@string/disable_source"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_delete_source"
|
||||||
|
android:title="@string/delete_source"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
@@ -23,4 +23,16 @@
|
|||||||
android:title="@string/full_screen"
|
android:title="@string/full_screen"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_disable_source"
|
||||||
|
android:title="@string/disable_source"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_delete_source"
|
||||||
|
android:title="@string/delete_source"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
Reference in New Issue
Block a user