Skip to content

Commit

Permalink
Merge pull request #4003 from twistios/feature_coil_exoplayer_cache_size
Browse files Browse the repository at this point in the history
New cache sizes for image cache and custom size text improvement
  • Loading branch information
fast4x authored Oct 19, 2024
2 parents 7879013 + 7538de4 commit b8ef328
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import coil.request.CachePolicy
import it.fast4x.rimusic.enums.CoilDiskCacheMaxSize
import it.fast4x.rimusic.utils.CaptureCrash
import it.fast4x.rimusic.utils.FileLoggingTree
import it.fast4x.rimusic.utils.coilCustomDiskCacheKey
import it.fast4x.rimusic.utils.coilDiskCacheMaxSizeKey
import it.fast4x.rimusic.utils.getEnum
import it.fast4x.rimusic.utils.logDebugEnabledKey
Expand Down Expand Up @@ -42,6 +43,7 @@ class MainApplication : Application(), ImageLoaderFactory {
}

override fun newImageLoader(): ImageLoader {
val coilCustomDiskCache = preferences.getInt(coilCustomDiskCacheKey, 128) * 1000 * 1000L
return ImageLoader.Builder(this)
.crossfade(true)
.networkCachePolicy(CachePolicy.ENABLED)
Expand All @@ -62,10 +64,14 @@ class MainApplication : Application(), ImageLoaderFactory {
DiskCache.Builder()
.directory(filesDir.resolve("coil"))
.maxSizeBytes(
preferences.getEnum(
coilDiskCacheMaxSizeKey,
CoilDiskCacheMaxSize.`128MB`
).bytes
when (val size =
preferences.getEnum(
coilDiskCacheMaxSizeKey,
CoilDiskCacheMaxSize.`128MB`
)) {
CoilDiskCacheMaxSize.Custom -> coilCustomDiskCache
else -> size.bytes
}
)
.build()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ enum class CoilDiskCacheMaxSize {
`512MB`,
`1GB`,
`2GB`,
`4GB`;
`4GB`,
`8GB`,
Custom;

val bytes: Long
get() = when (this) {
Expand All @@ -20,5 +22,7 @@ enum class CoilDiskCacheMaxSize {
`1GB` -> 1024
`2GB` -> 2048
`4GB` -> 4096
`8GB` -> 8192
Custom -> 1000000
} * 1000 * 1000L
}
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ fun CacheSettings() {
CoilDiskCacheMaxSize.`1GB`-> "1GB"
CoilDiskCacheMaxSize.`2GB` -> "2GB"
CoilDiskCacheMaxSize.`4GB` -> "4GB"
CoilDiskCacheMaxSize.`8GB` -> "8GB"
CoilDiskCacheMaxSize.Custom -> stringResource(R.string.custom)
}
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import it.fast4x.rimusic.ui.components.themed.SmartMessage
import it.fast4x.rimusic.ui.styling.Dimensions
import it.fast4x.rimusic.ui.styling.shimmer
import it.fast4x.rimusic.utils.bold
import it.fast4x.rimusic.utils.coilCustomDiskCacheKey
import it.fast4x.rimusic.utils.coilDiskCacheMaxSizeKey
import it.fast4x.rimusic.utils.exoPlayerCacheLocationKey
import it.fast4x.rimusic.utils.exoPlayerCustomCacheKey
Expand Down Expand Up @@ -127,6 +128,11 @@ fun DataSettings() {
exoPlayerCustomCacheKey,32
)

var showCoilCustomDiskCacheDialog by remember { mutableStateOf(false) }
var coilCustomDiskCache by rememberPreference(
coilCustomDiskCacheKey,32
)

//val release = Build.VERSION.RELEASE;
val sdkVersion = Build.VERSION.SDK_INT;
//if (sdkVersion.toShort() < 29) exoPlayerAlternateCacheLocation=""
Expand Down Expand Up @@ -354,12 +360,18 @@ fun DataSettings() {

EnumValueSelectorSettingsEntry(
title = stringResource(R.string.image_cache_max_size),
titleSecondary = "${
Formatter.formatShortFileSize(
context,
diskCacheSize
)
} ${stringResource(R.string.used)} (${diskCacheSize * 100 / coilDiskCacheMaxSize.bytes.coerceAtLeast(1)}%)",
titleSecondary = when (coilDiskCacheMaxSize) {
CoilDiskCacheMaxSize.Custom -> buildString {
append(Formatter.formatShortFileSize(context, diskCacheSize))
append("/${Formatter.formatShortFileSize(context, coilCustomDiskCache.toLong() * 1000 * 1000)}")
append(" ${stringResource(R.string.used)}")
}
else -> buildString {
append(Formatter.formatShortFileSize(context, diskCacheSize))
append(" ${stringResource(R.string.used)}")
append(" (${diskCacheSize * 100 / coilDiskCacheMaxSize.bytes}%)")
}
},
trailingContent = {
HeaderIconButton(
icon = R.drawable.trash,
Expand All @@ -369,9 +381,14 @@ fun DataSettings() {
)
},
selectedValue = coilDiskCacheMaxSize,
onValueSelected = { coilDiskCacheMaxSize = it},
onValueSelected = {
coilDiskCacheMaxSize = it
if (coilDiskCacheMaxSize == CoilDiskCacheMaxSize.Custom)
showCoilCustomDiskCacheDialog = true
},
valueText = {
when (it) {
CoilDiskCacheMaxSize.Custom -> stringResource(R.string.custom)
CoilDiskCacheMaxSize.`32MB` -> "32MB"
CoilDiskCacheMaxSize.`64MB` -> "64MB"
CoilDiskCacheMaxSize.`128MB` -> "128MB"
Expand All @@ -380,10 +397,26 @@ fun DataSettings() {
CoilDiskCacheMaxSize.`1GB`-> "1GB"
CoilDiskCacheMaxSize.`2GB` -> "2GB"
CoilDiskCacheMaxSize.`4GB` -> "4GB"
CoilDiskCacheMaxSize.`8GB` -> "8GB"
}
}
)

if (showCoilCustomDiskCacheDialog)
InputNumericDialog(
title = stringResource(R.string.set_custom_cache),
placeholder = stringResource(R.string.enter_value_in_mb),
value = coilCustomDiskCache.toString(),
valueMin = "32",
valueMax = "10000",
onDismiss = { showCoilCustomDiskCacheDialog = false },
setValue = {
//Log.d("customCache", it)
coilCustomDiskCache = it.toInt()
showCoilCustomDiskCacheDialog = false
}
)

/*
EnumValueSelectorSettingsEntry(
title = stringResource(R.string.image_cache_max_size),
Expand Down Expand Up @@ -508,13 +541,20 @@ fun DataSettings() {
title = stringResource(R.string.song_cache_max_size),
titleSecondary = when (exoPlayerDiskCacheMaxSize) {
ExoPlayerDiskCacheMaxSize.Disabled -> ""
ExoPlayerDiskCacheMaxSize.Custom -> stringResource(R.string.custom_cache_size) +" "+exoPlayerCustomCache+"MB"
ExoPlayerDiskCacheMaxSize.Custom -> buildString {
append(Formatter.formatShortFileSize(context, diskCacheSize))
append("/${Formatter.formatShortFileSize(context,
exoPlayerCustomCache.toLong() * 1000 * 1000
)}")
append(" ${stringResource(R.string.used)}")
}
// stringResource(R.string.custom_cache_size) +" "+exoPlayerCustomCache+"MB"
else -> buildString {
append(Formatter.formatShortFileSize(context, diskCacheSize))
append(" ${stringResource(R.string.used)}")
when (val size = exoPlayerDiskCacheMaxSize) {
ExoPlayerDiskCacheMaxSize.Unlimited -> {}
ExoPlayerDiskCacheMaxSize.Custom -> { exoPlayerCustomCache }
ExoPlayerDiskCacheMaxSize.Custom -> {} // only needed because of UNLIMITED
else -> append(" (${diskCacheSize * 100 / size.bytes}%)")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const val UiTypeKey = "UiType"
const val disablePlayerHorizontalSwipeKey = "disablePlayerHorizontalSwipe"
const val disableIconButtonOnTopKey = "disableIconButtonOnTop"
const val exoPlayerCustomCacheKey = "exoPlayerCustomCache"
const val coilCustomDiskCacheKey = "exoPlayerCustomCache"
const val disableScrollingTextKey = "disableScrollingText"
const val audioQualityFormatKey = "audioQualityFormat"
const val showLikeButtonBackgroundPlayerKey = "showLikeButtonBackgroundPlayer"
Expand Down

0 comments on commit b8ef328

Please sign in to comment.