mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-04-30 14:44:30 +02:00
fix(YouTube - Change form factor): No user dialog shown when changing settings
This commit is contained in:
parent
bf9ba0b1ef
commit
f0b1155d20
@ -65,6 +65,7 @@ import app.revanced.extension.shared.settings.EnumSetting;
|
|||||||
import app.revanced.extension.shared.settings.Setting;
|
import app.revanced.extension.shared.settings.Setting;
|
||||||
import app.revanced.extension.shared.utils.Logger;
|
import app.revanced.extension.shared.utils.Logger;
|
||||||
import app.revanced.extension.shared.utils.ResourceUtils;
|
import app.revanced.extension.shared.utils.ResourceUtils;
|
||||||
|
import app.revanced.extension.shared.utils.StringRef;
|
||||||
import app.revanced.extension.shared.utils.Utils;
|
import app.revanced.extension.shared.utils.Utils;
|
||||||
import app.revanced.extension.youtube.patches.video.CustomPlaybackSpeedPatch;
|
import app.revanced.extension.youtube.patches.video.CustomPlaybackSpeedPatch;
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
@ -141,11 +142,8 @@ public class ReVancedPreferenceFragment extends PreferenceFragment {
|
|||||||
if (!settingImportInProgress && !showingUserDialogMessage) {
|
if (!settingImportInProgress && !showingUserDialogMessage) {
|
||||||
final Context context = getActivity();
|
final Context context = getActivity();
|
||||||
|
|
||||||
if (setting.userDialogMessage != null &&
|
if (setting.userDialogMessage != null && !prefIsSetToDefault(mPreference, setting)) {
|
||||||
mPreference instanceof SwitchPreference switchPreference &&
|
showSettingUserDialogConfirmation(context, mPreference, setting);
|
||||||
setting.defaultValue instanceof Boolean defaultValue &&
|
|
||||||
switchPreference.isChecked() != defaultValue) {
|
|
||||||
showSettingUserDialogConfirmation(context, switchPreference, (BooleanSetting) setting);
|
|
||||||
} else if (setting.rebootApp) {
|
} else if (setting.rebootApp) {
|
||||||
showRestartDialog(context);
|
showRestartDialog(context);
|
||||||
}
|
}
|
||||||
@ -155,26 +153,57 @@ public class ReVancedPreferenceFragment extends PreferenceFragment {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private void showSettingUserDialogConfirmation(Context context, SwitchPreference switchPreference, BooleanSetting setting) {
|
/**
|
||||||
|
* @return If the preference is currently set to the default value of the Setting.
|
||||||
|
*/
|
||||||
|
private boolean prefIsSetToDefault(Preference pref, Setting<?> setting) {
|
||||||
|
Object defaultValue = setting.defaultValue;
|
||||||
|
if (pref instanceof SwitchPreference switchPref) {
|
||||||
|
return switchPref.isChecked() == (Boolean) defaultValue;
|
||||||
|
}
|
||||||
|
String defaultValueString = defaultValue.toString();
|
||||||
|
if (pref instanceof EditTextPreference editPreference) {
|
||||||
|
return editPreference.getText().equals(defaultValueString);
|
||||||
|
}
|
||||||
|
if (pref instanceof ListPreference listPref) {
|
||||||
|
return listPref.getValue().equals(defaultValueString);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IllegalStateException("Must override method to handle "
|
||||||
|
+ "preference type: " + pref.getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showSettingUserDialogConfirmation(Context context, Preference pref, Setting<?> setting) {
|
||||||
Utils.verifyOnMainThread();
|
Utils.verifyOnMainThread();
|
||||||
|
|
||||||
|
final StringRef userDialogMessage = setting.userDialogMessage;
|
||||||
|
if (context != null && userDialogMessage != null) {
|
||||||
showingUserDialogMessage = true;
|
showingUserDialogMessage = true;
|
||||||
assert setting.userDialogMessage != null;
|
|
||||||
new AlertDialog.Builder(context)
|
new AlertDialog.Builder(context)
|
||||||
.setTitle(str("revanced_extended_confirm_user_dialog_title"))
|
.setTitle(str("revanced_extended_confirm_user_dialog_title"))
|
||||||
.setMessage(setting.userDialogMessage.toString())
|
.setMessage(userDialogMessage.toString())
|
||||||
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
|
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
|
||||||
if (setting.rebootApp) {
|
if (setting.rebootApp) {
|
||||||
showRestartDialog(context);
|
showRestartDialog(context);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, (dialog, id) -> {
|
.setNegativeButton(android.R.string.cancel, (dialog, id) -> {
|
||||||
switchPreference.setChecked(setting.defaultValue); // Recursive call that resets the Setting value.
|
// Restore whatever the setting was before the change.
|
||||||
|
if (setting instanceof BooleanSetting booleanSetting &&
|
||||||
|
pref instanceof SwitchPreference switchPreference) {
|
||||||
|
switchPreference.setChecked(booleanSetting.defaultValue);
|
||||||
|
} else if (setting instanceof EnumSetting<?> enumSetting &&
|
||||||
|
pref instanceof ListPreference listPreference) {
|
||||||
|
listPreference.setValue(enumSetting.defaultValue.toString());
|
||||||
|
updateListPreferenceSummary(listPreference, setting);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.setOnDismissListener(dialog -> showingUserDialogMessage = false)
|
.setOnDismissListener(dialog -> showingUserDialogMessage = false)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static PreferenceManager mPreferenceManager;
|
static PreferenceManager mPreferenceManager;
|
||||||
private SharedPreferences mSharedPreferences;
|
private SharedPreferences mSharedPreferences;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user