1313import com .google .android .material .snackbar .Snackbar ;
1414
1515import org .schabi .newpipe .R ;
16+ import org .schabi .newpipe .util .ListHelper ;
1617import org .schabi .newpipe .util .PermissionHelper ;
1718
1819import java .util .LinkedList ;
@@ -26,7 +27,7 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro
2627 addPreferencesFromResourceRegistry ();
2728
2829 updateSeekOptions ();
29-
30+ updateResolutionOptions ();
3031 listener = (sharedPreferences , key ) -> {
3132
3233 // on M and above, if user chooses to minimise to popup player on exit
@@ -48,10 +49,72 @@ && getString(R.string.minimize_on_exit_key).equals(key)) {
4849 }
4950 } else if (getString (R .string .use_inexact_seek_key ).equals (key )) {
5051 updateSeekOptions ();
52+ } else if (getString (R .string .show_higher_resolutions_key ).equals (key )) {
53+ updateResolutionOptions ();
5154 }
5255 };
5356 }
5457
58+ /**
59+ * Update default resolution, default popup resolution & mobile data resolution options.
60+ * show high resolution when "Show higher resolution" option enabled.
61+ */
62+ private void updateResolutionOptions () {
63+ final ListPreference defaultResolution = findPreference (
64+ getString (R .string .default_resolution_key ));
65+ final ListPreference defaultPopupResolution = findPreference (
66+ getString (R .string .default_popup_resolution_key ));
67+ final ListPreference mobileDataResolution = findPreference (
68+ getString (R .string .limit_mobile_data_usage_key ));
69+ final Resources resources = getResources ();
70+ final boolean showHigherResolutions = getPreferenceManager ().getSharedPreferences ()
71+ .getBoolean (resources .getString (R .string .show_higher_resolutions_key ), false );
72+ final List <String > resolutionListDescriptions = ListHelper .getSortedResolutionList (
73+ resources ,
74+ R .array .resolution_list_description ,
75+ R .array .high_resolution_list_descriptions ,
76+ showHigherResolutions );
77+ final List <String > resolutionListValues = ListHelper .getSortedResolutionList (
78+ resources ,
79+ R .array .resolution_list_values ,
80+ R .array .high_resolution_list_values ,
81+ showHigherResolutions );
82+ final List <String > limitDataUsageResolutionValues = ListHelper .getSortedResolutionList (
83+ resources ,
84+ R .array .limit_data_usage_values_list ,
85+ R .array .high_resolution_limit_data_usage_values_list ,
86+ showHigherResolutions );
87+ final List <String > limitDataUsageResolutionDescriptions = ListHelper
88+ .getSortedResolutionList (resources ,
89+ R .array .limit_data_usage_description_list ,
90+ R .array .high_resolution_list_descriptions ,
91+ showHigherResolutions );
92+ defaultResolution .setEntries (resolutionListDescriptions .toArray (new String [0 ]));
93+ defaultResolution .setEntryValues (resolutionListValues .toArray (new String [0 ]));
94+ defaultPopupResolution .setEntries (resolutionListDescriptions .toArray (new String [0 ]));
95+ defaultPopupResolution .setEntryValues (resolutionListValues .toArray (new String [0 ]));
96+ mobileDataResolution .setEntries (
97+ limitDataUsageResolutionDescriptions .toArray (new String [0 ]));
98+ mobileDataResolution .setEntryValues (limitDataUsageResolutionValues .toArray (new String [0 ]));
99+ if (!showHigherResolutions ) {
100+ if (ListHelper .isHighResolutionSelected (defaultResolution .getValue (),
101+ R .array .high_resolution_list_values ,
102+ resources )) {
103+ defaultResolution .setValueIndex (0 );
104+ }
105+ if (ListHelper .isHighResolutionSelected (defaultPopupResolution .getValue (),
106+ R .array .high_resolution_list_values ,
107+ resources )) {
108+ defaultPopupResolution .setValueIndex (0 );
109+ }
110+ if (ListHelper .isHighResolutionSelected (mobileDataResolution .getValue (),
111+ R .array .high_resolution_limit_data_usage_values_list ,
112+ resources )) {
113+ mobileDataResolution .setValueIndex (0 );
114+ }
115+ }
116+ }
117+
55118 /**
56119 * Update fast-forward/-rewind seek duration options
57120 * according to language and inexact seek setting.
0 commit comments