Ask for download via metered network
parent
144e66bedb
commit
3255fba3c4
@ -0,0 +1,9 @@
|
|||||||
|
package org.koitharu.kotatsu.core.prefs
|
||||||
|
|
||||||
|
import androidx.annotation.Keep
|
||||||
|
|
||||||
|
@Keep
|
||||||
|
enum class TriStateOption {
|
||||||
|
|
||||||
|
ENABLED, ASK, DISABLED;
|
||||||
|
}
|
||||||
@ -1,25 +1,58 @@
|
|||||||
package org.koitharu.kotatsu.core.ui.dialog
|
package org.koitharu.kotatsu.core.ui.dialog
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.DialogInterface
|
||||||
import androidx.annotation.UiContext
|
import androidx.annotation.UiContext
|
||||||
|
import androidx.core.net.ConnectivityManagerCompat
|
||||||
|
import dagger.Lazy
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
|
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||||
|
import org.koitharu.kotatsu.core.prefs.TriStateOption
|
||||||
|
import org.koitharu.kotatsu.core.util.ext.connectivityManager
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
object CommonAlertDialogs {
|
class CommonAlertDialogs @Inject constructor(
|
||||||
|
private val settings: Lazy<AppSettings>,
|
||||||
|
) {
|
||||||
|
|
||||||
fun showDownloadConfirmation(
|
fun askForDownloadOverMeteredNetwork(
|
||||||
@UiContext context: Context,
|
@UiContext context: Context,
|
||||||
onConfirmed: (startPaused: Boolean) -> Unit,
|
onConfirmed: (allow: Boolean) -> Unit
|
||||||
) = buildAlertDialog(context, isCentered = true) {
|
) {
|
||||||
var startPaused = false
|
when (settings.get().allowDownloadOnMeteredNetwork) {
|
||||||
setTitle(R.string.save_manga)
|
TriStateOption.ENABLED -> onConfirmed(true)
|
||||||
setIcon(R.drawable.ic_download)
|
TriStateOption.DISABLED -> onConfirmed(false)
|
||||||
setMessage(R.string.save_manga_confirm)
|
TriStateOption.ASK -> {
|
||||||
setCheckbox(R.string.start_download, true) { _, isChecked ->
|
if (!ConnectivityManagerCompat.isActiveNetworkMetered(context.connectivityManager)) {
|
||||||
startPaused = !isChecked
|
onConfirmed(true)
|
||||||
}
|
return
|
||||||
setPositiveButton(R.string.save) { _, _ ->
|
}
|
||||||
onConfirmed(startPaused)
|
val listener = DialogInterface.OnClickListener { _, which ->
|
||||||
|
when (which) {
|
||||||
|
DialogInterface.BUTTON_POSITIVE -> {
|
||||||
|
settings.get().allowDownloadOnMeteredNetwork = TriStateOption.ENABLED
|
||||||
|
onConfirmed(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogInterface.BUTTON_NEUTRAL -> {
|
||||||
|
onConfirmed(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogInterface.BUTTON_NEGATIVE -> {
|
||||||
|
settings.get().allowDownloadOnMeteredNetwork = TriStateOption.DISABLED
|
||||||
|
onConfirmed(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BigButtonsAlertDialog.Builder(context)
|
||||||
|
.setIcon(R.drawable.ic_network_cellular)
|
||||||
|
.setTitle(R.string.download_cellular_confirm)
|
||||||
|
.setPositiveButton(R.string.allow_always, listener)
|
||||||
|
.setNeutralButton(R.string.allow_once, listener)
|
||||||
|
.setNegativeButton(R.string.dont_allow, listener)
|
||||||
|
.create()
|
||||||
|
.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setNegativeButton(android.R.string.cancel, null)
|
}
|
||||||
}.show()
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="?attr/colorControlNormal"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:pathData="M19,17H21V9H19M19,21H21V19H19M1,21H17V7H21V1" />
|
||||||
|
</vector>
|
||||||
Loading…
Reference in New Issue