From 315271390f5daf104c4927829e946f8b70e11595 Mon Sep 17 00:00:00 2001 From: tzugen Date: Sat, 20 May 2023 21:28:28 +0200 Subject: [PATCH] Add setting to control the max bitrate when pinning --- .../org/moire/ultrasonic/service/DownloadTask.kt | 4 ++-- .../kotlin/org/moire/ultrasonic/util/Settings.kt | 13 +++++++++---- ultrasonic/src/main/res/values/setting_keys.xml | 1 + ultrasonic/src/main/res/values/strings.xml | 1 + ultrasonic/src/main/res/xml/settings.xml | 15 +++++++++++---- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt index 4cd4c7df..e36975b8 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadTask.kt @@ -92,8 +92,8 @@ class DownloadTask( // Attempt partial HTTP GET, appending to the file if it exists. val (inStream, isPartial) = musicService.getDownloadInputStream( downloadTrack.track, fileLength, - Settings.maxBitRate, - downloadTrack.pinned + if (downloadTrack.pinned) Settings.maxBitRatePinning else Settings.maxBitRate, + downloadTrack.pinned && Settings.pinWithHighestQuality ) inputStream = inStream diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt index d3aa70f9..5b179ec1 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt @@ -33,18 +33,23 @@ object Settings { val maxBitRate: Int get() { return if (Util.isNetworkRestricted()) { - maxMobileBitRate + maxBitRateMobile } else { - maxWifiBitRate + maxBitRateWifi } } - private var maxWifiBitRate + private var maxBitRateWifi by StringIntSetting(getKey(R.string.setting_key_max_bitrate_wifi)) - private var maxMobileBitRate + private var maxBitRateMobile by StringIntSetting(getKey(R.string.setting_key_max_bitrate_mobile)) + var maxBitRatePinning + by StringIntSetting(getKey(R.string.setting_key_max_bitrate_pinning)) + val pinWithHighestQuality: Boolean + get() = (maxBitRatePinning == 0) + @JvmStatic val preloadCount: Int get() { diff --git a/ultrasonic/src/main/res/values/setting_keys.xml b/ultrasonic/src/main/res/values/setting_keys.xml index c18a9a92..0e135e5e 100644 --- a/ultrasonic/src/main/res/values/setting_keys.xml +++ b/ultrasonic/src/main/res/values/setting_keys.xml @@ -12,6 +12,7 @@ showTrackNumber maxBitrateWifi maxBitrateMobile + maxBitratePinning cacheSize customCacheLocation cacheLocation diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index 394091ac..4f888cbb 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -233,6 +233,7 @@ Max Bitrate - Mobile Unlimited Max Bitrate - Wi-Fi + Max Bitrate - When pinning a song permanently Max Songs Respond to phone, headset and Bluetooth media buttons Media Buttons diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml index ee11bda0..692117c5 100644 --- a/ultrasonic/src/main/res/xml/settings.xml +++ b/ultrasonic/src/main/res/xml/settings.xml @@ -167,18 +167,25 @@ a:title="@string/settings.network_title" app:iconSpaceReserved="false"> +