1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-06-30 00:53:19 +00:00
NewPipe/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java

84 lines
3.4 KiB
Java
Raw Normal View History

package org.schabi.newpipe.settings;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.Toast;
2020-12-15 06:21:26 +00:00
import androidx.core.app.ActivityCompat;
2019-10-04 12:59:08 +00:00
import androidx.preference.Preference;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.Constants;
2021-03-26 14:12:20 +00:00
import org.schabi.newpipe.util.ThemeHelper;
public class AppearanceSettingsFragment extends BasePreferenceFragment {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
addPreferencesFromResourceRegistry();
2020-08-16 08:24:58 +00:00
final String themeKey = getString(R.string.theme_key);
// the key of the active theme when settings were opened (or recreated after theme change)
final String startThemeKey = defaultPreferences
.getString(themeKey, getString(R.string.default_theme_value));
final String autoDeviceThemeKey = getString(R.string.auto_device_theme_key);
findPreference(themeKey).setOnPreferenceChangeListener((preference, newValue) -> {
if (newValue.toString().equals(autoDeviceThemeKey)) {
Toast.makeText(getContext(), getString(R.string.select_night_theme_toast),
Toast.LENGTH_LONG).show();
}
applyThemeChange(startThemeKey, themeKey, newValue);
return false;
});
final String nightThemeKey = getString(R.string.night_theme_key);
if (startThemeKey.equals(autoDeviceThemeKey)) {
final String startNightThemeKey = defaultPreferences
.getString(nightThemeKey, getString(R.string.default_night_theme_value));
findPreference(nightThemeKey).setOnPreferenceChangeListener((preference, newValue) -> {
applyThemeChange(startNightThemeKey, nightThemeKey, newValue);
return false;
});
} else {
// disable the night theme selection
final Preference preference = findPreference(nightThemeKey);
if (preference != null) {
preference.setEnabled(false);
2022-12-05 20:21:46 +00:00
preference.setSummary(getString(R.string.night_theme_available,
getString(R.string.auto_device_theme_title)));
}
}
}
@Override
public boolean onPreferenceTreeClick(final Preference preference) {
2022-03-19 21:12:58 +00:00
if (getString(R.string.caption_settings_key).equals(preference.getKey())) {
try {
startActivity(new Intent(Settings.ACTION_CAPTIONING_SETTINGS));
2020-08-16 08:24:58 +00:00
} catch (final ActivityNotFoundException e) {
Toast.makeText(getActivity(), R.string.general_error, Toast.LENGTH_SHORT).show();
}
}
return super.onPreferenceTreeClick(preference);
}
private void applyThemeChange(final String beginningThemeKey,
final String themeKey,
final Object newValue) {
defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply();
defaultPreferences.edit().putString(themeKey, newValue.toString()).apply();
2022-07-06 21:46:20 +00:00
ThemeHelper.setDayNightMode(requireContext(), newValue.toString());
2021-03-26 14:12:20 +00:00
if (!newValue.equals(beginningThemeKey) && getActivity() != null) {
// if it's not the current theme
ActivityCompat.recreate(getActivity());
}
}
}