From 5e83368fb46b0d6ad8b1ab20fe0831b84ca9951f Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 22 Aug 2022 01:59:38 +0200 Subject: [PATCH] feat: `settings` patch framework (#113) --- .../patches/GeneralBytecodeAdsPatch.java | 2 -- .../patches/HideCreateButtonPatch.java | 7 +++--- .../patches/HideHomeAdsPatch.java | 6 ++--- .../patches/NewActionbarPatch.java | 2 +- .../integrations/patches/VideoAdsPatch.java | 3 ++- .../integrations/settings/SettingsEnum.java | 8 +++---- .../settingsmenu/ReVancedSettingActivity.java | 13 +++++++--- .../ReVancedSettingsFragment.java | 24 ------------------- 8 files changed, 23 insertions(+), 42 deletions(-) diff --git a/integrations/java/app/revanced/integrations/patches/GeneralBytecodeAdsPatch.java b/integrations/java/app/revanced/integrations/patches/GeneralBytecodeAdsPatch.java index a874d98c7..ef25d5f87 100644 --- a/integrations/java/app/revanced/integrations/patches/GeneralBytecodeAdsPatch.java +++ b/integrations/java/app/revanced/integrations/patches/GeneralBytecodeAdsPatch.java @@ -15,12 +15,10 @@ import app.revanced.integrations.utils.LogHelper; public class GeneralBytecodeAdsPatch { //Used by app.revanced.patches.youtube.ad.general.bytecode.patch.GeneralBytecodeAdsPatch - @RequiresApi(api = Build.VERSION_CODES.N) public static boolean containsAd(String value, ByteBuffer buffer) { return containsLithoAd(value, buffer); } - @RequiresApi(api = Build.VERSION_CODES.N) private static boolean containsLithoAd(String value, ByteBuffer buffer) { boolean enabled = false; for (SettingsEnum setting : SettingsEnum.getAdRemovalSettings()) { diff --git a/integrations/java/app/revanced/integrations/patches/HideCreateButtonPatch.java b/integrations/java/app/revanced/integrations/patches/HideCreateButtonPatch.java index 713496597..1b19e4ec7 100644 --- a/integrations/java/app/revanced/integrations/patches/HideCreateButtonPatch.java +++ b/integrations/java/app/revanced/integrations/patches/HideCreateButtonPatch.java @@ -2,7 +2,6 @@ package app.revanced.integrations.patches; import android.view.View; -import app.revanced.integrations.adremover.AdRemoverAPI; import app.revanced.integrations.settings.SettingsEnum; import app.revanced.integrations.utils.LogHelper; @@ -10,9 +9,9 @@ public class HideCreateButtonPatch { //Used by app.revanced.patches.youtube.layout.createbutton.patch.CreateButtonRemoverPatch public static void hideCreateButton(View view) { - boolean show = SettingsEnum.CREATE_BUTTON_SHOWN.getBoolean(); - String message = show ? "Create button: Shown" : "Create button: Hidden"; + boolean enabled = SettingsEnum.CREATE_BUTTON_ENABLED.getBoolean(); + String message = "Create button: " + (enabled ? "shown" : "hidden"); LogHelper.debug(HideCreateButtonPatch.class, message); - view.setVisibility(show ? View.VISIBLE : View.GONE); + view.setVisibility(enabled ? View.VISIBLE : View.GONE); } } diff --git a/integrations/java/app/revanced/integrations/patches/HideHomeAdsPatch.java b/integrations/java/app/revanced/integrations/patches/HideHomeAdsPatch.java index 347604bff..4ed41f70c 100644 --- a/integrations/java/app/revanced/integrations/patches/HideHomeAdsPatch.java +++ b/integrations/java/app/revanced/integrations/patches/HideHomeAdsPatch.java @@ -9,12 +9,12 @@ public class HideHomeAdsPatch { /** * Used by package app.revanced.extensions.Extensions + * * @param view */ public static void HideHomeAds(View view) { - if (!SettingsEnum.HOME_ADS_SHOWN.getBoolean()) { - AdRemoverAPI.HideViewWithLayout1dp(view); - } + if (!SettingsEnum.HOME_ADS_HIDDEN.getBoolean()) return; + AdRemoverAPI.HideViewWithLayout1dp(view); } } diff --git a/integrations/java/app/revanced/integrations/patches/NewActionbarPatch.java b/integrations/java/app/revanced/integrations/patches/NewActionbarPatch.java index 8b244a9e7..1908a9351 100644 --- a/integrations/java/app/revanced/integrations/patches/NewActionbarPatch.java +++ b/integrations/java/app/revanced/integrations/patches/NewActionbarPatch.java @@ -6,7 +6,7 @@ public class NewActionbarPatch { //Used by app.revanced.patches.youtube.layout.widesearchbar.patch.WideSearchbarPatch public static boolean getNewActionBar() { - return SettingsEnum.USE_NEW_ACTIONBAR.getBoolean(); + return SettingsEnum.WIDE_SEARCHBAR.getBoolean(); // TODO: maybe this has to be inverted } } diff --git a/integrations/java/app/revanced/integrations/patches/VideoAdsPatch.java b/integrations/java/app/revanced/integrations/patches/VideoAdsPatch.java index a590c0576..cdaf6dfc4 100644 --- a/integrations/java/app/revanced/integrations/patches/VideoAdsPatch.java +++ b/integrations/java/app/revanced/integrations/patches/VideoAdsPatch.java @@ -8,7 +8,8 @@ public class VideoAdsPatch { // Used by app.revanced.patches.youtube.ad.general.video.patch.VideoAdsPatch // depends on Whitelist patch (still needs to be written) public static boolean shouldShowAds() { - return SettingsEnum.VIDEO_ADS_SHOWN.getBoolean() || Whitelist.shouldShowAds(); + return !SettingsEnum.VIDEO_ADS_HIDDEN.getBoolean(); // TODO && Whitelist.shouldShowAds(); + } } diff --git a/integrations/java/app/revanced/integrations/settings/SettingsEnum.java b/integrations/java/app/revanced/integrations/settings/SettingsEnum.java index 8d8407221..be240c2e7 100644 --- a/integrations/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/integrations/java/app/revanced/integrations/settings/SettingsEnum.java @@ -21,8 +21,8 @@ public enum SettingsEnum { ENABLE_WHITELIST("revanced_whitelist_ads_enabled", false, ReturnType.BOOLEAN), //Ad settings - HOME_ADS_SHOWN("revanced_home_ads_enabled", false, ReturnType.BOOLEAN, true), - VIDEO_ADS_SHOWN("revanced_video_ads_enabled", false, ReturnType.BOOLEAN, true), + HOME_ADS_HIDDEN("revanced_home_ads_enabled", true, ReturnType.BOOLEAN, true), + VIDEO_ADS_HIDDEN("revanced_video_ads_enabled", true, 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), @@ -49,8 +49,8 @@ public enum SettingsEnum { 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, true), - USE_NEW_ACTIONBAR("revanced_new_actionbar", false, ReturnType.BOOLEAN, true), + CREATE_BUTTON_ENABLED("revanced_create_button_enabled", false, ReturnType.BOOLEAN, true), + WIDE_SEARCHBAR("revanced_wide_searchbar", 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 diff --git a/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java b/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java index 88874ddec..0ea0af090 100644 --- a/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java +++ b/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingActivity.java @@ -26,7 +26,7 @@ public class ReVancedSettingActivity { } public static void initializeSettings(LicenseActivity base) { - base.setContentView(getIdentifier("xsettings_with_toolbar", "layout")); + base.setContentView(getIdentifier("revanced_settings_with_toolbar", "layout")); PreferenceFragment preferenceFragment; String preferenceIdentifier; @@ -42,10 +42,17 @@ public class ReVancedSettingActivity { preferenceIdentifier = "revanced_settings"; preferenceFragment = new ReVancedSettingsFragment(); } - - base.getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), preferenceFragment).commit(); + + try { + getTextView((ViewGroup) base.findViewById(getIdentifier("toolbar", "id"))).setText(preferenceIdentifier); + } catch (Exception e) { + LogHelper.printException(ReVancedSettingActivity.class, "Couldn't set Toolbar title", e); + } + + base.getFragmentManager().beginTransaction().replace(getIdentifier("revanced_settings_fragments", "id"), preferenceFragment).commit(); } + public static T getView(Class typeClass, ViewGroup viewGroup) { if (viewGroup == null) { return null; diff --git a/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java b/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java index 2c5824639..a0a492f0f 100644 --- a/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java +++ b/integrations/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java @@ -21,7 +21,6 @@ import android.preference.SwitchPreference; import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application; import com.google.android.apps.youtube.app.application.Shell_HomeActivity; -import java.util.ArrayList; import java.util.List; import app.revanced.integrations.settings.SettingsEnum; @@ -122,25 +121,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment { this.settingsInitialized = sharedPreferences.getBoolean("revanced_initialized", false); sharedPreferences.registerOnSharedPreferenceChangeListener(this.listener); this.Registered = true; - this.screens = new ArrayList<>(); - 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.get(1).findPreference("revanced_pref_video_speed"); - setSpeedListPreferenceData(listPreference3); - - listPreference3.setOnPreferenceClickListener(preference -> { - setSpeedListPreferenceData(listPreference3); - return false; - }); - - sharedPreferences.edit().putBoolean("revanced_initialized", true); this.settingsInitialized = true; } catch (Throwable th) { LogHelper.printException(ReVancedSettingsFragment.class, "Error during onCreate()", th); @@ -176,11 +157,6 @@ public class ReVancedSettingsFragment extends PreferenceFragment { return pref; } - private void setSpeedListPreferenceData(ListPreference listPreference) { - listPreference.setEntries(this.videoSpeedEntries); - listPreference.setEntryValues(this.videoSpeedentryValues); - } - /* private void setCopyLinkListPreferenceData(ListPreference listPreference, String str) { listPreference.setEntries(this.buttonLocationEntries);