From 204f33ea4a5d222ea79a8dbab305ac8dea5d9d08 Mon Sep 17 00:00:00 2001 From: Ida Delphine Date: Sat, 17 Oct 2026 20:58:17 -0700 Subject: [PATCH] add download preferences --- .../app/preferences/DownloadPreferences.kt | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 shared/src/commonMain/kotlin/net/newpipe/app/preferences/DownloadPreferences.kt diff --git a/shared/src/commonMain/kotlin/net/newpipe/app/preferences/DownloadPreferences.kt b/shared/src/commonMain/kotlin/net/newpipe/app/preferences/DownloadPreferences.kt new file mode 100644 index 000000000..f3df088d9 --- /dev/null +++ b/shared/src/commonMain/kotlin/net/newpipe/app/preferences/DownloadPreferences.kt @@ -0,0 +1,48 @@ +/* +* SPDX-FileCopyrightText: 2026 NewPipe e.V. +* SPDX-License-Identifier: GPL-3.0-or-later +*/ + +package net.newpipe.app.preferences + +/** + * Preference keys, values, and defaults for the Download settings screen. + * + */ +object DownloadPreferences { + const val KEY_STORAGE_ASK = "downloads_storage_ask" + const val KEY_STORAGE_USE_SAF = "storage_use_saf" + const val KEY_DOWNLOAD_FOLDER_VIDEO = "download_path" + const val KEY_DOWNLOAD_FOLDER_AUDIO = "download_path_audio" + const val KEY_FILE_CHARSET = "file_rename_charset" + const val KEY_REPLACEMENT_CHARACTER = "file_replacement_character" + const val KEY_MAXIMUM_RETRIES = "downloads_max_retry" + const val KEY_PAUSE_ON_METERED_NETWORK = "cross_network_downloads" + const val KEY_LIMIT_QUEUE = "downloads_queue_limit" + + const val CHARSET_LETTERS_AND_DIGITS = "CHARSET_LETTERS_AND_DIGITS" + const val CHARSET_MOST_SPECIAL = "CHARSET_MOST_SPECIAL" + + const val DEFAULT_STORAGE_ASK = false + const val DEFAULT_STORAGE_USE_SAF = true + + const val DEFAULT_DOWNLOAD_FOLDER = "" + const val DEFAULT_FILE_CHARSET = CHARSET_MOST_SPECIAL + const val DEFAULT_REPLACEMENT_CHARACTER = "_" + const val DEFAULT_MAXIMUM_RETRIES = "3" + const val DEFAULT_PAUSE_ON_METERED_NETWORK = false + const val DEFAULT_LIMIT_QUEUE = true + + val FILE_CHARSETS = listOf(CHARSET_LETTERS_AND_DIGITS, CHARSET_MOST_SPECIAL) + + const val MAXIMUM_RETRIES_NONE = "0" + + val MAXIMUM_RETRY_COUNTS = listOf( + MAXIMUM_RETRIES_NONE, "1", "2", "3", "4", "5", "7", "10", "15" + ) + + fun normalizedMaximumRetries(storedValue: String): String = when (storedValue.toIntOrNull()) { + null -> MAXIMUM_RETRIES_NONE + else -> storedValue + } +}