Move downloadLocation getter setter companion of DownloadManager
This commit is contained in:
1 parent
3f4ca1bcbf
commit
c46c386fea
8 files changed
+50
-55
No files matched your search
@@ -2,11 +2,8 @@
|
||||
|
||||
package com.hippo.ehviewer
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.annotation.DimenRes
|
||||
import com.hippo.ehviewer.client.data.FavListUrlBuilder
|
||||
import com.hippo.unifile.UniFile
|
||||
import splitties.init.appCtx
|
||||
import splitties.preferences.DefaultPreferences
|
||||
import splitties.preferences.edit
|
||||
import java.util.Locale
|
||||
@@ -64,32 +61,11 @@ object Settings : DefaultPreferences() {
|
||||
else -> throw IllegalStateException("Unexpected value: $detailSize")
|
||||
}
|
||||
|
||||
private var downloadScheme by stringOrNullPref("image_scheme", null)
|
||||
private var downloadAuthority by stringOrNullPref("image_authority", null)
|
||||
private var downloadPath by stringOrNullPref("image_path", null)
|
||||
private var downloadQuery by stringOrNullPref("image_query", null)
|
||||
private var downloadFragment by stringOrNullPref("image_fragment", null)
|
||||
|
||||
var downloadLocation: UniFile
|
||||
get() = UniFile.fromUri(
|
||||
appCtx,
|
||||
Uri.Builder().apply {
|
||||
scheme(downloadScheme)
|
||||
encodedAuthority(downloadAuthority)
|
||||
encodedPath(downloadPath)
|
||||
encodedQuery(downloadQuery)
|
||||
encodedFragment(downloadFragment)
|
||||
}.build(),
|
||||
) ?: UniFile.fromFile(AppConfig.getDefaultDownloadDir())!!
|
||||
set(value) = with(value.uri) {
|
||||
edit {
|
||||
downloadScheme = scheme
|
||||
downloadAuthority = encodedAuthority
|
||||
downloadPath = encodedPath
|
||||
downloadQuery = encodedQuery
|
||||
downloadFragment = encodedFragment
|
||||
}
|
||||
}
|
||||
var downloadScheme by stringOrNullPref("image_scheme", null)
|
||||
var downloadAuthority by stringOrNullPref("image_authority", null)
|
||||
var downloadPath by stringOrNullPref("image_path", null)
|
||||
var downloadQuery by stringOrNullPref("image_query", null)
|
||||
var downloadFragment by stringOrNullPref("image_fragment", null)
|
||||
|
||||
var favCat by stringArrayPref("fav_cat", 10, "Favorites")
|
||||
var favCount by intArrayPref("fav_count", 10)
|
||||
|
||||
@@ -15,11 +15,14 @@
|
||||
*/
|
||||
package com.hippo.ehviewer.download
|
||||
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import android.util.SparseLongArray
|
||||
import androidx.collection.LongSparseArray
|
||||
import androidx.collection.keyIterator
|
||||
import com.hippo.ehviewer.AppConfig
|
||||
import com.hippo.ehviewer.EhDB
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.dao.DownloadInfo
|
||||
import com.hippo.ehviewer.dao.DownloadLabel
|
||||
@@ -34,8 +37,11 @@ import com.hippo.ehviewer.yorozuya.MathUtils
|
||||
import com.hippo.ehviewer.yorozuya.ObjectUtils
|
||||
import com.hippo.ehviewer.yorozuya.SimpleHandler
|
||||
import com.hippo.ehviewer.yorozuya.collect.LongList
|
||||
import com.hippo.unifile.UniFile
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import splitties.init.appCtx
|
||||
import splitties.preferences.edit
|
||||
import java.util.LinkedList
|
||||
import kotlin.contracts.contract
|
||||
|
||||
@@ -1230,3 +1236,26 @@ object DownloadManager : OnSpiderListener {
|
||||
sortByDescending { it.time }
|
||||
}
|
||||
}
|
||||
|
||||
var downloadLocation: UniFile
|
||||
get() = with(Settings) {
|
||||
UniFile.fromUri(
|
||||
appCtx,
|
||||
Uri.Builder().apply {
|
||||
scheme(downloadScheme)
|
||||
encodedAuthority(downloadAuthority)
|
||||
encodedPath(downloadPath)
|
||||
encodedQuery(downloadQuery)
|
||||
encodedFragment(downloadFragment)
|
||||
}.build(),
|
||||
) ?: UniFile.fromFile(AppConfig.getDefaultDownloadDir())!!
|
||||
}
|
||||
set(value) = with(value.uri) {
|
||||
Settings.edit {
|
||||
downloadScheme = scheme
|
||||
downloadAuthority = encodedAuthority
|
||||
downloadPath = encodedPath
|
||||
downloadQuery = encodedQuery
|
||||
downloadFragment = encodedFragment
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import com.hippo.ehviewer.GetText
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.unifile.UniFile
|
||||
import eu.kanade.tachiyomi.util.lang.launchUI
|
||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
||||
@@ -53,7 +53,7 @@ class CleanRedundancyPreference @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun doRealWork(): Int {
|
||||
return Settings.downloadLocation?.listFiles()?.sumOf { clearFile(it).compareTo(false) } ?: 0
|
||||
return downloadLocation.listFiles()?.sumOf { clearFile(it).compareTo(false) } ?: 0
|
||||
}
|
||||
|
||||
override fun launchJob() {
|
||||
|
||||
@@ -20,12 +20,12 @@ import android.util.AttributeSet
|
||||
import com.hippo.ehviewer.EhDB
|
||||
import com.hippo.ehviewer.GetText
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhEngine.fillGalleryListByApi
|
||||
import com.hippo.ehviewer.client.EhUrl
|
||||
import com.hippo.ehviewer.client.data.BaseGalleryInfo
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.download.DownloadManager
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.ehviewer.spider.SpiderQueen
|
||||
import com.hippo.ehviewer.spider.readCompatFromUniFile
|
||||
import com.hippo.unifile.UniFile
|
||||
@@ -73,8 +73,7 @@ class RestoreDownloadPreference @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private suspend fun doRealWork(): List<GalleryInfo>? {
|
||||
val dir = Settings.downloadLocation ?: return null
|
||||
val files = dir.listFiles() ?: return null
|
||||
val files = downloadLocation.listFiles() ?: return null
|
||||
return files.mapNotNull { getRestoreItem(it) }.apply {
|
||||
runSuspendCatching {
|
||||
fillGalleryListByApi(this, EhUrl.referer)
|
||||
|
||||
@@ -19,7 +19,6 @@ import android.graphics.ImageDecoder
|
||||
import android.os.ParcelFileDescriptor
|
||||
import android.os.ParcelFileDescriptor.MODE_READ_WRITE
|
||||
import com.hippo.ehviewer.EhDB
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhUtils.getSuitableTitle
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.client.ehRequest
|
||||
@@ -27,6 +26,7 @@ import com.hippo.ehviewer.client.executeNonCache
|
||||
import com.hippo.ehviewer.client.getImageKey
|
||||
import com.hippo.ehviewer.coil.edit
|
||||
import com.hippo.ehviewer.coil.read
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.ehviewer.gallery.SUPPORT_IMAGE_EXTENSIONS
|
||||
import com.hippo.ehviewer.image.Image.CloseableSource
|
||||
import com.hippo.ehviewer.image.rewriteGifSource2
|
||||
@@ -244,9 +244,8 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) {
|
||||
|
||||
companion object {
|
||||
fun getGalleryDownloadDir(gid: Long): UniFile? {
|
||||
val dir = Settings.downloadLocation ?: return null
|
||||
val dirname = EhDB.getDownloadDirname(gid) ?: return null
|
||||
return dir.subFile(dirname)
|
||||
return downloadLocation.subFile(dirname)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.hippo.ehviewer.client.exception.EhException
|
||||
import com.hippo.ehviewer.dao.DownloadInfo
|
||||
import com.hippo.ehviewer.download.DownloadManager
|
||||
import com.hippo.ehviewer.download.DownloadService
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.ehviewer.ui.compose.DialogState
|
||||
import com.hippo.ehviewer.ui.legacy.ListCheckBoxDialogBuilder
|
||||
import com.hippo.ehviewer.ui.scene.BaseScene
|
||||
@@ -182,7 +183,6 @@ private val lck = Mutex()
|
||||
|
||||
suspend fun keepNoMediaFileStatus() {
|
||||
lck.withLock {
|
||||
val downloadLocation = Settings.downloadLocation ?: return
|
||||
if (Settings.mediaScan) {
|
||||
removeNoMediaFile(downloadLocation)
|
||||
} else {
|
||||
|
||||
@@ -59,6 +59,7 @@ import com.hippo.ehviewer.client.parser.GalleryDetailUrlParser
|
||||
import com.hippo.ehviewer.client.parser.GalleryPageUrlParser
|
||||
import com.hippo.ehviewer.databinding.ActivityMainBinding
|
||||
import com.hippo.ehviewer.download.DownloadService
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.ehviewer.image.Image
|
||||
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
|
||||
import com.hippo.ehviewer.ui.legacy.EditTextDialogBuilder
|
||||
@@ -307,9 +308,9 @@ class MainActivity : EhActivity() {
|
||||
}
|
||||
|
||||
private fun checkDownloadLocation() {
|
||||
val uniFile = Settings.downloadLocation
|
||||
val uniFile = downloadLocation
|
||||
// null == uniFile for first start
|
||||
if (null == uniFile || uniFile.ensureDir()) {
|
||||
if (uniFile.ensureDir()) {
|
||||
return
|
||||
}
|
||||
BaseDialogBuilder(this)
|
||||
|
||||
@@ -24,6 +24,7 @@ import androidx.preference.Preference
|
||||
import com.hippo.ehviewer.AppConfig
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.download.downloadLocation
|
||||
import com.hippo.ehviewer.ui.keepNoMediaFileStatus
|
||||
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
|
||||
import com.hippo.ehviewer.ui.scene.BaseScene
|
||||
@@ -43,7 +44,7 @@ class DownloadFragment : BasePreferenceFragment() {
|
||||
)
|
||||
val uniFile = UniFile.fromTreeUri(activity, treeUri)
|
||||
if (uniFile != null) {
|
||||
Settings.downloadLocation = uniFile
|
||||
downloadLocation = uniFile
|
||||
lifecycleScope.launchNonCancellable {
|
||||
keepNoMediaFileStatus()
|
||||
}
|
||||
@@ -74,24 +75,14 @@ class DownloadFragment : BasePreferenceFragment() {
|
||||
}
|
||||
|
||||
private fun onUpdateDownloadLocation() {
|
||||
val file = Settings.downloadLocation
|
||||
if (mDownloadLocation != null) {
|
||||
if (file != null) {
|
||||
mDownloadLocation!!.summary = file.uri.toString()
|
||||
} else {
|
||||
mDownloadLocation!!.setSummary(R.string.settings_download_invalid_download_location)
|
||||
}
|
||||
}
|
||||
mDownloadLocation?.summary = downloadLocation.uri.toString()
|
||||
}
|
||||
|
||||
override fun onPreferenceClick(preference: Preference): Boolean {
|
||||
val key = preference.key
|
||||
if (KEY_DOWNLOAD_LOCATION == key) {
|
||||
val file = Settings.downloadLocation
|
||||
if (file != null && !UniFile.isFileUri(
|
||||
Settings.downloadLocation!!.uri,
|
||||
)
|
||||
) {
|
||||
val file = downloadLocation
|
||||
if (!UniFile.isFileUri(downloadLocation.uri)) {
|
||||
BaseDialogBuilder(requireContext())
|
||||
.setTitle(R.string.settings_download_download_location)
|
||||
.setMessage(file.uri.toString())
|
||||
@@ -99,7 +90,7 @@ class DownloadFragment : BasePreferenceFragment() {
|
||||
.setNeutralButton(R.string.reset_download_location) { _, _ ->
|
||||
val uniFile = UniFile.fromFile(AppConfig.getDefaultDownloadDir())
|
||||
if (uniFile != null) {
|
||||
Settings.downloadLocation = uniFile
|
||||
downloadLocation = uniFile
|
||||
lifecycleScope.launchNonCancellable {
|
||||
keepNoMediaFileStatus()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user