diff --git a/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java b/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java index 5c2503d..2f52941 100644 --- a/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java +++ b/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java @@ -5,7 +5,6 @@ import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; @@ -16,7 +15,6 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.text.InputType; -import android.widget.EditText; import android.widget.Toast; import java.text.DecimalFormat; @@ -26,7 +24,6 @@ import pl.jakubweg.requests.Requester; import static pl.jakubweg.SponsorBlockSettings.DefaultBehaviour; import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_ADJUST_NEW_SEGMENT_STEP; -import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_CATEGORY_COLOR_SUFFIX; import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_COUNT_SKIPS; import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_NEW_SEGMENT_ENABLED; import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_SHOW_TIME_WITHOUT_SEGMENTS; @@ -41,7 +38,6 @@ import static pl.jakubweg.SponsorBlockSettings.setSeenGuidelines; import static pl.jakubweg.SponsorBlockSettings.showTimeWithoutSegments; import static pl.jakubweg.SponsorBlockSettings.showToastWhenSkippedAutomatically; import static pl.jakubweg.SponsorBlockSettings.uuid; -import static pl.jakubweg.SponsorBlockUtils.formatColorString; import static pl.jakubweg.StringRef.str; @SuppressWarnings({"unused", "deprecation"}) // injected @@ -157,7 +153,9 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment implement entryValues[i] = behaviour.key; } - for (SponsorBlockSettings.SegmentInfo segmentInfo : SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted()) { + SponsorBlockSettings.SegmentInfo[] categories = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted(); + + for (SponsorBlockSettings.SegmentInfo segmentInfo : categories) { ListPreference preference = new ListPreference(context); preference.setTitle(segmentInfo.getTitleWithDot()); preference.setSummary(segmentInfo.description.toString()); @@ -166,45 +164,26 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment implement preference.setEntries(entries); preference.setEntryValues(entryValues); - String key = segmentInfo.key + PREFERENCES_KEY_CATEGORY_COLOR_SUFFIX; - Preference colorPreference = new Preference(context); - colorPreference.setTitle(str("color_change")); - - colorPreference.setOnPreferenceClickListener(preference1 -> { - 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"), (dialog, which) -> { - 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"), (dialog, which) -> { - int defaultColor = segmentInfo.defaultColor; - segmentInfo.setColor(defaultColor); - Toast.makeText(applicationContext, str("color_reset"), Toast.LENGTH_SHORT).show(); - preferences.edit().putString(key, formatColorString(defaultColor)).apply(); - }) - .show(); - return true; - }); - preferencesToDisableWhenSBDisabled.add(colorPreference); - category.addPreference(preference); - category.addPreference(colorPreference); } + + Preference colorPreference = new Preference(context); + screen.addPreference(colorPreference); + colorPreference.setTitle(str("color_change")); + + 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); } private void addStatsCategory(Context context, PreferenceScreen screen) { diff --git a/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java b/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java index af3dc1b..78dd17a 100644 --- a/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java +++ b/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java @@ -5,11 +5,14 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Color; import android.net.Uri; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.text.Html; +import android.text.InputType; import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -40,6 +43,7 @@ import static pl.jakubweg.PlayerController.getLastKnownVideoTime; import static pl.jakubweg.PlayerController.sponsorSegmentsOfCurrentVideo; import static pl.jakubweg.SponsorBlockPreferenceFragment.FORMATTER; import static pl.jakubweg.SponsorBlockPreferenceFragment.SAVED_TEMPLATE; +import static pl.jakubweg.SponsorBlockSettings.PREFERENCES_KEY_CATEGORY_COLOR_SUFFIX; import static pl.jakubweg.SponsorBlockSettings.isSponsorBlockEnabled; import static pl.jakubweg.SponsorBlockSettings.showTimeWithoutSegments; import static pl.jakubweg.SponsorBlockSettings.skippedSegments; @@ -219,6 +223,40 @@ public abstract class SponsorBlockUtils { }) .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 = () -> { messageToToast = null; final String uuid = SponsorBlockSettings.uuid; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7b5ec0b..e1ae50d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -183,12 +183,13 @@ Show a skip button Don\'t do anything - Change color + Change colors + Choose the category Color changed Color reset Invalid hex code - Reset Change + Reset Stats Loading..