From cda0546feeffcbe8bd05cae419778ba4dec2a501 Mon Sep 17 00:00:00 2001 From: AmirHossein Abdolmotallebi Date: Thu, 21 Nov 2024 14:57:26 +0330 Subject: [PATCH] add auto show download progress dialog option --- .../com/abdownloadmanager/desktop/AppComponent.kt | 5 +++++ .../desktop/pages/settings/SettingsComponent.kt | 12 ++++++++++++ .../desktop/storage/AppSettingsStorage.kt | 6 ++++++ .../resources/locales/en_US.properties | 2 ++ 4 files changed, 25 insertions(+) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt index fb51c37..0f575ab 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt @@ -534,6 +534,11 @@ class AppComponent( openDownloadDialog(it.downloadItem.id) } } + if (it is DownloadManagerEvents.OnJobStarting) { + if (appSettings.autoShowDownloadProgressDialog.value) { + openDownloadDialog(it.downloadItem.id) + } + } } override suspend fun openDownloadItem(id: Long) { diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt index 3faf08d..d57b965 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt @@ -117,6 +117,17 @@ fun showDownloadFinishWindow(settingsStorage: AppSettingsStorage): BooleanConfig ) } +fun autoShowDownloadProgressWindow(settingsStorage: AppSettingsStorage): BooleanConfigurable { + return BooleanConfigurable( + title = Res.string.settings_show_download_progress_dialog.asStringSource(), + description = Res.string.settings_show_download_progress_dialog_description.asStringSource(), + backedBy = settingsStorage.autoShowDownloadProgressDialog, + describe = { + (if (it) Res.string.enabled else Res.string.disabled).asStringSource() + }, + ) +} + fun speedLimitConfig(appRepository: AppRepository): SpeedLimitConfigurable { return SpeedLimitConfigurable( title = Res.string.settings_global_speed_limiter.asStringSource(), @@ -385,6 +396,7 @@ class SettingsComponent( speedLimitConfig(appRepository), threadCountConfig(appRepository), dynamicPartDownloadConfig(appRepository), + autoShowDownloadProgressWindow(appSettings), showDownloadFinishWindow(appSettings), useServerLastModified(appRepository), useSparseFileAllocation(appRepository), diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt index 2ba1366..c5a0935 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt @@ -21,6 +21,7 @@ data class AppSettingsModel( val useServerLastModifiedTime: Boolean = false, val useSparseFileAllocation: Boolean = true, val useAverageSpeed: Boolean = true, + val autoShowDownloadProgressDialog: Boolean = true, val showCompletionDialog: Boolean = true, val speedLimit: Long = 0, val autoStartOnBoot: Boolean = true, @@ -45,6 +46,7 @@ data class AppSettingsModel( val useServerLastModifiedTime = booleanKeyOf("useServerLastModifiedTime") val useSparseFileAllocation = booleanKeyOf("useSparseFileAllocation") val useAverageSpeed = booleanKeyOf("useAverageSpeed") + val autoShowDownloadProgressDialog = booleanKeyOf("autoShowDownloadProgressDialog") val showCompletionDialog = booleanKeyOf("showCompletionDialog") val speedLimit = longKeyOf("speedLimit") val autoStartOnBoot = booleanKeyOf("autoStartOnBoot") @@ -68,6 +70,8 @@ data class AppSettingsModel( ?: default.useServerLastModifiedTime, useSparseFileAllocation = source.get(Keys.useSparseFileAllocation) ?: default.useSparseFileAllocation, useAverageSpeed = source.get(Keys.useAverageSpeed) ?: default.useAverageSpeed, + autoShowDownloadProgressDialog = source.get(Keys.autoShowDownloadProgressDialog) + ?: default.autoShowDownloadProgressDialog, showCompletionDialog = source.get(Keys.showCompletionDialog) ?: default.showCompletionDialog, speedLimit = source.get(Keys.speedLimit) ?: default.speedLimit, @@ -90,6 +94,7 @@ data class AppSettingsModel( put(Keys.useServerLastModifiedTime, focus.useServerLastModifiedTime) put(Keys.useSparseFileAllocation, focus.useSparseFileAllocation) put(Keys.useAverageSpeed, focus.useAverageSpeed) + put(Keys.autoShowDownloadProgressDialog, focus.autoShowDownloadProgressDialog) put(Keys.showCompletionDialog, focus.showCompletionDialog) put(Keys.speedLimit, focus.speedLimit) put(Keys.autoStartOnBoot, focus.autoStartOnBoot) @@ -115,6 +120,7 @@ class AppSettingsStorage( val useServerLastModifiedTime = from(AppSettingsModel.useServerLastModifiedTime) val useSparseFileAllocation = from(AppSettingsModel.useSparseFileAllocation) val useAverageSpeed = from(AppSettingsModel.useAverageSpeed) + val autoShowDownloadProgressDialog = from(AppSettingsModel.autoShowDownloadProgressDialog) val showCompletionDialog = from(AppSettingsModel.showCompletionDialog) val speedLimit = from(AppSettingsModel.speedLimit) val autoStartOnBoot = from(AppSettingsModel.autoStartOnBoot) diff --git a/shared/resources/src/main/resources/com/abdownloadmanager/resources/locales/en_US.properties b/shared/resources/src/main/resources/com/abdownloadmanager/resources/locales/en_US.properties index 600f235..b178a22 100644 --- a/shared/resources/src/main/resources/com/abdownloadmanager/resources/locales/en_US.properties +++ b/shared/resources/src/main/resources/com/abdownloadmanager/resources/locales/en_US.properties @@ -208,6 +208,8 @@ settings_dynamic_part_creation=Dynamic part creation settings_dynamic_part_creation_description=When a part is finished create another part by splitting other parts to improve download speed settings_show_completion_dialog=Show Download Completion dialog settings_show_completion_dialog_description=Automatically show "Download Completion" dialog when a download finished +settings_show_download_progress_dialog=Show Download Progress dialog +settings_show_download_progress_dialog_description=Automatically show "Download Progress" dialog when a download started download_item_settings_speed_limit=Speed Limit download_item_settings_speed_limit_description=Limit download speed for this item download_item_settings_show_completion_dialog=Show Completion dialog