Fix issue #26
This commit is contained in:
parent
97b76ebcc0
commit
15244299dd
|
@ -14,15 +14,77 @@ package app.fedilab.nitterizeme.fragments;
|
|||
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.SeekBarPreference;
|
||||
|
||||
import app.fedilab.nitterizeme.R;
|
||||
|
||||
public class InvidiousSettingsFragment extends PreferenceFragmentCompat {
|
||||
public class InvidiousSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
setPreferencesFromResource(R.xml.preferences_invidious, rootKey);
|
||||
SharedPreferences prefs = getPreferenceScreen().getSharedPreferences();
|
||||
String volume_mode = prefs.getString(getString(R.string.invidious_volume_mode), "0");
|
||||
if (volume_mode.compareTo("0") == 0 || volume_mode.compareTo("-1") == 0) {
|
||||
PreferenceCategory player_parameters = findPreference(getString(R.string.invidious_category_player_parameters));
|
||||
SeekBarPreference volume_pref = findPreference(getString(R.string.invidious_volume_value));
|
||||
assert volume_pref != null;
|
||||
assert player_parameters != null;
|
||||
player_parameters.removePreference(volume_pref);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
|
||||
if (key.compareTo(getString(R.string.invidious_volume_mode)) == 0) {
|
||||
String volume_mode = sharedPreferences.getString(getString(R.string.invidious_volume_mode), "0");
|
||||
SeekBarPreference volume_pref = findPreference(getString(R.string.invidious_volume_value));
|
||||
PreferenceCategory player_parameters = findPreference(getString(R.string.invidious_category_player_parameters));
|
||||
if (volume_mode.compareTo("0") == 0 || volume_mode.compareTo("-1") == 0) {
|
||||
assert player_parameters != null;
|
||||
if (volume_pref != null) {
|
||||
player_parameters.removePreference(volume_pref);
|
||||
}
|
||||
} else {
|
||||
FragmentActivity activity = getActivity();
|
||||
assert activity != null;
|
||||
SeekBarPreference volume_pref_new = new SeekBarPreference(activity);
|
||||
volume_pref_new.setTitle(R.string.invidious_volume_mode_value);
|
||||
volume_pref_new.setSummary(R.string.invidious_volume_mode_value_indication);
|
||||
volume_pref_new.setKey(getString(R.string.invidious_volume_value));
|
||||
volume_pref_new.setMax(100);
|
||||
volume_pref_new.setDefaultValue(sharedPreferences.getInt(getString(R.string.invidious_volume_value), 60));
|
||||
volume_pref_new.setIconSpaceReserved(false);
|
||||
volume_pref_new.setShowSeekBarValue(true);
|
||||
assert player_parameters != null;
|
||||
if (volume_pref != null) {
|
||||
player_parameters.removePreference(volume_pref);
|
||||
}
|
||||
player_parameters.addPreference(volume_pref_new);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -475,6 +475,44 @@ public class Utils {
|
|||
}
|
||||
}
|
||||
|
||||
//Loop
|
||||
String loop = sharedpreferences.getString(context.getString(R.string.invidious_loop_mode), "0");
|
||||
if (loop.compareTo("-1") == 0) { //Remove value
|
||||
newUrl = newUrl.replaceAll("&?loop=\\d", "");
|
||||
} else if (loop.compareTo("0") != 0) { //Change value
|
||||
if (newUrl.contains("loop=")) {
|
||||
newUrl = newUrl.replaceAll("loop=\\d", loop);
|
||||
} else {
|
||||
newUrl += "&" + loop;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Volume
|
||||
String volume = sharedpreferences.getString(context.getString(R.string.invidious_volume_mode), "0");
|
||||
if (volume.compareTo("-1") == 0) { //Remove value
|
||||
newUrl = newUrl.replaceAll("&?volume=\\d{1,3}", "");
|
||||
} else if (volume.compareTo("0") != 0) { //Change value
|
||||
int volume_value = sharedpreferences.getInt(context.getString(R.string.invidious_volume_value), 60);
|
||||
if (newUrl.contains("volume=")) {
|
||||
newUrl = newUrl.replaceAll("volume=\\d{1,3}", "volume=" + volume_value);
|
||||
} else {
|
||||
newUrl += "&volume=" + volume_value;
|
||||
}
|
||||
}
|
||||
|
||||
//Player style
|
||||
String player_style = sharedpreferences.getString(context.getString(R.string.invidious_player_style_mode), "0");
|
||||
if (player_style.compareTo("-1") == 0) { //Remove value
|
||||
newUrl = newUrl.replaceAll("&?player_style=\\w+", "");
|
||||
} else if (player_style.compareTo("0") != 0) { //Change value
|
||||
if (newUrl.contains("player_style=")) {
|
||||
newUrl = newUrl.replaceAll("player_style=\\w+", player_style);
|
||||
} else {
|
||||
newUrl += "&" + player_style;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return newUrl;
|
||||
}
|
||||
|
|
|
@ -88,4 +88,24 @@
|
|||
<item>quality=medium</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="invidious_loop_values">
|
||||
<item>0</item>
|
||||
<item>-1</item>
|
||||
<item>loop=1</item>
|
||||
<item>loop=0</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="invidious_volume_values">
|
||||
<item>0</item>
|
||||
<item>-1</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="invidious_player_style_values">
|
||||
<item>0</item>
|
||||
<item>-1</item>
|
||||
<item>player_style=invidious</item>
|
||||
<item>player_style=youtube</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
|
@ -1,6 +1,24 @@
|
|||
<resources>
|
||||
<string name="app_name" translatable="false">UntrackMe</string>
|
||||
<string name="app_name_lite" translatable="false">UntrackMe Lite</string>
|
||||
<!-- Some local values -->
|
||||
<string name="invidious_dark_mode" translatable="false">invidious_dark_mode</string>
|
||||
<string name="invidious_thin_mode" translatable="false">invidious_thin_mode</string>
|
||||
<string name="invidious_language_mode" translatable="false">invidious_language_mode</string>
|
||||
<string name="invidious_annotations_mode" translatable="false">invidious_annotations_mode</string>
|
||||
<string name="invidious_autoplay_mode" translatable="false">invidious_autoplay_mode</string>
|
||||
<string name="invidious_continue_mode" translatable="false">invidious_continue_mode</string>
|
||||
<string name="invidious_listen_mode" translatable="false">invidious_listen_mode</string>
|
||||
<string name="invidious_local_mode" translatable="false">invidious_local_mode</string>
|
||||
<string name="invidious_subtitles_mode" translatable="false">invidious_subtitles_mode</string>
|
||||
<string name="invidious_quality_mode" translatable="false">invidious_quality_mode</string>
|
||||
<string name="invidious_loop_mode" translatable="false">invidious_loop_mode</string>
|
||||
<string name="invidious_volume_mode" translatable="false">invidious_volume_mode</string>
|
||||
<string name="invidious_volume_value" translatable="false">invidious_volume_value</string>
|
||||
<string name="invidious_category_player_parameters" translatable="false">invidious_category_player_parameters</string>
|
||||
<string name="invidious_player_style_mode" translatable="false">invidious_player_style_mode</string>
|
||||
|
||||
|
||||
<string name="action_settings">Settings</string>
|
||||
<string name="action_about">About</string>
|
||||
<string name="developer">Developer</string>
|
||||
|
@ -97,6 +115,19 @@
|
|||
<string name="invidious_listen_mode_indication">Play only audio portion of video</string>
|
||||
<string name="invidious_local_mode_title">Local</string>
|
||||
<string name="invidious_local_mode_indication">Proxy video streams</string>
|
||||
<string name="invidious_subtitles_mode_title">Subtitles</string>
|
||||
<string name="invidious_subtitles_mode_indication">List of ISO 639–1 language codes</string>
|
||||
<string name="invidious_quality_mode_title">Quality</string>
|
||||
<string name="invidious_quality_mode_indication">Default player quality</string>
|
||||
<string name="invidious_loop_mode_title">Loop</string>
|
||||
<string name="invidious_volume_mode_title">Volume</string>
|
||||
<string name="invidious_volume_mode_indication">Default player volume, can be any whole number between 0 and 100</string>
|
||||
<string name="invidious_loop_mode_indication">Loop player by default</string>
|
||||
<string name="invidious_volume_mode_value">Volume value</string>
|
||||
<string name="invidious_volume_mode_value_indication">Override the volume with this value</string>
|
||||
<string name="pref_invidious_head3">Player Style</string>
|
||||
<string name="invidious_player_style_mode_title">Appearance</string>
|
||||
<string name="invidious_player_style_mode_indication">Invidious, the default one. YouTube, using a centered play button and always visible video control bar</string>
|
||||
|
||||
<string-array name="invidious_theme">
|
||||
<item>Ignore</item>
|
||||
|
@ -105,7 +136,6 @@
|
|||
<item>Light theme</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="invidious_enable">
|
||||
<item>Ignore</item>
|
||||
<item>Remove</item>
|
||||
|
@ -150,25 +180,25 @@
|
|||
</string-array>
|
||||
|
||||
<string-array name="invidious_quality">
|
||||
<item>Ignore</item>
|
||||
<item>Remove</item>
|
||||
<item>DASH</item>
|
||||
<item>720p</item>
|
||||
<item>480p</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Some local values -->
|
||||
<string name="invidious_dark_mode" translatable="false">invidious_dark_mode</string>
|
||||
<string name="invidious_thin_mode" translatable="false">invidious_thin_mode</string>
|
||||
<string name="invidious_language_mode" translatable="false">invidious_language_mode</string>
|
||||
<string name="invidious_annotations_mode" translatable="false">invidious_annotations_mode</string>
|
||||
<string name="invidious_autoplay_mode" translatable="false">invidious_autoplay_mode</string>
|
||||
<string name="invidious_continue_mode" translatable="false">invidious_continue_mode</string>
|
||||
<string name="invidious_listen_mode" translatable="false">invidious_listen_mode</string>
|
||||
<string name="invidious_local_mode" translatable="false">invidious_local_mode</string>
|
||||
<string name="invidious_subtitles_mode" translatable="false">invidious_subtitles_mode</string>
|
||||
<string name="invidious_quality_mode" translatable="false">invidious_quality_mode</string>
|
||||
<string name="invidious_subtitles_mode_title">Subtitles</string>
|
||||
<string name="invidious_subtitles_mode_indication">List of ISO 639-1 language codes</string>
|
||||
<string name="invidious_quality_mode_title">Quality</string>
|
||||
<string name="invidious_quality_mode_indication">Default player quality</string>
|
||||
<string-array name="invidious_volume">
|
||||
<item>Ignore</item>
|
||||
<item>Remove</item>
|
||||
<item>Custom</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="invidious_player_style">
|
||||
<item>Ignore</item>
|
||||
<item>Remove</item>
|
||||
<item>Invidious</item>
|
||||
<item>Youtube</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_invidious_head2"
|
||||
android:key="@string/invidious_category_player_parameters"
|
||||
app:iconSpaceReserved="false">
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
|
@ -103,5 +104,45 @@
|
|||
app:summary="@string/invidious_quality_mode_indication"
|
||||
app:title="@string/invidious_quality_mode_title" />
|
||||
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/invidious_enable"
|
||||
android:entryValues="@array/invidious_loop_values"
|
||||
app:iconSpaceReserved="false"
|
||||
app:key="@string/invidious_loop_mode"
|
||||
app:summary="@string/invidious_loop_mode_indication"
|
||||
app:title="@string/invidious_loop_mode_title" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/invidious_volume"
|
||||
android:entryValues="@array/invidious_volume_values"
|
||||
app:iconSpaceReserved="false"
|
||||
app:key="@string/invidious_volume_mode"
|
||||
app:summary="@string/invidious_volume_mode_indication"
|
||||
app:title="@string/invidious_volume_mode_title" />
|
||||
|
||||
<SeekBarPreference
|
||||
android:defaultValue="60"
|
||||
app:showSeekBarValue="true"
|
||||
app:iconSpaceReserved="false"
|
||||
android:key="@string/invidious_volume_value"
|
||||
android:title="@string/invidious_volume_mode_value"
|
||||
app:summary="@string/invidious_volume_mode_value_indication"
|
||||
android:max="100" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_invidious_head3"
|
||||
app:iconSpaceReserved="false">
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/invidious_player_style"
|
||||
android:entryValues="@array/invidious_player_style_values"
|
||||
app:iconSpaceReserved="false"
|
||||
app:key="@string/invidious_player_style_mode"
|
||||
app:summary="@string/invidious_player_style_mode_indication"
|
||||
app:title="@string/invidious_player_style_mode_title" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
Loading…
Reference in New Issue