From 2926dc6c8eea53a35006b4188f9a03a9a9bb5216 Mon Sep 17 00:00:00 2001
From: Allen Baby <64322605+allenbaby@users.noreply.github.com>
Date: Sat, 25 Feb 2023 00:21:03 +0530
Subject: [PATCH] Issue #376: Added new feature for separate watch quality on
mobile data. (#391)
* Issue #376: Added new feature for separate watch quality on mobile data.
---
.../cloudstream3/ui/player/CS3IPlayer.kt | 3 ++-
.../ui/player/FullScreenPlayer.kt | 4 ++--
.../ui/settings/SettingsPlayer.kt | 24 +++++++++++++++++++
.../lagradost/cloudstream3/utils/AppUtils.kt | 7 +++++-
app/src/main/res/values/strings.xml | 6 +++--
app/src/main/res/xml/settings_player.xml | 4 ++++
6 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
index cd384c6f..782e3fa4 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
@@ -35,6 +35,7 @@ import com.lagradost.cloudstream3.mvvm.logError
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
import com.lagradost.cloudstream3.utils.EpisodeSkip
+import com.lagradost.cloudstream3.utils.AppUtils.isUsingMobileData
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.ExtractorLinkPlayList
import com.lagradost.cloudstream3.utils.ExtractorUri
@@ -849,7 +850,7 @@ class CS3IPlayer : IPlayer {
Log.i(TAG, "loadExo")
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
val maxVideoHeight = settingsManager.getInt(
- context.getString(com.lagradost.cloudstream3.R.string.quality_pref_key),
+ context.getString(if (context.isUsingMobileData()) com.lagradost.cloudstream3.R.string.quality_pref_mobile_data_key else com.lagradost.cloudstream3.R.string.quality_pref_key),
Int.MAX_VALUE
)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt
index 8d28fd9d..d1b2814d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/FullScreenPlayer.kt
@@ -40,6 +40,7 @@ import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.mvvm.logError
import com.lagradost.cloudstream3.ui.player.GeneratorPlayer.Companion.subsProvidersIsActive
import com.lagradost.cloudstream3.utils.Qualities
+import com.lagradost.cloudstream3.utils.AppUtils.isUsingMobileData
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
@@ -1246,9 +1247,8 @@ open class FullScreenPlayer : AbstractPlayerFragment() {
ctx.getString(R.string.double_tap_pause_enabled_key),
false
)
-
currentPrefQuality = settingsManager.getInt(
- ctx.getString(R.string.quality_pref_key),
+ ctx.getString(if (ctx.isUsingMobileData()) R.string.quality_pref_mobile_data_key else R.string.quality_pref_key),
currentPrefQuality
)
// useSystemBrightness =
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt
index 33d41934..e10a5a1a 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt
@@ -113,6 +113,30 @@ class SettingsPlayer : PreferenceFragmentCompat() {
return@setOnPreferenceClickListener true
}
+ getPref(R.string.quality_pref_mobile_data_key)?.setOnPreferenceClickListener {
+ val prefValues = Qualities.values().map { it.value }.reversed().toMutableList()
+ prefValues.remove(Qualities.Unknown.value)
+
+ val prefNames = prefValues.map { Qualities.getStringByInt(it) }
+
+ val currentQuality =
+ settingsManager.getInt(
+ getString(R.string.quality_pref_mobile_data_key),
+ Qualities.values().last().value
+ )
+
+ activity?.showBottomDialog(
+ prefNames.toList(),
+ prefValues.indexOf(currentQuality),
+ getString(R.string.watch_quality_pref_data),
+ true,
+ {}) {
+ settingsManager.edit().putInt(getString(R.string.quality_pref_mobile_data_key), prefValues[it])
+ .apply()
+ }
+ return@setOnPreferenceClickListener true
+ }
+
getPref(R.string.player_pref_key)?.setOnPreferenceClickListener {
val prefNames = resources.getStringArray(R.array.player_pref_names)
val prefValues = resources.getIntArray(R.array.player_pref_values)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt
index 205f0a6b..a76b62fd 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt
@@ -776,8 +776,13 @@ object AppUtils {
return networkInfo.any {
conManager.getNetworkCapabilities(it)
?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) == true
+ } &&
+ !networkInfo.any {
+ conManager.getNetworkCapabilities(it)
+ ?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true
+ }
}
- }
+
private fun Activity?.cacheClass(clazz: String?) {
clazz?.let { c ->
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2d46a70d..49380b5e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -16,6 +16,7 @@
test_providers_key
subtitle_settings_chromecast_key
quality_pref_key
+ quality_pref_mobile_data_key
player_pref_key
prefer_limit_title_key
prefer_limit_title_rez_key
@@ -364,7 +365,8 @@
Don\'t show again
Skip this Update
Update
- Preferred watch quality
+ Preferred watch quality (WiFi)
+ Preferred watch quality (Mobile Data)
Video player title max chars
Video player resolution
Video buffer size
@@ -655,4 +657,4 @@
Subscribed to %s
Unsubscribed from %s
Episode %d released!
-
\ No newline at end of file
+
diff --git a/app/src/main/res/xml/settings_player.xml b/app/src/main/res/xml/settings_player.xml
index 0e5bd84f..2d2905ea 100644
--- a/app/src/main/res/xml/settings_player.xml
+++ b/app/src/main/res/xml/settings_player.xml
@@ -15,6 +15,10 @@
android:icon="@drawable/ic_baseline_hd_24"
android:key="@string/quality_pref_key"
android:title="@string/watch_quality_pref" />
+