mirror of
https://github.com/amir1376/ab-download-manager.git
synced 2025-02-20 11:43:24 +08:00
increase thread count limit (#372)
This commit is contained in:
parent
3db6306177
commit
4fe7740fb3
@ -8,6 +8,7 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigura
|
|||||||
import com.abdownloadmanager.desktop.repository.AppRepository
|
import com.abdownloadmanager.desktop.repository.AppRepository
|
||||||
import com.abdownloadmanager.desktop.utils.*
|
import com.abdownloadmanager.desktop.utils.*
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
|
import com.abdownloadmanager.desktop.pages.settings.ThreadCountLimitation
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.FileChecksumConfigurable
|
import com.abdownloadmanager.desktop.pages.settings.configurable.FileChecksumConfigurable
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderFileChecksumConfig
|
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderFileChecksumConfig
|
||||||
import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
|
import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
|
||||||
@ -285,7 +286,7 @@ class AddSingleDownloadComponent(
|
|||||||
it.takeIf { it > 1 }
|
it.takeIf { it > 1 }
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
range = 0..32,
|
range = 0..ThreadCountLimitation.MAX_ALLOWED_THREAD_COUNT,
|
||||||
describe = {
|
describe = {
|
||||||
if (it == 0) Res.string.use_global_settings.asStringSource()
|
if (it == 0) Res.string.use_global_settings.asStringSource()
|
||||||
else Res.string.download_item_settings_thread_count_describe
|
else Res.string.download_item_settings_thread_count_describe
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.abdownloadmanager.desktop.pages.editdownload
|
package com.abdownloadmanager.desktop.pages.editdownload
|
||||||
|
|
||||||
|
import com.abdownloadmanager.desktop.pages.settings.ThreadCountLimitation
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.FileChecksumConfigurable
|
import com.abdownloadmanager.desktop.pages.settings.configurable.FileChecksumConfigurable
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable
|
import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable
|
import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable
|
||||||
@ -199,7 +200,7 @@ class EditDownloadState(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
range = 0..32,
|
range = 0..ThreadCountLimitation.MAX_ALLOWED_THREAD_COUNT,
|
||||||
describe = {
|
describe = {
|
||||||
if (it == 0) Res.string.use_global_settings.asStringSource()
|
if (it == 0) Res.string.use_global_settings.asStringSource()
|
||||||
else Res.string.download_item_settings_thread_count_describe
|
else Res.string.download_item_settings_thread_count_describe
|
||||||
|
@ -4,7 +4,6 @@ import com.abdownloadmanager.desktop.pages.settings.SettingSections.*
|
|||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.*
|
import com.abdownloadmanager.desktop.pages.settings.configurable.*
|
||||||
import com.abdownloadmanager.desktop.repository.AppRepository
|
import com.abdownloadmanager.desktop.repository.AppRepository
|
||||||
import com.abdownloadmanager.desktop.storage.AppSettingsStorage
|
import com.abdownloadmanager.desktop.storage.AppSettingsStorage
|
||||||
import ir.amirab.util.compose.IconSource
|
|
||||||
import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
|
import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
|
||||||
import com.abdownloadmanager.shared.utils.BaseComponent
|
import com.abdownloadmanager.shared.utils.BaseComponent
|
||||||
import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable
|
import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable
|
||||||
@ -15,9 +14,7 @@ import com.abdownloadmanager.resources.Res
|
|||||||
import com.abdownloadmanager.shared.utils.proxy.ProxyManager
|
import com.abdownloadmanager.shared.utils.proxy.ProxyManager
|
||||||
import com.abdownloadmanager.shared.utils.proxy.ProxyMode
|
import com.abdownloadmanager.shared.utils.proxy.ProxyMode
|
||||||
import com.arkivanov.decompose.ComponentContext
|
import com.arkivanov.decompose.ComponentContext
|
||||||
import ir.amirab.util.compose.StringSource
|
import ir.amirab.util.compose.*
|
||||||
import ir.amirab.util.compose.asStringSource
|
|
||||||
import ir.amirab.util.compose.asStringSourceWithARgs
|
|
||||||
import ir.amirab.util.compose.localizationmanager.LanguageInfo
|
import ir.amirab.util.compose.localizationmanager.LanguageInfo
|
||||||
import ir.amirab.util.compose.localizationmanager.LanguageManager
|
import ir.amirab.util.compose.localizationmanager.LanguageManager
|
||||||
import ir.amirab.util.datasize.CommonSizeConvertConfigs
|
import ir.amirab.util.datasize.CommonSizeConvertConfigs
|
||||||
@ -45,20 +42,34 @@ interface SettingSectionGetter {
|
|||||||
operator fun get(key: SettingSections): List<Configurable<*>>
|
operator fun get(key: SettingSections): List<Configurable<*>>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object ThreadCountLimitation {
|
||||||
|
const val MAX_ALLOWED_THREAD_COUNT = 256
|
||||||
|
const val MAX_NORMAL_VALUE = 32
|
||||||
|
}
|
||||||
|
|
||||||
fun threadCountConfig(appRepository: AppRepository): IntConfigurable {
|
fun threadCountConfig(appRepository: AppRepository): IntConfigurable {
|
||||||
return IntConfigurable(
|
return IntConfigurable(
|
||||||
title = Res.string.settings_download_thread_count.asStringSource(),
|
title = Res.string.settings_download_thread_count.asStringSource(),
|
||||||
description = Res.string.settings_download_thread_count_description.asStringSource(),
|
description = Res.string.settings_download_thread_count_description.asStringSource(),
|
||||||
backedBy = appRepository.threadCount,
|
backedBy = appRepository.threadCount,
|
||||||
range = 1..32,
|
range = 1..ThreadCountLimitation.MAX_ALLOWED_THREAD_COUNT,
|
||||||
renderMode = IntConfigurable.RenderMode.TextField,
|
renderMode = IntConfigurable.RenderMode.TextField,
|
||||||
describe = {
|
describe = {
|
||||||
Res.string.settings_download_thread_count_describe
|
buildList {
|
||||||
.asStringSourceWithARgs(
|
add(
|
||||||
Res.string.settings_download_thread_count_describe_createArgs(
|
Res.string.settings_download_thread_count_describe
|
||||||
count = it.toString()
|
.asStringSourceWithARgs(
|
||||||
)
|
Res.string.settings_download_thread_count_describe_createArgs(
|
||||||
|
count = it.toString()
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
if (it > ThreadCountLimitation.MAX_NORMAL_VALUE) {
|
||||||
|
add(
|
||||||
|
Res.string.settings_download_thread_count_with_large_value_describe.asStringSource()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}.combineStringSources("\n")
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfi
|
|||||||
import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
|
import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
|
||||||
import com.abdownloadmanager.shared.utils.mvi.supportEffects
|
import com.abdownloadmanager.shared.utils.mvi.supportEffects
|
||||||
import arrow.optics.copy
|
import arrow.optics.copy
|
||||||
|
import com.abdownloadmanager.desktop.pages.settings.ThreadCountLimitation
|
||||||
import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable
|
import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable
|
||||||
import com.abdownloadmanager.desktop.repository.AppRepository
|
import com.abdownloadmanager.desktop.repository.AppRepository
|
||||||
import com.abdownloadmanager.desktop.storage.AppSettingsStorage
|
import com.abdownloadmanager.desktop.storage.AppSettingsStorage
|
||||||
@ -321,7 +322,7 @@ class SingleDownloadComponent(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
range = 0..32,
|
range = 0..ThreadCountLimitation.MAX_ALLOWED_THREAD_COUNT,
|
||||||
renderMode = IntConfigurable.RenderMode.TextField,
|
renderMode = IntConfigurable.RenderMode.TextField,
|
||||||
),
|
),
|
||||||
SpeedLimitConfigurable(
|
SpeedLimitConfigurable(
|
||||||
@ -342,4 +343,4 @@ class SingleDownloadComponent(
|
|||||||
data class Config(
|
data class Config(
|
||||||
val id: Long,
|
val id: Long,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -100,26 +100,26 @@ sealed interface StringSource {
|
|||||||
override fun rememberString(): String {
|
override fun rememberString(): String {
|
||||||
return values.map {
|
return values.map {
|
||||||
it.rememberString()
|
it.rememberString()
|
||||||
}.joinToString()
|
}.joinToString(separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun rememberString(args: Map<String, String>): String {
|
override fun rememberString(args: Map<String, String>): String {
|
||||||
return values.map {
|
return values.map {
|
||||||
it.rememberString(args)
|
it.rememberString(args)
|
||||||
}.joinToString()
|
}.joinToString(separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getString(): String {
|
override fun getString(): String {
|
||||||
return values.map {
|
return values.map {
|
||||||
it.getString()
|
it.getString()
|
||||||
}.joinToString()
|
}.joinToString(separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getString(args: Map<String, String>): String {
|
override fun getString(args: Map<String, String>): String {
|
||||||
return values.map {
|
return values.map {
|
||||||
it.getString(args)
|
it.getString(args)
|
||||||
}.joinToString()
|
}.joinToString(separator)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,4 +138,4 @@ fun String.asStringSource(): StringSource {
|
|||||||
|
|
||||||
fun List<StringSource>.combineStringSources(separator: String = ""): StringSource {
|
fun List<StringSource>.combineStringSources(separator: String = ""): StringSource {
|
||||||
return StringSource.CombinedStringSource(this, separator)
|
return StringSource.CombinedStringSource(this, separator)
|
||||||
}
|
}
|
||||||
|
@ -179,6 +179,7 @@ browser_integration=Browser Integration
|
|||||||
settings_download_thread_count=Thread Count
|
settings_download_thread_count=Thread Count
|
||||||
settings_download_thread_count_description=Maximum download thread per download item
|
settings_download_thread_count_description=Maximum download thread per download item
|
||||||
settings_download_thread_count_describe=A download can have up to {{count}} threads
|
settings_download_thread_count_describe=A download can have up to {{count}} threads
|
||||||
|
settings_download_thread_count_with_large_value_describe=Warning: Setting a high thread count may increase system resource usage, reduce performance, or cause connection issues with servers. Use higher values only if you understand the potential impact on your system and network.
|
||||||
settings_use_server_last_modified_time=Use Server's Last-Modified Time
|
settings_use_server_last_modified_time=Use Server's Last-Modified Time
|
||||||
settings_use_server_last_modified_time_description=When downloading a file, use server's last modified time for the local file
|
settings_use_server_last_modified_time_description=When downloading a file, use server's last modified time for the local file
|
||||||
settings_use_sparse_file_allocation=Sparse File Allocation
|
settings_use_sparse_file_allocation=Sparse File Allocation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user