From 3e206967b70d1b94d899768799005a10224013d1 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 31 Jul 2022 12:15:16 +0200 Subject: [PATCH] feat: `settings` patch --- app/build.gradle | 2 +- .../patches/VideoQualityPatch.java | 6 +- .../integrations/settings/SettingsEnum.java | 152 ++++++++--------- .../settingsmenu/ReVancedSettingActivity.java | 157 ++++++++---------- .../ReVancedSettingsFragment.java | 41 +++-- .../SponsorBlockSettingsFragment.java | 18 +- .../integrations/sponsorblock/StringRef.java | 7 + .../sponsorblock/SwipeHelper.java | 1 - .../player/ui/SponsorBlockView.java | 7 +- .../integrations/utils/SharedPrefHelper.java | 21 +-- .../integrations/utils/ThemeHelper.java | 1 - .../social/licenses/LicenseActivity.java | 7 + 12 files changed, 207 insertions(+), 213 deletions(-) create mode 100644 app/src/main/java/com/google/android/libraries/social/licenses/LicenseActivity.java diff --git a/app/build.gradle b/app/build.gradle index 40ad4b22..db64c9b6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { defaultConfig { applicationId "app.revanced.integrations" - minSdkVersion 23 + minSdkVersion 24 targetSdkVersion 32 versionCode 1 versionName "1.0" diff --git a/app/src/main/java/app/revanced/integrations/patches/VideoQualityPatch.java b/app/src/main/java/app/revanced/integrations/patches/VideoQualityPatch.java index c42ce119..a694a56a 100644 --- a/app/src/main/java/app/revanced/integrations/patches/VideoQualityPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/VideoQualityPatch.java @@ -15,7 +15,7 @@ import app.revanced.integrations.utils.ReVancedUtils; import app.revanced.integrations.utils.SharedPrefHelper; public class VideoQualityPatch { - public static final int[] videoResolutions = {0, 144, 240, 360, 480, 720, 1080, 1440, 2160, 4320}; + public static int selectedQuality1 = -2; private static Boolean newVideo = false; private static Boolean userChangedQuality = false; @@ -24,7 +24,7 @@ public class VideoQualityPatch { Context context = ReVancedUtils.getContext(); if (isConnectedWifi(context)) { try { - SharedPrefHelper.saveInt(context, SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "wifi_quality", defaultQuality); + SharedPrefHelper.saveString(context, SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "wifi_quality", defaultQuality + ""); } catch (Exception ex) { LogHelper.printException(VideoQualityPatch.class, "Failed to change default WI-FI quality:" + ex); Toast.makeText(context, "Failed to change default WI-FI quality:", Toast.LENGTH_SHORT).show(); @@ -33,7 +33,7 @@ public class VideoQualityPatch { Toast.makeText(context, "Changing default Wi-Fi quality to: " + defaultQuality, Toast.LENGTH_SHORT).show(); } else if (isConnectedMobile(context)) { try { - SharedPrefHelper.saveInt(context, SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "mobile_quality", defaultQuality); + SharedPrefHelper.saveString(context, SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "mobile_quality", defaultQuality + ""); } catch (Exception ex) { LogHelper.debug(VideoQualityPatch.class, "Failed to change default mobile data quality" + ex); Toast.makeText(context, "Failed to change default mobile data quality", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java index 39bd18c3..9741aa6b 100644 --- a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java @@ -13,7 +13,7 @@ import app.revanced.integrations.utils.SharedPrefHelper; public enum SettingsEnum { //Codec Override - CODEC_OVERRIDE("revanced_override_codec_enabled", true, ReturnType.BOOLEAN), + CODEC_OVERRIDE("revanced_override_codec_enabled", false, ReturnType.BOOLEAN), //Video Settings OLD_STYLE_QUALITY_SETTINGS("revanced_use_old_style_quality_settings", true, ReturnType.BOOLEAN), @@ -24,37 +24,37 @@ public enum SettingsEnum { ENABLE_WHITELIST("revanced_whitelist_ads_enabled", false, ReturnType.BOOLEAN), //Ad settings - HOME_ADS_SHOWN("revanced_home_ads_enabled", false, ReturnType.BOOLEAN), - VIDEO_ADS_SHOWN("revanced_video_ads_enabled", false, ReturnType.BOOLEAN), - ADREMOVER_AD_REMOVAL("revanced_adremover_ad_removal", true, ReturnType.BOOLEAN), - ADREMOVER_MERCHANDISE_REMOVAL("revanced_adremover_merchandise", true, ReturnType.BOOLEAN), - ADREMOVER_COMMUNITY_POSTS_REMOVAL("revanced_adremover_community_posts_removal", true, ReturnType.BOOLEAN), - ADREMOVER_COMPACT_BANNER_REMOVAL("revanced_adremover_compact_banner_removal", true, ReturnType.BOOLEAN), - ADREMOVER_COMMENTS_REMOVAL("revanced_adremover_comments_removal", false, ReturnType.BOOLEAN), - ADREMOVER_MOVIE_REMOVAL("revanced_adremover_movie", true, ReturnType.BOOLEAN), - ADREMOVER_FEED_SURVEY_REMOVAL("revanced_adremover_feed_survey", true, ReturnType.BOOLEAN), - ADREMOVER_SHORTS_SHELF("revanced_adremover_shorts_shelf", true, ReturnType.BOOLEAN), - ADREMOVER_COMMUNITY_GUIDELINES("revanced_adremover_community_guidelines", true, ReturnType.BOOLEAN), - ADREMOVER_EMERGENCY_BOX_REMOVAL("revanced_adremover_emergency_box_removal", true, ReturnType.BOOLEAN), - ADREMOVER_INFO_PANEL_REMOVAL("revanced_adremover_info_panel", true, ReturnType.BOOLEAN), - ADREMOVER_MEDICAL_PANEL_REMOVAL("revanced_adremover_medical_panel", true, ReturnType.BOOLEAN), - ADREMOVER_PAID_CONTECT_REMOVAL("revanced_adremover_paid_content", true, ReturnType.BOOLEAN), - ADREMOVER_SUGGESTED_FOR_YOU_REMOVAL("revanced_adremover_suggested", true, ReturnType.BOOLEAN), - ADREMOVER_HIDE_SUGGESTIONS("revanced_adremover_hide_suggestions", true, ReturnType.BOOLEAN), - ADREMOVER_HIDE_LATEST_POSTS("revanced_adremover_hide_latest_posts", true, ReturnType.BOOLEAN), - ADREMOVER_HIDE_CHANNEL_GUIDELINES("revanced_adremover_hide_channel_guidelines", true, ReturnType.BOOLEAN), + HOME_ADS_SHOWN("revanced_home_ads_enabled", false, ReturnType.BOOLEAN, true), + VIDEO_ADS_SHOWN("revanced_video_ads_enabled", false, ReturnType.BOOLEAN, true), + ADREMOVER_AD_REMOVAL("revanced_adremover_ad_removal", true, ReturnType.BOOLEAN, true), + ADREMOVER_MERCHANDISE_REMOVAL("revanced_adremover_merchandise", true, ReturnType.BOOLEAN, true), + ADREMOVER_COMMUNITY_POSTS_REMOVAL("revanced_adremover_community_posts_removal", true, ReturnType.BOOLEAN, true), + ADREMOVER_COMPACT_BANNER_REMOVAL("revanced_adremover_compact_banner_removal", true, ReturnType.BOOLEAN, true), + ADREMOVER_COMMENTS_REMOVAL("revanced_adremover_comments_removal", false, ReturnType.BOOLEAN, true), + ADREMOVER_MOVIE_REMOVAL("revanced_adremover_movie", true, ReturnType.BOOLEAN, true), + ADREMOVER_FEED_SURVEY_REMOVAL("revanced_adremover_feed_survey", true, ReturnType.BOOLEAN, true), + ADREMOVER_SHORTS_SHELF("revanced_adremover_shorts_shelf", true, ReturnType.BOOLEAN, true), + ADREMOVER_COMMUNITY_GUIDELINES("revanced_adremover_community_guidelines", true, ReturnType.BOOLEAN, true), + ADREMOVER_EMERGENCY_BOX_REMOVAL("revanced_adremover_emergency_box_removal", true, ReturnType.BOOLEAN, true), + ADREMOVER_INFO_PANEL_REMOVAL("revanced_adremover_info_panel", true, ReturnType.BOOLEAN, true), + ADREMOVER_MEDICAL_PANEL_REMOVAL("revanced_adremover_medical_panel", true, ReturnType.BOOLEAN, true), + ADREMOVER_PAID_CONTECT_REMOVAL("revanced_adremover_paid_content", true, ReturnType.BOOLEAN, true), + ADREMOVER_SUGGESTED_FOR_YOU_REMOVAL("revanced_adremover_suggested", true, ReturnType.BOOLEAN, true), + ADREMOVER_HIDE_SUGGESTIONS("revanced_adremover_hide_suggestions", true, ReturnType.BOOLEAN, true), + ADREMOVER_HIDE_LATEST_POSTS("revanced_adremover_hide_latest_posts", true, ReturnType.BOOLEAN, true), + ADREMOVER_HIDE_CHANNEL_GUIDELINES("revanced_adremover_hide_channel_guidelines", true, ReturnType.BOOLEAN, true), //Layout settings - REEL_BUTTON_SHOWN("revanced_reel_button_enabled", false, ReturnType.BOOLEAN), + REEL_BUTTON_SHOWN("revanced_reel_button_enabled", false, ReturnType.BOOLEAN, true), INFO_CARDS_SHOWN("revanced_info_cards_enabled", false, ReturnType.BOOLEAN), BRANDING_SHOWN("revanced_branding_watermark_enabled", false, ReturnType.BOOLEAN), - CAST_BUTTON_SHOWN("revanced_cast_button_enabled", false, ReturnType.BOOLEAN), - AUTOPLAY_BUTTON_SHOWN("revanced_autoplay_button_enabled", false, ReturnType.BOOLEAN), + CAST_BUTTON_SHOWN("revanced_cast_button_enabled", false, ReturnType.BOOLEAN, true), + AUTOPLAY_BUTTON_SHOWN("revanced_autoplay_button_enabled", false, ReturnType.BOOLEAN, true), //ToDo: Not used atm, Patch missing USE_TABLET_MINIPLAYER("revanced_tablet_miniplayer", false, ReturnType.BOOLEAN), - CREATE_BUTTON_SHOWN("revanced_create_button_enabled", false, ReturnType.BOOLEAN), - USE_NEW_ACTIONBAR("revanced_new_actionbar", true, ReturnType.BOOLEAN), - SHORTS_BUTTON_SHOWN("revanced_shorts_button_enabled", false, ReturnType.BOOLEAN), + CREATE_BUTTON_SHOWN("revanced_create_button_enabled", false, ReturnType.BOOLEAN, true), + USE_NEW_ACTIONBAR("revanced_new_actionbar", false, ReturnType.BOOLEAN, true), + SHORTS_BUTTON_SHOWN("revanced_shorts_button_enabled", false, ReturnType.BOOLEAN, true), FULLSCREEN_PANELS_SHOWN("revanced_fullscreen_panels_enabled", false, ReturnType.BOOLEAN), //ToDo: Add to prefs //Misc. Settings @@ -81,7 +81,7 @@ public enum SettingsEnum { MAX_PLAYBACK_BUFFER_AFTER_REBUFFER("revanced_pref_buffer_for_playback_after_rebuffer_ms", 5000, ReturnType.INTEGER), //ReVanced General Settings - DEBUG("revanced_debug_enabled", false, ReturnType.BOOLEAN), + DEBUG("revanced_debug_enabled", false, ReturnType.BOOLEAN, true), USE_DARK_THEME("app_theme_dark", false, ReturnType.BOOLEAN), //RYD Settings @@ -92,7 +92,7 @@ public enum SettingsEnum { SB_ENABLED("sb-enabled", true, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.BOOLEAN), SB_SHOW_TOAST_WHEN_SKIP("show-toast", true, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.BOOLEAN), SB_COUNT_SKIPS("count-skips", true, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.BOOLEAN), - SB_UUID("uuid", null, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.STRING), + SB_UUID("uuid", "", SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.STRING), SB_ADJUST_NEW_SEGMENT_STEP("new-segment-step-accuracy", 150, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.INTEGER), SB_MIN_DURATION("sb-min-duration", 0F, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.FLOAT), SB_SEEN_GUIDELINES("sb-seen-gl", false, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, ReturnType.BOOLEAN), @@ -110,6 +110,7 @@ public enum SettingsEnum { private final Object defaultValue; private final SharedPrefHelper.SharedPrefNames sharedPref; private final ReturnType returnType; + private final boolean rebootApp; private Object value = null; @@ -118,6 +119,7 @@ public enum SettingsEnum { this.defaultValue = defaultValue; this.sharedPref = SharedPrefHelper.SharedPrefNames.YOUTUBE; this.returnType = returnType; + this.rebootApp = false; } SettingsEnum(String path, Object defaultValue, SharedPrefHelper.SharedPrefNames prefName, ReturnType returnType) { @@ -125,6 +127,15 @@ public enum SettingsEnum { this.defaultValue = defaultValue; this.sharedPref = prefName; this.returnType = returnType; + this.rebootApp = false; + } + + SettingsEnum(String path, Object defaultValue, ReturnType returnType, Boolean rebootApp) { + this.path = path; + this.defaultValue = defaultValue; + this.sharedPref = SharedPrefHelper.SharedPrefNames.YOUTUBE; + this.returnType = returnType; + this.rebootApp = rebootApp; } static { @@ -136,36 +147,40 @@ public enum SettingsEnum { if (context == null) { Log.e("revanced: SettingsEnum", "Context returned null! Setings NOT initialized"); } else { - for (SettingsEnum setting : values()) { - Object value = setting.getDefaultValue(); + try { + for (SettingsEnum setting : values()) { + Object value = setting.getDefaultValue(); - //LogHelper is not initialized here - Log.d("revanced: SettingsEnum", "Loading Setting: " + setting.name()); + //LogHelper is not initialized here + Log.d("revanced: SettingsEnum", "Loading Setting: " + setting.name()); - switch (setting.getReturnType()) { - case FLOAT: - value = SharedPrefHelper.getFloat(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, setting.getPath(), (float) setting.getDefaultValue()); - break; - case LONG: - value = SharedPrefHelper.getLong(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, setting.getPath(), (long) setting.getDefaultValue()); - break; - case BOOLEAN: - value = SharedPrefHelper.getBoolean(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, setting.getPath(), (boolean) setting.getDefaultValue()); - break; - case INTEGER: - value = SharedPrefHelper.getInt(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, setting.getPath(), (int) setting.getDefaultValue()); - break; - case STRING: - value = SharedPrefHelper.getString(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, setting.getPath(), (String) setting.getDefaultValue()); - break; - default: - LogHelper.printException(SettingsEnum.class, "Setting does not have a valid Type. Name is: " + setting.name()); - break; + switch (setting.getReturnType()) { + case FLOAT: + value = SharedPrefHelper.getFloat(context, setting.sharedPref, setting.getPath(), (float) setting.getDefaultValue()); + break; + case LONG: + value = SharedPrefHelper.getLong(context, setting.sharedPref, setting.getPath(), (long) setting.getDefaultValue()); + break; + case BOOLEAN: + value = SharedPrefHelper.getBoolean(context, setting.sharedPref, setting.getPath(), (boolean) setting.getDefaultValue()); + break; + case INTEGER: + value = SharedPrefHelper.getInt(context, setting.sharedPref, setting.getPath(), (int) setting.getDefaultValue()); + break; + case STRING: + value = SharedPrefHelper.getString(context, setting.sharedPref, setting.getPath(), (String) setting.getDefaultValue()); + break; + default: + LogHelper.printException(SettingsEnum.class, "Setting does not have a valid Type. Name is: " + setting.name()); + break; + } + setting.setValue(value); + + //LogHelper is not initialized here + Log.d("revanced: SettingsEnum", "Loaded Setting: " + setting.name() + " Value: " + value); } - setting.setValue(value); - - //LogHelper is not initialized here - Log.d("revanced: SettingsEnum", "Loaded Setting: " + setting.name() + " Value: " + value); + } catch (Throwable th) { + LogHelper.printException(SettingsEnum.class, "Error during load()!", th); } } } @@ -187,25 +202,10 @@ public enum SettingsEnum { public void saveValue(Object newValue) { Context context = ReVancedUtils.getContext(); if (context != null) { - switch (getReturnType()) { - case BOOLEAN: - SharedPrefHelper.saveBoolean(context, sharedPref, getPath(), (Boolean) newValue); - break; - case INTEGER: - SharedPrefHelper.saveInt(context, sharedPref, getPath(), (int) newValue); - break; - case STRING: - SharedPrefHelper.saveString(context, sharedPref, getPath(), (String) newValue); - break; - case LONG: - SharedPrefHelper.saveLong(context, sharedPref, getPath(), (Long) newValue); - break; - case FLOAT: - SharedPrefHelper.saveFloat(context, sharedPref, getPath(), (Float) newValue); - break; - default: - LogHelper.printException(SettingsEnum.class, "Setting does not have with a valid Type. Name is: " + name()); - break; + if (returnType == ReturnType.BOOLEAN) { + SharedPrefHelper.saveBoolean(context, sharedPref, path, (Boolean) newValue); + } else { + SharedPrefHelper.saveString(context, sharedPref, path, newValue + ""); } value = newValue; } else { @@ -245,4 +245,8 @@ public enum SettingsEnum { return returnType; } + public boolean shouldRebootOnChange() { + return rebootApp; + } + } diff --git a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java index 14ff52d3..31754d91 100644 --- a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java +++ b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java @@ -1,112 +1,91 @@ package app.revanced.integrations.settingsmenu; -import android.app.Activity; import android.content.Context; -import android.os.Bundle; - +import android.preference.PreferenceFragment; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; +import com.google.android.libraries.social.licenses.LicenseActivity; + import app.revanced.integrations.utils.LogHelper; import app.revanced.integrations.utils.ReVancedUtils; import app.revanced.integrations.utils.ThemeHelper; -/* loaded from: classes6.dex */ -public class ReVancedSettingActivity extends Activity { - private static Context context; - private boolean currentTheme; +public class ReVancedSettingActivity { - @Override // android.app.Activity - protected void onCreate(Bundle bundle) { - this.currentTheme = ThemeHelper.isDarkTheme(); - if (currentTheme) { - LogHelper.debug(ReVancedSettingActivity.class, "set Theme.YouTube.Settings.Dark"); - setTheme(getIdentifier("Theme.YouTube.Settings.Dark", "style")); - } else { - LogHelper.debug(ReVancedSettingActivity.class, "set Theme.YouTube.Settings"); - setTheme(getIdentifier("Theme.YouTube.Settings", "style")); - } - super.onCreate(bundle); - setContentView(getIdentifier("xsettings_with_toolbar", "layout")); - initImageButton(this.currentTheme); - String dataString = getIntent().getDataString(); - if (dataString.equalsIgnoreCase("sponsorblock_settings")) { - trySetTitle(getIdentifier("sb_settings", "string")); - getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new SponsorBlockSettingsFragment()).commit(); - } else if (dataString.equalsIgnoreCase("ryd_settings")) { - trySetTitle(getIdentifier("revanced_ryd_settings_title", "string")); - getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new ReturnYouTubeDislikeSettingsFragment()).commit(); - } else { - trySetTitle(getIdentifier("revanced_settings", "string")); - getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new ReVancedSettingsFragment()).commit(); - } - context = getApplicationContext(); + public static void setTheme(LicenseActivity base) { + final var whiteTheme = "Theme.YouTube.Settings"; + final var darkTheme = "Theme.YouTube.Settings.Dark"; + + final var theme = ThemeHelper.isDarkTheme() ? darkTheme : whiteTheme; + + LogHelper.debug(ReVancedSettingActivity.class, "Using theme: " + theme); + base.setTheme(getIdentifier(theme, "style")); } - public static ImageButton getImageButton(ViewGroup viewGroup) { - if (viewGroup == null) { - return null; - } - int childCount = viewGroup.getChildCount(); - for (int i = 0; i < childCount; i++) { - View childAt = viewGroup.getChildAt(i); - if (childAt instanceof ImageButton) { - return (ImageButton) childAt; - } - } - return null; - } + public static void initializeSettings(LicenseActivity base) { + base.setContentView(getIdentifier("xsettings_with_toolbar", "layout")); - public static TextView getTextView(ViewGroup viewGroup) { - if (viewGroup == null) { - return null; - } - int childCount = viewGroup.getChildCount(); - for (int i = 0; i < childCount; i++) { - View childAt = viewGroup.getChildAt(i); - if (childAt instanceof TextView) { - return (TextView) childAt; - } - } - return null; - } - - private static int getIdentifier(String str, String str2) { - Context appContext = ReVancedUtils.getContext(); - return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName()); - } - - private void trySetTitle(int i) { try { - getTextView((ViewGroup) findViewById(getIdentifier("toolbar", "id"))).setText(i); - } catch (Exception e) { - LogHelper.printException(ReVancedSettingActivity.class, "Couldn't set Toolbar title", e); - } - } - - private void trySetTitle(String str) { - try { - getTextView((ViewGroup) findViewById(getIdentifier("toolbar", "id"))).setText(str); - } catch (Exception e) { - LogHelper.printException(ReVancedSettingActivity.class, "Couldn't set Toolbar title", e); - } - } - - private void initImageButton(boolean z) { - try { - ImageButton imageButton = getImageButton((ViewGroup) findViewById(getIdentifier("toolbar", "id"))); - imageButton.setOnClickListener(new View.OnClickListener() { // from class: app.revanced.integrations.theme.ReVancedSettingActivity.1 - @Override // android.view.View.OnClickListener - public void onClick(View view) { - ReVancedSettingActivity.this.onBackPressed(); - } - }); - imageButton.setImageDrawable(getResources().getDrawable(getIdentifier(z ? "quantum_ic_arrow_back_white_24" : "quantum_ic_arrow_back_grey600_24", "drawable"), null)); + ImageButton imageButton = getImageButton(base.findViewById(getIdentifier("toolbar", "id"))); + imageButton.setOnClickListener(view -> base.onBackPressed()); + imageButton.setImageDrawable(base.getResources().getDrawable(getIdentifier(ThemeHelper.isDarkTheme() ? "quantum_ic_arrow_back_white_24" : "quantum_ic_arrow_back_grey600_24", "drawable"), null)); } catch (Exception e) { LogHelper.printException(ReVancedSettingActivity.class, "Couldn't set Toolbar click handler", e); } + + PreferenceFragment preferenceFragment; + String preferenceIdentifier; + + String dataString = base.getIntent().getDataString(); + if (dataString.equalsIgnoreCase("sponsorblock_settings")) { + preferenceIdentifier = "sb_settings"; + preferenceFragment = new SponsorBlockSettingsFragment(); + } else if (dataString.equalsIgnoreCase("ryd_settings")) { + preferenceIdentifier = "revanced_ryd_settings_title"; + preferenceFragment = new ReturnYouTubeDislikeSettingsFragment(); + } else { + preferenceIdentifier = "revanced_settings"; + preferenceFragment = new ReVancedSettingsFragment(); + } + + try { + var resourceIdentifier = getIdentifier(preferenceIdentifier, "string"); + getTextView(base.findViewById(getIdentifier("toolbar", "id"))).setText(resourceIdentifier); + } catch (Exception e) { + LogHelper.printException(ReVancedSettingActivity.class, "Couldn't set Toolbar title", e); + } + + base.getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), preferenceFragment).commit(); } + public static T getView(Class typeClass, ViewGroup viewGroup) { + if (viewGroup == null) { + return null; + } + int childCount = viewGroup.getChildCount(); + for (int i = 0; i < childCount; i++) { + View childAt = viewGroup.getChildAt(i); + if (childAt.getClass() == typeClass) { + return (T) childAt; + } + } + return null; + } + + public static ImageButton getImageButton(ViewGroup viewGroup) { + return getView(ImageButton.class, viewGroup); + } + + public static TextView getTextView(ViewGroup viewGroup) { + return getView(TextView.class, viewGroup); + } + + private static int getIdentifier(String name, String defType) { + Context appContext = ReVancedUtils.getContext(); + assert appContext != null; + return appContext.getResources().getIdentifier(name, defType, appContext.getPackageName()); + } } diff --git a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java index 615d96d0..932fb68a 100644 --- a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java +++ b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java @@ -20,6 +20,9 @@ import android.preference.SwitchPreference; import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application; +import java.util.ArrayList; +import java.util.List; + import app.revanced.integrations.settings.SettingsEnum; import app.revanced.integrations.utils.LogHelper; import app.revanced.integrations.utils.ReVancedUtils; @@ -30,7 +33,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment { public static Class homeActivityClass; - private PreferenceScreen[] screens; + private List screens; private boolean Registered = false; private boolean settingsInitialized = false; @@ -79,10 +82,14 @@ public class ReVancedSettingsFragment extends PreferenceFragment { } else if (pref instanceof ListPreference) { ListPreference listPref = (ListPreference) pref; if (setting == SettingsEnum.PREFERRED_VIDEO_SPEED) { - Float value = SettingsEnum.PREFERRED_VIDEO_SPEED.getFloat(); - listPref.setDefaultValue(value); - listPref.setSummary(videoSpeedEntries[listPref.findIndexOfValue(String.valueOf(value))]); - SettingsEnum.PREFERRED_VIDEO_SPEED.setValue(value); + try { + String value = sharedPreferences.getString(setting.getPath(), setting.getDefaultValue() + ""); + listPref.setDefaultValue(value); + listPref.setSummary(videoSpeedEntries[listPref.findIndexOfValue(String.valueOf(value))]); + SettingsEnum.PREFERRED_VIDEO_SPEED.saveValue(value); + } catch (Throwable th) { + LogHelper.printException(ReVancedSettingsFragment.class, "Error setting value of speed" + th); + } } else { LogHelper.printException(ReVancedSettingsFragment.class, "No valid setting found: " + setting.toString()); } @@ -97,7 +104,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment { LogHelper.printException(ReVancedSettingsFragment.class, "Setting cannot be handled! " + pref.toString()); } - if (ReVancedUtils.getContext() != null && settingsInitialized) { + if (ReVancedUtils.getContext() != null && settingsInitialized && setting.shouldRebootOnChange()) { rebootDialog(getActivity()); } } @@ -116,16 +123,18 @@ public class ReVancedSettingsFragment extends PreferenceFragment { this.settingsInitialized = sharedPreferences.getBoolean("revanced_initialized", false); sharedPreferences.registerOnSharedPreferenceChangeListener(this.listener); this.Registered = true; - this.screens[0] = (PreferenceScreen) getPreferenceScreen().findPreference("codec_override"); - this.screens[1] = (PreferenceScreen) getPreferenceScreen().findPreference("video_settings"); - this.screens[2] = (PreferenceScreen) getPreferenceScreen().findPreference("video_ad_settings"); - this.screens[3] = (PreferenceScreen) getPreferenceScreen().findPreference("ad_settings"); - this.screens[4] = (PreferenceScreen) getPreferenceScreen().findPreference("layout_settings"); - this.screens[5] = (PreferenceScreen) getPreferenceScreen().findPreference("buffer_screen"); - this.screens[6] = (PreferenceScreen) getPreferenceScreen().findPreference("misc_screen"); - this.screens[7] = (PreferenceScreen) getPreferenceScreen().findPreference("swipe_screen"); + this.screens = new ArrayList<>(); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("codec_override")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("video_settings")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("video_ad_settings")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("ad_settings")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("layout_settings")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("buffer_screen")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("misc_screen")); + this.screens.add((PreferenceScreen) getPreferenceScreen().findPreference("swipe_screen")); - final ListPreference listPreference3 = (ListPreference) screens[1].findPreference("pref_preferred_video_speed"); + + final ListPreference listPreference3 = (ListPreference) screens.get(1).findPreference("revanced_pref_video_speed"); setSpeedListPreferenceData(listPreference3); listPreference3.setOnPreferenceClickListener(preference -> { @@ -136,7 +145,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment { sharedPreferences.edit().putBoolean("revanced_initialized", true); this.settingsInitialized = true; } catch (Throwable th) { - LogHelper.printException(ReVancedSettingsFragment.class, "Unable to retrieve resourceId for xfile_prefs", th); + LogHelper.printException(ReVancedSettingsFragment.class, "Error during onCreate()", th); } } diff --git a/app/src/main/java/app/revanced/integrations/settingsmenu/SponsorBlockSettingsFragment.java b/app/src/main/java/app/revanced/integrations/settingsmenu/SponsorBlockSettingsFragment.java index 75fcb6e0..b6aa765f 100644 --- a/app/src/main/java/app/revanced/integrations/settingsmenu/SponsorBlockSettingsFragment.java +++ b/app/src/main/java/app/revanced/integrations/settingsmenu/SponsorBlockSettingsFragment.java @@ -74,7 +74,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements SwitchPreference preference = new SwitchPreference(context); preferenceScreen.addPreference(preference); preference.setKey(SettingsEnum.SB_NEW_SEGMENT_ENABLED.getPath()); - preference.setDefaultValue(SettingsEnum.SB_NEW_SEGMENT_ENABLED.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_NEW_SEGMENT_ENABLED.getDefaultValue()); preference.setChecked(SettingsEnum.SB_NEW_SEGMENT_ENABLED.getBoolean()); preference.setTitle(str("enable_segmadding")); preference.setSummary(str("enable_segmadding_sum")); @@ -99,7 +99,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("enable_voting")); preference.setSummary(str("enable_voting_sum")); preference.setKey(SettingsEnum.SB_VOTING_ENABLED.getPath()); - preference.setDefaultValue(SettingsEnum.SB_VOTING_ENABLED.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_VOTING_ENABLED.getDefaultValue()); preference.setChecked(SettingsEnum.SB_VOTING_ENABLED.getBoolean()); preferencesToDisableWhenSBDisabled.add(preference); } @@ -231,7 +231,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_skiptoast")); preference.setSummary(str("general_skiptoast_sum")); preference.setKey(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getPath()); - preference.setDefaultValue(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getDefaultValue()); preference.setOnPreferenceClickListener(preference12 -> { Toast.makeText(preference12.getContext(), str("skipped_sponsor"), Toast.LENGTH_SHORT).show(); return false; @@ -245,7 +245,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_skipcount")); preference.setSummary(str("general_skipcount_sum")); preference.setKey(SettingsEnum.SB_COUNT_SKIPS.getPath()); - preference.setDefaultValue(SettingsEnum.SB_COUNT_SKIPS.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_COUNT_SKIPS.getDefaultValue()); preferencesToDisableWhenSBDisabled.add(preference); screen.addPreference(preference); } @@ -255,7 +255,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_time_without_sb")); preference.setSummary(str("general_time_without_sb_sum")); preference.setKey(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getPath()); - preference.setDefaultValue(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getDefaultValue()); preferencesToDisableWhenSBDisabled.add(preference); screen.addPreference(preference); } @@ -274,7 +274,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_browser_button")); preference.setSummary(str("general_browser_button_sum")); preference.setKey(SettingsEnum.SB_SHOW_BROWSER_BUTTON.getPath()); - preference.setDefaultValue(SettingsEnum.SB_SHOW_BROWSER_BUTTON.getBoolean()); + preference.setDefaultValue(SettingsEnum.SB_SHOW_BROWSER_BUTTON.getDefaultValue()); preferencesToDisableWhenSBDisabled.add(preference); screen.addPreference(preference); } @@ -285,7 +285,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_adjusting")); preference.setSummary(str("general_adjusting_sum")); preference.setKey(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getPath()); - preference.setDefaultValue(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getInt()); + preference.setDefaultValue(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getDefaultValue() + ""); screen.addPreference(preference); preferencesToDisableWhenSBDisabled.add(preference); } @@ -296,7 +296,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_min_duration")); preference.setSummary(str("general_min_duration_sum")); preference.setKey(SettingsEnum.SB_MIN_DURATION.getPath()); - preference.setDefaultValue(SettingsEnum.SB_MIN_DURATION.getFloat()); + preference.setDefaultValue(SettingsEnum.SB_MIN_DURATION.getDefaultValue() + ""); screen.addPreference(preference); preferencesToDisableWhenSBDisabled.add(preference); } @@ -306,7 +306,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements preference.setTitle(str("general_uuid")); preference.setSummary(str("general_uuid_sum")); preference.setKey(SettingsEnum.SB_UUID.getPath()); - preference.setDefaultValue(SettingsEnum.SB_UUID.getString()); + preference.setDefaultValue(SettingsEnum.SB_UUID.getDefaultValue() + ""); screen.addPreference(preference); preferencesToDisableWhenSBDisabled.add(preference); } diff --git a/app/src/main/java/app/revanced/integrations/sponsorblock/StringRef.java b/app/src/main/java/app/revanced/integrations/sponsorblock/StringRef.java index 42319990..91103ac3 100644 --- a/app/src/main/java/app/revanced/integrations/sponsorblock/StringRef.java +++ b/app/src/main/java/app/revanced/integrations/sponsorblock/StringRef.java @@ -1,5 +1,6 @@ package app.revanced.integrations.sponsorblock; +import android.content.Context; import android.content.res.Resources; import androidx.annotation.NonNull; @@ -7,6 +8,7 @@ import androidx.annotation.NonNull; import java.util.HashMap; import app.revanced.integrations.utils.LogHelper; +import app.revanced.integrations.utils.ReVancedUtils; public class StringRef { private static Resources resources; @@ -88,6 +90,9 @@ public class StringRef { @NonNull public String toString() { if (!resolved) { + Context context = ReVancedUtils.getContext(); + resources = context.getResources(); + packageName = context.getPackageName(); resolved = true; if (resources != null) { final int identifier = resources.getIdentifier(value, "string", packageName); @@ -95,6 +100,8 @@ public class StringRef { LogHelper.printException(StringRef.class, "Resource not found: " + value); else value = resources.getString(identifier); + } else { + LogHelper.printException(StringRef.class, "Could not resolve resources!"); } } return value; diff --git a/app/src/main/java/app/revanced/integrations/sponsorblock/SwipeHelper.java b/app/src/main/java/app/revanced/integrations/sponsorblock/SwipeHelper.java index 37cfb90c..4b6ece5b 100644 --- a/app/src/main/java/app/revanced/integrations/sponsorblock/SwipeHelper.java +++ b/app/src/main/java/app/revanced/integrations/sponsorblock/SwipeHelper.java @@ -12,7 +12,6 @@ import app.revanced.integrations.utils.LogHelper; import app.revanced.integrations.utils.ReVancedUtils; import app.revanced.integrations.utils.SharedPrefHelper; -/* loaded from: classes6.dex */ public class SwipeHelper { static FrameLayout _frameLayout; public static boolean isTabletMode; diff --git a/app/src/main/java/app/revanced/integrations/sponsorblock/player/ui/SponsorBlockView.java b/app/src/main/java/app/revanced/integrations/sponsorblock/player/ui/SponsorBlockView.java index f11b3e59..79950fa1 100644 --- a/app/src/main/java/app/revanced/integrations/sponsorblock/player/ui/SponsorBlockView.java +++ b/app/src/main/java/app/revanced/integrations/sponsorblock/player/ui/SponsorBlockView.java @@ -151,7 +151,12 @@ public class SponsorBlockView { private static void checkLayout() { if (inlineSponsorOverlay.getHeight() == 0) { - View layout = SwipeHelper.nextGenWatchLayout.findViewById(getIdentifier("player_overlays", "id")); + ViewGroup watchLayout = SwipeHelper.nextGenWatchLayout; + if (watchLayout == null) { + LogHelper.debug(SponsorBlockView.class, "nextGenWatchLayout is null!"); + return; + } + View layout = watchLayout.findViewById(getIdentifier("player_overlays", "id")); if (layout == null) { LogHelper.debug(SponsorBlockView.class, "player_overlays was not found for SB"); diff --git a/app/src/main/java/app/revanced/integrations/utils/SharedPrefHelper.java b/app/src/main/java/app/revanced/integrations/utils/SharedPrefHelper.java index d003a914..d1e015c0 100644 --- a/app/src/main/java/app/revanced/integrations/utils/SharedPrefHelper.java +++ b/app/src/main/java/app/revanced/integrations/utils/SharedPrefHelper.java @@ -14,21 +14,6 @@ public class SharedPrefHelper { sharedPreferences.edit().putBoolean(key, value).apply(); } - public static void saveInt(Context context, SharedPrefNames prefName, String key, Integer value) { - SharedPreferences sharedPreferences = getPreferences(context, prefName); - sharedPreferences.edit().putInt(key, value).apply(); - } - - public static void saveLong(Context context, SharedPrefNames prefName, String key, Long value) { - SharedPreferences sharedPreferences = getPreferences(context, prefName); - sharedPreferences.edit().putLong(key, value).apply(); - } - - public static void saveFloat(Context context, SharedPrefNames prefName, String key, Float value) { - SharedPreferences sharedPreferences = getPreferences(context, prefName); - sharedPreferences.edit().putFloat(key, value).apply(); - } - public static String getString(Context context, SharedPrefNames prefName, String key, String _default) { SharedPreferences sharedPreferences = getPreferences(context, prefName); return (sharedPreferences.getString(key, _default)); @@ -41,17 +26,17 @@ public class SharedPrefHelper { public static Long getLong(Context context, SharedPrefNames prefName, String key, Long _default) { SharedPreferences sharedPreferences = getPreferences(context, prefName); - return sharedPreferences.getLong(key, _default); + return Long.valueOf(sharedPreferences.getString(key, _default + "")); } public static Float getFloat(Context context, SharedPrefNames prefName, String key, Float _default) { SharedPreferences sharedPreferences = getPreferences(context, prefName); - return sharedPreferences.getFloat(key, _default); + return Float.valueOf(sharedPreferences.getString(key, _default + "")); } public static Integer getInt(Context context, SharedPrefNames prefName, String key, Integer _default) { SharedPreferences sharedPreferences = getPreferences(context, prefName); - return sharedPreferences.getInt(key, _default); + return Integer.valueOf(sharedPreferences.getString(key, _default + "")); } public static SharedPreferences getPreferences(Context context, SharedPrefNames name) { diff --git a/app/src/main/java/app/revanced/integrations/utils/ThemeHelper.java b/app/src/main/java/app/revanced/integrations/utils/ThemeHelper.java index a7a2df07..23d3a7cc 100644 --- a/app/src/main/java/app/revanced/integrations/utils/ThemeHelper.java +++ b/app/src/main/java/app/revanced/integrations/utils/ThemeHelper.java @@ -1,6 +1,5 @@ package app.revanced.integrations.utils; -/* loaded from: classes6.dex */ public class ThemeHelper { private static int themeValue; diff --git a/app/src/main/java/com/google/android/libraries/social/licenses/LicenseActivity.java b/app/src/main/java/com/google/android/libraries/social/licenses/LicenseActivity.java new file mode 100644 index 00000000..059a45c9 --- /dev/null +++ b/app/src/main/java/com/google/android/libraries/social/licenses/LicenseActivity.java @@ -0,0 +1,7 @@ +package com.google.android.libraries.social.licenses; + +import android.app.Activity; + +// Dummy class +public final class LicenseActivity extends Activity { } +