package app.fedilab.fedilabtube.fragment; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import androidx.fragment.app.FragmentActivity; import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceScreen; import java.util.Arrays; import java.util.List; import app.fedilab.fedilabtube.R; import app.fedilab.fedilabtube.helper.Helper; import es.dmoral.toasty.Toasty; /* Copyright 2020 Thomas Schneider * * This file is a part of TubeLab * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of the * License, or (at your option) any later version. * * TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with TubeLab; if not, * see . */ public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.main_preferences); createPref(); } @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.set_video_mode_choice)) == 0) { ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice)); if (set_video_mode_choice != null && getActivity() != null) { SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); switch (set_video_mode_choice.getValue()) { case "0": editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_NORMAL); break; case "1": editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_STREAMING); break; case "2": editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_WEBVIEW); break; } editor.apply(); } } } private void createPref() { getPreferenceScreen().removeAll(); addPreferencesFromResource(R.xml.main_preferences); PreferenceScreen preferenceScreen = getPreferenceScreen(); FragmentActivity context = getActivity(); assert context != null; if (preferenceScreen == null) { Toasty.error(getActivity(), getString(R.string.toast_error), Toasty.LENGTH_SHORT).show(); return; } //****** Video mode ******* ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice)); List array = Arrays.asList(getResources().getStringArray(R.array.settings_video_mode)); CharSequence[] entries = array.toArray(new CharSequence[0]); CharSequence[] entryValues = new CharSequence[3]; final SharedPreferences sharedpref = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); int video_mode = sharedpref.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_NORMAL); entryValues[0] = String.valueOf(Helper.VIDEO_MODE_NORMAL); entryValues[1] = String.valueOf(Helper.VIDEO_MODE_STREAMING); entryValues[2] = String.valueOf(Helper.VIDEO_MODE_WEBVIEW); if (set_video_mode_choice != null) { set_video_mode_choice.setEntries(entries); set_video_mode_choice.setEntryValues(entryValues); set_video_mode_choice.setValueIndex(video_mode); } } }