mirror of
https://github.com/revanced/revanced-integrations.git
synced 2025-05-02 23:54:35 +02:00
replace color changing dialog with a custom preference
thanks @X1nto
This commit is contained in:
parent
c36ab42920
commit
92f5c742f0
@ -28,7 +28,6 @@ import android.content.SharedPreferences;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
import android.preference.ListPreference;
|
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
@ -41,6 +40,7 @@ import java.text.DecimalFormat;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import fi.vanced.libraries.youtube.whitelisting.WhitelistType;
|
import fi.vanced.libraries.youtube.whitelisting.WhitelistType;
|
||||||
|
import pl.jakubweg.objects.EditTextListPreference;
|
||||||
import pl.jakubweg.requests.SBRequester;
|
import pl.jakubweg.requests.SBRequester;
|
||||||
|
|
||||||
@SuppressWarnings({"unused", "deprecation"}) // injected
|
@SuppressWarnings({"unused", "deprecation"}) // injected
|
||||||
@ -159,7 +159,7 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment implement
|
|||||||
SponsorBlockSettings.SegmentInfo[] categories = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted();
|
SponsorBlockSettings.SegmentInfo[] categories = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted();
|
||||||
|
|
||||||
for (SponsorBlockSettings.SegmentInfo segmentInfo : categories) {
|
for (SponsorBlockSettings.SegmentInfo segmentInfo : categories) {
|
||||||
ListPreference preference = new ListPreference(context);
|
EditTextListPreference preference = new EditTextListPreference(context);
|
||||||
preference.setTitle(segmentInfo.getTitleWithDot());
|
preference.setTitle(segmentInfo.getTitleWithDot());
|
||||||
preference.setSummary(segmentInfo.description.toString());
|
preference.setSummary(segmentInfo.description.toString());
|
||||||
preference.setKey(segmentInfo.key);
|
preference.setKey(segmentInfo.key);
|
||||||
@ -170,22 +170,10 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment implement
|
|||||||
category.addPreference(preference);
|
category.addPreference(preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
Preference colorPreference = new Preference(context);
|
Preference colorPreference = new Preference(context); // TODO remove this after the next major update
|
||||||
screen.addPreference(colorPreference);
|
screen.addPreference(colorPreference);
|
||||||
colorPreference.setTitle(str("color_change"));
|
colorPreference.setTitle(str("color_change"));
|
||||||
|
colorPreference.setSummary(str("color_change_sum"));
|
||||||
colorPreference.setOnPreferenceClickListener(preference1 -> {
|
|
||||||
CharSequence[] items = new CharSequence[categories.length];
|
|
||||||
for (int i = 0; i < items.length; i++) {
|
|
||||||
items[i] = categories[i].getTitleWithDot();
|
|
||||||
}
|
|
||||||
|
|
||||||
new AlertDialog.Builder(context)
|
|
||||||
.setTitle(str("color_choose_category"))
|
|
||||||
.setItems(items, SponsorBlockUtils.categoryColorChangeClickListener)
|
|
||||||
.show();
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
preferencesToDisableWhenSBDisabled.add(colorPreference);
|
preferencesToDisableWhenSBDisabled.add(colorPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,13 +34,11 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Color;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.InputType;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -237,40 +235,6 @@ public abstract class SponsorBlockUtils {
|
|||||||
})
|
})
|
||||||
.show();
|
.show();
|
||||||
};
|
};
|
||||||
public static final DialogInterface.OnClickListener categoryColorChangeClickListener = (dialog, which) -> {
|
|
||||||
SponsorBlockSettings.SegmentInfo segmentInfo = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted()[which];
|
|
||||||
String key = segmentInfo.key + PREFERENCES_KEY_CATEGORY_COLOR_SUFFIX;
|
|
||||||
|
|
||||||
Context context = ((AlertDialog) dialog).getContext();
|
|
||||||
EditText editText = new EditText(context);
|
|
||||||
editText.setInputType(InputType.TYPE_CLASS_TEXT);
|
|
||||||
editText.setText(formatColorString(segmentInfo.color));
|
|
||||||
|
|
||||||
Context applicationContext = context.getApplicationContext();
|
|
||||||
SharedPreferences preferences = SponsorBlockSettings.getPreferences(context);
|
|
||||||
|
|
||||||
new AlertDialog.Builder(context)
|
|
||||||
.setView(editText)
|
|
||||||
.setPositiveButton(str("change"), (dialog1, which1) -> {
|
|
||||||
try {
|
|
||||||
int color = Color.parseColor(editText.getText().toString());
|
|
||||||
segmentInfo.setColor(color);
|
|
||||||
Toast.makeText(applicationContext, str("color_changed"), Toast.LENGTH_SHORT).show();
|
|
||||||
preferences.edit().putString(key, formatColorString(color)).apply();
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
Toast.makeText(applicationContext, str("color_invalid"), Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.setNeutralButton(str("reset"), (dialog1, which1) -> {
|
|
||||||
int defaultColor = segmentInfo.defaultColor;
|
|
||||||
segmentInfo.setColor(defaultColor);
|
|
||||||
Toast.makeText(applicationContext, str("color_reset"), Toast.LENGTH_SHORT).show();
|
|
||||||
preferences.edit().putString(key, formatColorString(defaultColor)).apply();
|
|
||||||
})
|
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
|
||||||
.show();
|
|
||||||
};
|
|
||||||
private static final Runnable submitRunnable = () -> {
|
private static final Runnable submitRunnable = () -> {
|
||||||
messageToToast = null;
|
messageToToast = null;
|
||||||
final String uuid = SponsorBlockSettings.uuid;
|
final String uuid = SponsorBlockSettings.uuid;
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
package pl.jakubweg.objects;
|
||||||
|
|
||||||
|
import static pl.jakubweg.SponsorBlockUtils.formatColorString;
|
||||||
|
import static pl.jakubweg.StringRef.str;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.preference.ListPreference;
|
||||||
|
import android.text.InputType;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import pl.jakubweg.SponsorBlockSettings;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public class EditTextListPreference extends ListPreference {
|
||||||
|
|
||||||
|
private EditText mEditText;
|
||||||
|
private int mClickedDialogEntryIndex;
|
||||||
|
|
||||||
|
public EditTextListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||||
|
super(context, attrs, defStyleAttr, defStyleRes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EditTextListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||||
|
super(context, attrs, defStyleAttr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EditTextListPreference(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EditTextListPreference(Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
|
||||||
|
SponsorBlockSettings.SegmentInfo category = getCategoryBySelf();
|
||||||
|
|
||||||
|
mEditText = new EditText(builder.getContext());
|
||||||
|
mEditText.setInputType(InputType.TYPE_CLASS_TEXT);
|
||||||
|
mEditText.setText(formatColorString(category.color));
|
||||||
|
builder.setView(mEditText);
|
||||||
|
|
||||||
|
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||||
|
EditTextListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
|
||||||
|
});
|
||||||
|
builder.setNeutralButton(str("reset"), (dialog, which) -> {
|
||||||
|
//EditTextListPreference.this.onClick(dialog, DialogInterface.BUTTON_NEUTRAL);
|
||||||
|
int defaultColor = category.defaultColor;
|
||||||
|
category.setColor(defaultColor);
|
||||||
|
Toast.makeText(getContext().getApplicationContext(), str("color_reset"), Toast.LENGTH_SHORT).show();
|
||||||
|
getSharedPreferences().edit().putString(getColorPreferenceKey(), formatColorString(defaultColor)).apply();
|
||||||
|
});
|
||||||
|
builder.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
|
||||||
|
mClickedDialogEntryIndex = findIndexOfValue(getValue());
|
||||||
|
builder.setSingleChoiceItems(getEntries(), mClickedDialogEntryIndex, (dialog, which) -> mClickedDialogEntryIndex = which);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDialogClosed(boolean positiveResult) {
|
||||||
|
if (positiveResult && mClickedDialogEntryIndex >= 0 && getEntryValues() != null) {
|
||||||
|
String value = getEntryValues()[mClickedDialogEntryIndex].toString();
|
||||||
|
if (callChangeListener(value)) {
|
||||||
|
setValue(value);
|
||||||
|
}
|
||||||
|
String colorString = mEditText.getText().toString();
|
||||||
|
SponsorBlockSettings.SegmentInfo category = getCategoryBySelf();
|
||||||
|
if (colorString.equals(formatColorString(category.color))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Context applicationContext = getContext().getApplicationContext();
|
||||||
|
try {
|
||||||
|
int color = Color.parseColor(colorString);
|
||||||
|
category.setColor(color);
|
||||||
|
Toast.makeText(applicationContext, str("color_changed"), Toast.LENGTH_SHORT).show();
|
||||||
|
getSharedPreferences().edit().putString(getColorPreferenceKey(), formatColorString(color)).apply();
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
Toast.makeText(applicationContext, str("color_invalid"), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SponsorBlockSettings.SegmentInfo getCategoryBySelf() {
|
||||||
|
return SponsorBlockSettings.SegmentInfo.byCategoryKey(getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getColorPreferenceKey() {
|
||||||
|
return getKey() + SponsorBlockSettings.PREFERENCES_KEY_CATEGORY_COLOR_SUFFIX;
|
||||||
|
}
|
||||||
|
}
|
@ -330,7 +330,8 @@
|
|||||||
<string name="stats_self_saved">You\'ve skipped <b>%s</b> segments.</string>
|
<string name="stats_self_saved">You\'ve skipped <b>%s</b> segments.</string>
|
||||||
<string name="stats_self_saved_sum">That\'s <b>%s</b>.</string>
|
<string name="stats_self_saved_sum">That\'s <b>%s</b>.</string>
|
||||||
<string name="minutes">minutes</string>
|
<string name="minutes">minutes</string>
|
||||||
<string name="color_change">Change colors</string>
|
<string name="color_change">Are you looking for changing colors?</string>
|
||||||
|
<string name="color_change_sum">You can now change a category\'s color by clicking on it above.</string>
|
||||||
<string name="color_choose_category">Choose the category</string>
|
<string name="color_choose_category">Choose the category</string>
|
||||||
<string name="color_changed">Color changed</string>
|
<string name="color_changed">Color changed</string>
|
||||||
<string name="color_reset">Color reset</string>
|
<string name="color_reset">Color reset</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user