fix: some more refactoring and cleanup (#21)

* refactor: integrations and prepare new patches

* bugfixes

* fix critical bug

* prepare BrandingWaterMark patch

* fixing create button

* dont use Strings in ReVancedSettingsFragment when we have a wonderful enum for that

* rename classes from fenster to Swipe

* push

* exclude android packages from build
This commit is contained in:
Joey Peter 2022-06-27 22:08:50 +02:00 committed by GitHub
parent 0938f6c59f
commit 9b1dce42ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 993 additions and 1230 deletions

View File

@ -33,7 +33,7 @@ android {
}
dependencies {
implementation 'androidx.annotation:annotation:1.3.0'
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
compileOnly 'androidx.annotation:annotation:1.3.0'
compileOnly 'androidx.constraintlayout:constraintlayout:2.1.4'
}

View File

@ -49,12 +49,12 @@ public class AdRemoverAPI {
* @param view
*/
public static void hideCreateButton(View view) {
String message = SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.getBoolean() ? "Create button: shown" : "Create button: hidden";
String message = SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.getBoolean() ? "Create button: Shown" : "Create button: Hidden";
LogHelper.debug("HideCreateButton", message);
if (!SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.getBoolean()) {
view.setVisibility(View.GONE);
} else {
if (SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.getBoolean()) {
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
}
}

View File

@ -5,8 +5,6 @@ import android.os.Build;
import androidx.annotation.RequiresApi;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@ -15,12 +13,12 @@ import java.util.Objects;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.settings.Settings;
public class LithoAdRemoval {
private static boolean getBoolean(String key, boolean _default) {
return SharedPrefHelper.getBoolean(Objects.requireNonNull(YouTubeTikTokRoot_Application.getAppContext()), SharedPrefHelper.SharedPrefNames.YOUTUBE, key, _default);
return SharedPrefHelper.getBoolean(Objects.requireNonNull(ReVancedUtils.getContext()), SharedPrefHelper.SharedPrefNames.YOUTUBE, key, _default);
}
private static boolean isExperimentalInfoPanelRemoval() {

View File

@ -10,8 +10,6 @@ import android.content.SharedPreferences;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@ -22,16 +20,16 @@ import java.util.Map;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.sponsorblock.player.ChannelModel;
import app.revanced.integrations.sponsorblock.player.VideoInformation;
import app.revanced.integrations.utils.ObjectSerializer;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
public class Whitelist {
private static final String TAG = "VI - Whitelisting";
private static final Map<WhitelistType, ArrayList<ChannelModel>> whitelistMap = parseWhitelist(YouTubeTikTokRoot_Application.getAppContext());
private static final Map<WhitelistType, Boolean> enabledMap = parseEnabledMap(YouTubeTikTokRoot_Application.getAppContext());
private static final Map<WhitelistType, ArrayList<ChannelModel>> whitelistMap = parseWhitelist(ReVancedUtils.getContext());
private static final Map<WhitelistType, Boolean> enabledMap = parseEnabledMap(ReVancedUtils.getContext());
private Whitelist() {
}

View File

@ -6,6 +6,8 @@ import static app.revanced.integrations.sponsorblock.StringRef.str;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
@ -17,7 +19,6 @@ import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.nio.charset.StandardCharsets;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.sponsorblock.player.ChannelModel;
import app.revanced.integrations.adremover.whitelist.Whitelist;
@ -38,7 +39,7 @@ public class WhitelistRequester {
connection.setDoOutput(true);
connection.setConnectTimeout(2 * 1000);
String versionName = Settings.getVersionName(context);
String versionName = getVersionName(context);
String jsonInputString = "{\"context\": {\"client\": { \"clientName\": \"Android\", \"clientVersion\": \"" + versionName + "\" } }, \"videoId\": \"" + currentVideoId + "\"}";
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
@ -88,4 +89,15 @@ public class WhitelistRequester {
private static JSONObject getJSONObject(HttpURLConnection connection) throws Exception {
return Requester.getJSONObject(connection);
}
private static String getVersionName(Context context) {
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
String version = pInfo.versionName;
return (version);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return ("17.24.34");
}
}

View File

@ -0,0 +1,12 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class AutoRepeatPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1hLl71Mm3oAtgTjNvsYZi3CUutCPx2gjS/view?usp=sharing for where it needs to be used.
public static boolean shouldAutoRepeat() {
return SettingsEnum.PREFERRED_AUTO_REPEAT_BOOLEAN.getBoolean();
}
}

View File

@ -0,0 +1,12 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.adremover.AdRemoverAPI;
import app.revanced.integrations.settings.SettingsEnum;
public class BrandingWaterMarkPatch {
//Used by: app.revanced.patches.youtube.layout.watermark.patch.HideWatermarkPatch
public static boolean isBrandingWatermarkShown() {
return SettingsEnum.BRANDING_SHOWN_BOOLEAN.getBoolean();
}
}

View File

@ -0,0 +1,15 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.videoswipecontrols.helpers.BrightnessHelper;
public class HDRMaxBrightnessPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1rIJzsaMQouH_2__EcVY5Dg6l7ji9vsyP/view?usp=sharing for where it needs to be used.
public static float getHDRBrightness(float original) {
if (!SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.getBoolean()) return original;
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() ? BrightnessHelper.getBrightness() : -1.0f;
}
}

View File

@ -0,0 +1,14 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class MiniplayerOverridePatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1G7jn2EdWgNls0Htgs-wPPjjObZL1emzK/view?usp=sharing
//And https://drive.google.com/file/d/1-QlgSiKzqQ5lHXQnvRUpijk0GH9T1Sn7/view?usp=sharing
// for where it needs to be used.
public static boolean getTabletMiniplayerOverride() {
return SettingsEnum.USE_TABLET_MINIPLAYER_BOOLEAN.getBoolean();
}
}

View File

@ -0,0 +1,13 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class NewActionbarPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1Jg2WK9wwSABCiIcqclzhedy3J3RCf3Hn/view?usp=sharing for where it needs to be used.
public static boolean getNewActionBar() {
return SettingsEnum.USE_NEW_ACTIONBAR_BOOLEAN.getBoolean();
}
}

View File

@ -0,0 +1,13 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class OverrideCodecPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/14d2R-5JF97gOZggoobVEVazPWbORbZVp/view?usp=sharing for where it needs to be used.
public static boolean isOverrideCodedUsed() {
return SettingsEnum.CODEC_OVERRIDE_BOOLEAN.getBoolean();
}
}

View File

@ -0,0 +1,26 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class VideoBufferPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1LSZZX4NgBIlN0dDCzyI7cECtgbXVg_1j/view?usp=sharing for where it needs to be used.
public static int getMaxBuffer(int original) {
return SettingsEnum.MAX_BUFFER_INTEGER.getInt();
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1gIUqPIMq-XP-edT_9wQN1RbmVnk9tJN8/view?usp=sharing for where it needs to be used.
public static int getPlaybackBuffer(int original) {
return SettingsEnum.PLAYBACK_MAX_BUFFER_INTEGER.getInt();
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1ywL7SxvWrBIIbuZ1YoUIKdZM-U8H_w-p/view?usp=sharing for where it needs to be used.
public static int getReBuffer(int original) {
return SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.getInt();
}
}

View File

@ -0,0 +1,17 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.videoplayer.videosettings.VideoQuality;
public class VideoQualityPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1goodaU0JWrO9BAOUn6El-Id1SNuMGHR9/view?usp=sharing for where it needs to be used.
public static int setVideoQuality(Object[] qualities, int quality, Object qInterface) {
return VideoQuality.setVideoQuality(qualities, quality, qInterface);
}
//See https://drive.google.com/file/d/1_cgCf603XKk4gEbbsmWGtndNt5UJ0np7/view?usp=sharing for usage
public static void userChangedQuality() {
VideoQuality.userChangedQuality();
}
}

View File

@ -0,0 +1,51 @@
package app.revanced.integrations.patches;
import android.content.Context;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.sponsorblock.player.PlayerType;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SwipeHelper;
import app.revanced.integrations.videoswipecontrols.SwipeControlAPI;
public class VideoSwipeControlsPatch {
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1FTPRrp6NcIF5LC_ByST1a0wcNoGKcAYS/view?usp=sharing for where it needs to be used.
public static void InitializeFensterController(Context context, ViewGroup viewGroup, ViewConfiguration viewConfiguration) {
SwipeControlAPI.InitializeFensterController(context, viewGroup, viewConfiguration);
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1Q9TIDDKvc-nQuJWLmCh7jx3ohxPdFIrZ/view?usp=sharing
//And https://drive.google.com/file/d/1byP5SItks9MYB3fDVC39xH_6nBbaH9NY/view?usp=sharing
// for where it needs to be used.
public static boolean FensterTouchEvent(MotionEvent motionEvent) {
return SwipeControlAPI.FensterTouchEvent(motionEvent);
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1qKmaX4yzAjzYM6T5uUiRtbMxk2zJlwtd/view?usp=sharing for where it needs to be used.
public static boolean isSwipeControlBrightnessEnabled() {
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean();
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1TMQxs0ul2_p5_GomE-3J1QWO__M189Da/view?usp=sharing for where it needs to be used.
public static void PlayerTypeChanged(PlayerType playerType) {
SwipeControlAPI.PlayerTypeChanged(playerType);
}
//ToDo: Write Patch for it.
//See https://drive.google.com/file/d/1EoVAyqWOMGUDCovuDb27yeQJBk_CyKsY/view?usp=sharing for where it needs to be used.
public static boolean isSwipeControlEnabled() {
if (ReVancedUtils.getPlayerType() != null && ReVancedUtils.getPlayerType() == PlayerType.WATCH_WHILE_FULLSCREEN && !SwipeHelper.IsControlsShown()) {
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() || SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean();
}
return false;
}
}

View File

@ -12,13 +12,12 @@ import android.os.Build;
import android.view.View;
import android.widget.TextView;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.util.Locale;
import java.util.Objects;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.ryd.requests.RYDRequester;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
public class ReturnYouTubeDislikes {
@ -34,7 +33,7 @@ public class ReturnYouTubeDislikes {
private static CompactDecimalFormat compactNumberFormatter;
static {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
isEnabled = SharedPrefHelper.getBoolean(Objects.requireNonNull(context), SharedPrefHelper.SharedPrefNames.RYD, PREFERENCES_KEY_RYD_ENABLED, false);
if (isEnabled) {
registration = new Registration(context);
@ -54,10 +53,10 @@ public class ReturnYouTubeDislikes {
public static void onEnabledChange(boolean enabled) {
isEnabled = enabled;
if (registration == null) {
registration = new Registration(YouTubeTikTokRoot_Application.getAppContext());
registration = new Registration(ReVancedUtils.getContext());
}
if (voting == null) {
voting = new Voting(YouTubeTikTokRoot_Application.getAppContext(), registration);
voting = new Voting(ReVancedUtils.getContext(), registration);
}
}
@ -176,7 +175,7 @@ public class ReturnYouTubeDislikes {
}
private static void handleOnClick(View view, boolean previousState) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (!isEnabled || SharedPrefHelper.getBoolean(Objects.requireNonNull(context), SharedPrefHelper.SharedPrefNames.YOUTUBE, "user_signed_out", true))
return;

View File

@ -15,8 +15,6 @@ import android.graphics.LightingColorFilter;
import android.net.Uri;
import android.os.Build;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.utils.ReVancedUtils;
@ -28,7 +26,7 @@ public class Dialogs {
}
private static void rydFirstRun(Activity activity) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
boolean enabled = SharedPrefHelper.getBoolean(context, SharedPrefHelper.SharedPrefNames.RYD, PREFERENCES_KEY_RYD_ENABLED, false);
boolean hintShown = SharedPrefHelper.getBoolean(context, SharedPrefHelper.SharedPrefNames.RYD, PREFERENCES_KEY_RYD_HINT_SHOWN, false);
@ -82,7 +80,7 @@ public class Dialogs {
}
private static void sbFirstRun(Activity activity) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
boolean enabled = SharedPrefHelper.getBoolean(context, SharedPrefHelper.SharedPrefNames.RYD, PREFERENCES_KEY_SPONSOR_BLOCK_ENABLED, false);
boolean hintShown = SharedPrefHelper.getBoolean(context, SharedPrefHelper.SharedPrefNames.RYD, PREFERENCES_KEY_SPONSOR_BLOCK_HINT_SHOWN, false);

View File

@ -1,310 +1,11 @@
package app.revanced.integrations.settings;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Build;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.util.Objects;
import app.revanced.integrations.sponsorblock.player.PlayerType;
import app.revanced.integrations.sponsorblock.SponsorBlockUtils;
import app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.videoswipecontrols.FensterGestureController;
import app.revanced.integrations.videoswipecontrols.XFenster;
import app.revanced.integrations.utils.SwipeHelper;
import app.revanced.integrations.sponsorblock.NewSegmentHelperLayout;
public class Settings {
private static Object AutoRepeatClass;
private static PlayerType env;
private static FensterGestureController fensterGestureController;
public static Boolean userChangedQuality = false;
public static Boolean userChangedSpeed = false;
public static Boolean newVideo = false;
public static Boolean newVideoSpeed = false;
public static String getManufacturer() {
String manufacturer = SettingsEnum.MANUFACTURER_OVERRIDE_STRING.getString();
if (manufacturer == null || manufacturer.isEmpty()) {
manufacturer = Build.MANUFACTURER;
}
LogHelper.debug("Settings", "getManufacturer: " + manufacturer);
return manufacturer;
}
public static String getModel() {
String model = SettingsEnum.MODEL_OVERRIDE_STRING.getString();
if (model == null || model.isEmpty()) {
model = Build.MODEL;
}
LogHelper.debug("Settings", "getModel: " + model);
return model;
}
public static String getStringByName(Context context, String name) {
try {
Resources res = context.getResources();
return res.getString(res.getIdentifier(name, "string", context.getPackageName()));
} catch (Throwable exception) {
LogHelper.printException("Settings", "Resource not found.", exception);
return "";
}
}
public static void CheckForMicroG(Activity activity) {
AlertDialog.Builder builder;
if (!appInstalledOrNot("com.mgoogle.android.gms")) {
LogHelper.debug("XDebug", "Custom MicroG installation undetected");
if (Build.VERSION.SDK_INT >= 21) {
builder = new AlertDialog.Builder(activity, 16974374);
} else {
builder = new AlertDialog.Builder(activity);
}
builder.setTitle("Someone is not reading...").setMessage("You didn't install the MicroG as instructed, you can't login without it.\n\nInstall it and try again.").setPositiveButton("Close", new DialogInterface.OnClickListener() { // from class: app.revanced.integrations.settings.Settings.1
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialog, int id) {
}
}).show();
} else {
LogHelper.debug("XDebug", "Custom MicroG installation detected");
}
}
public static boolean isFensterEnabled() {
if (env != null && env == PlayerType.WATCH_WHILE_FULLSCREEN && !SwipeHelper.IsControlsShown()) {
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() || SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean();
}
return false;
}
public static boolean isWatchWhileFullScreen() {
if (env == null) {
return false;
}
return env.toString().equals("WATCH_WHILE_FULLSCREEN");
}
private static boolean appInstalledOrNot(String uri) {
try {
PackageManager pm = getContext().getPackageManager();
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
public static String getVersionName(Context context) {
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
String version = pInfo.versionName;
return (version);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return ("17.23.35");
}
public static String getPackageName() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
if (context == null) {
LogHelper.printException("Settings", "Context is null, returning com.google.android.youtube!");
return "com.google.android.youtube";
}
String PACKAGE_NAME = context.getPackageName();
LogHelper.debug("Settings", "getPackageName: " + PACKAGE_NAME);
return PACKAGE_NAME;
}
public static int getOverrideWidth(int original) {
int compatibility = SettingsEnum.CODEC_OVERRIDE_BOOLEAN.getBoolean() ? 2160 : original;
return compatibility;
}
public static int getOverrideHeight(int original) {
int compatibility = SettingsEnum.CODEC_OVERRIDE_BOOLEAN.getBoolean() ? 3840 : original;
return compatibility;
}
public static Context getContext() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
if (context != null) {
LogHelper.debug("Settings", "getContext");
return context;
} else {
LogHelper.printException("Settings", "Context is null, returning null!");
return null;
}
}
public static void setOldLayout(SharedPreferences sharedPreferences, String config, long timeStamp) {
if (!SettingsEnum.OLD_LAYOUT_XFILE_ENABLED_BOOLEAN.getBoolean()) {
sharedPreferences.edit().putString("com.google.android.libraries.youtube.innertube.cold_config_group", config).putLong("com.google.android.libraries.youtube.innertube.cold_stored_timestamp", timeStamp).apply();
LogHelper.debug("Settings", "setOldLayout: true");
return;
}
if (sharedPreferences.contains("com.google.android.libraries.youtube.innertube.cold_config_group")) {
sharedPreferences.edit().putString("com.google.android.libraries.youtube.innertube.cold_config_group_backup", sharedPreferences.getString("com.google.android.libraries.youtube.innertube.cold_config_group", null)).remove("com.google.android.libraries.youtube.innertube.cold_config_group").apply();
}
LogHelper.debug("Settings", "setOldLayout: false");
}
public static void NewVideoStarted() {
newVideo = true;
newVideoSpeed = true;
LogHelper.debug("Settings", "New video started!");
}
public static void InitializeFensterController(Context context, ViewGroup viewGroup, ViewConfiguration viewConfiguration) {
fensterGestureController = new FensterGestureController();
fensterGestureController.setFensterEventsListener(new XFenster(context, viewGroup), context, viewConfiguration);
LogHelper.debug("Settings", "XFenster initialized");
}
public static boolean FensterTouchEvent(MotionEvent motionEvent) {
if (fensterGestureController == null) {
LogHelper.debug("Settings", "fensterGestureController is null");
return false;
} else if (motionEvent == null) {
LogHelper.debug("Settings", "motionEvent is null");
return false;
} else if (!SwipeHelper.IsControlsShown()) {
return fensterGestureController.onTouchEvent(motionEvent);
} else {
LogHelper.debug("Settings", "skipping onTouchEvent dispatching because controls are shown.");
return false;
}
}
public static void PlayerTypeChanged(PlayerType playerType) {
LogHelper.debug("XDebug", playerType.toString());
if (env != playerType) {
if (playerType == PlayerType.WATCH_WHILE_FULLSCREEN) {
EnableXFenster();
} else {
DisableXFenster();
}
if (playerType == PlayerType.WATCH_WHILE_SLIDING_MINIMIZED_MAXIMIZED || playerType == PlayerType.WATCH_WHILE_MINIMIZED || playerType == PlayerType.WATCH_WHILE_PICTURE_IN_PICTURE) {
NewSegmentHelperLayout.hide();
}
SponsorBlockView.playerTypeChanged(playerType);
SponsorBlockUtils.playerTypeChanged(playerType);
}
env = playerType;
}
public static void EnableXFenster() {
if (SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() || SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean()) {
FensterGestureController fensterGestureController2 = fensterGestureController;
fensterGestureController2.TouchesEnabled = true;
((XFenster) fensterGestureController2.listener).enable(SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean(), SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean());
}
}
public static void DisableXFenster() {
FensterGestureController fensterGestureController2 = fensterGestureController;
fensterGestureController2.TouchesEnabled = false;
((XFenster) fensterGestureController2.listener).disable();
}
/*public static boolean autoCaptions(boolean original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
}
Boolean captions = Boolean.valueOf(original);
if (prefAutoCaptions.booleanValue()) {
captions = true;
}
LogHelper.debug("Settings", "autoCaptions: " + captions);
return captions.booleanValue();
}
public static boolean getOverride(boolean original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
}
Boolean compatibility = Boolean.valueOf(original);
if (overrideCodec.booleanValue()) {
compatibility = true;
}
LogHelper.debug("Settings", "getOverride: " + compatibility);
return compatibility.booleanValue();
}
public static int getCommentsLocation(int original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
} else if (!commentsLocation.booleanValue()) {
return original;
} else {
LogHelper.debug("Settings", "getCommentsLocation: Moving comments back down");
return 3;
}
}
public static boolean getTabletMiniplayerOverride(boolean original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
} else if (!tabletMiniplayer.booleanValue()) {
return original;
} else {
LogHelper.debug("Settings", "getTabletMiniplayerOverride: Using tablet miniplayer");
return true;
}
}
public static boolean getNewActionBar(boolean original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
} else if (!newActionBar.booleanValue()) {
return original;
} else {
LogHelper.debug("Settings", "getNewActionBar: Enabled");
return true;
}
}*/
//Methods not used in latest Vanced source code, can be useful for future patches
/*
public static boolean getNewActionBarNegated(boolean original) {
ReadSettings();
if (!settingsInitialized.booleanValue()) {
LogHelper.printException("Settings", "Context is null, returning " + original + "!");
return original;
} else if (!newActionBar.booleanValue()) {
return original;
} else {
LogHelper.debug("Settings", "getNewActionBar: Enabled");
return false;
}
}
private static Object AutoRepeatClass;
public static boolean getVerticalZoomToFit(boolean original) {
ReadSettings();
@ -358,35 +59,17 @@ public class Settings {
return seek.booleanValue();
}
public static boolean shouldAutoRepeat() {
return SettingsEnum.PREFERRED_AUTO_REPEAT_BOOLEAN.getBoolean();
}
public static void setOldLayout(SharedPreferences sharedPreferences, String config, long timeStamp) {
if (!SettingsEnum.OLD_LAYOUT_XFILE_ENABLED_BOOLEAN.getBoolean()) {
sharedPreferences.edit().putString("com.google.android.libraries.youtube.innertube.cold_config_group", config).putLong("com.google.android.libraries.youtube.innertube.cold_stored_timestamp", timeStamp).apply();
LogHelper.debug("Settings", "setOldLayout: true");
return;
}
public static float getHDRBrightness(float original) {
if (!SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.getBoolean()) return original;
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() ? BrightnessHelper.getBrightness() : -1.0f;
}
public static int getMaxBuffer(int original) {
return SettingsEnum.MAX_BUFFER_INTEGER.getInt();
}
public static int getPlaybackBuffer(int original) {
return SettingsEnum.PLAYBACK_MAX_BUFFER_INTEGER.getInt();
if (sharedPreferences.contains("com.google.android.libraries.youtube.innertube.cold_config_group")) {
sharedPreferences.edit().putString("com.google.android.libraries.youtube.innertube.cold_config_group_backup", sharedPreferences.getString("com.google.android.libraries.youtube.innertube.cold_config_group", null)).remove("com.google.android.libraries.youtube.innertube.cold_config_group").apply();
}
LogHelper.debug("Settings", "setOldLayout: false");
}
*/
/*
public static int getReBuffer(int original) {
return SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.getInt();
}
public static boolean isFensterBrightnessEnabled() {
return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean();
}
*/
}

View File

@ -2,9 +2,8 @@ package app.revanced.integrations.settings;
import android.content.Context;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
public enum SettingsEnum {
@ -12,38 +11,34 @@ public enum SettingsEnum {
DEBUG_BOOLEAN("debug_xfile_enabled", false),
MANUFACTURER_OVERRIDE_STRING("override_manufacturer", null),
MODEL_OVERRIDE_STRING("override_model", null),
CODEC_OVERRIDE_BOOLEAN("override_resolution_xfile_enabled", false),
CODEC_OVERRIDE_BOOLEAN("override_resolution_xfile_enabled", true),
PREFERRED_RESOLUTION_WIFI_INTEGER("pref_video_quality_wifi", -2),
PREFERRED_RESOLUTION_MOBILE_INTEGER("pref_video_quality_mobile", -2),
PREFERRED_VIDEO_SPEED_FLOAT("pref_video_speed", -2.0f),
PREFERRED_AUTO_CAPTIONS_BOOLEAN("pref_auto_captions", false),
PREFERRED_MINIMIZED_VIDEO_PREVIEW_INTEGER("pref_minimized_video_preview", -2),
PREFERRED_AUTO_REPEAT_BOOLEAN("pref_auto_repeat", false),
PREFERRED_AUTO_REPEAT_BOOLEAN("pref_auto_repeat", true),
HOME_ADS_SHOWN_BOOLEAN("home_ads_enabled", false),
VIDEO_ADS_SHOWN_BOOLEAN("video_ads_enabled", false),
REEL_BUTTON_SHOWN_BOOLEAN("reel_button_enabled", false),
SHORTS_BUTTON_SHOWN_BOOLEAN("shorts_button_enabled", false),
CAST_BUTTON_SHOWN_BOOLEAN("cast_button_enabled", false),
CREATE_BUTTON_SHOWN_BOOLEAN("xfile_create_button_hidden", true),
SUGGESTIONS_SHOWN_BOOLEAN("info_card_suggestions_enabled", true),
INFO_CARDS_SHOWN_BOOLEAN("info_cards_enabled", true),
BRANDING_SHOWN_BOOLEAN("branding_watermark_enabled", true),
CREATE_BUTTON_SHOWN_BOOLEAN("xfile_create_button_enabled", false),
SUGGESTIONS_SHOWN_BOOLEAN("info_card_suggestions_enabled", false),
INFO_CARDS_SHOWN_BOOLEAN("info_cards_enabled", false),
BRANDING_SHOWN_BOOLEAN("branding_watermark_enabled", false),
USE_TABLET_MINIPLAYER_BOOLEAN("tablet_miniplayer", false),
CHANGE_COMMENT_LOCATION_BOOLEAN("comments_location", false),
USE_NEW_ACTIONBAR_BOOLEAN("xfile_new_actionbar", false),
USE_VERTICAL_ZOOM_TO_FIT_BOOLEAN("xfile_zoom_to_fit_vertical", false),
USE_DARK_THEME_BOOLEAN("app_theme_dark", false),
ACCESSIBILITY_SEEK_BOOLEAN("xfile_accessibility_seek_buttons", false),
USE_HDR_BRIGHTNESS_BOOLEAN("pref_hdr_autobrightness", false),
ENABLE_SWIPE_BRIGHTNESS_BOOLEAN("pref_xfenster_brightness", false),
ENABLE_SWIPE_VOLUME_BOOLEAN("pref_xfenster_volume", false),
USE_HDR_BRIGHTNESS_BOOLEAN("pref_hdr_autobrightness", true),
ENABLE_SWIPE_BRIGHTNESS_BOOLEAN("pref_xfenster_brightness", true),
ENABLE_SWIPE_VOLUME_BOOLEAN("pref_xfenster_volume", true),
SWIPE_THRESHOLD_INTEGER("pref_xfenster_swipe_threshold", 30),
SWIPE_PADDING_TOP_INTEGER("pref_xfenster_swipe_padding_top", 50),
SWIPE_USE_TABLET_MODE("pref_xfenster_tablet", false),
MAX_BUFFER_INTEGER("pref_max_buffer_ms", 120000),
PLAYBACK_MAX_BUFFER_INTEGER("pref_buffer_for_playback_ms", 2500),
MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER("pref_buffer_for_playback_after_rebuffer_ms", 5000),
OLD_STYLE_QUALITY_SETTINGS_BOOLEAN("old_style_quality_settings", true),
OLD_LAYOUT_XFILE_ENABLED_BOOLEAN("old_layout_xfile_enabled", false),
TAP_SEEKING_ENABLED_BOOLEAN("xfile_enable_tap_seeking", true),
;
@ -61,8 +56,8 @@ public enum SettingsEnum {
public static void loadSettings() {
if (loaded) return;
Context context;
if ((context = YouTubeTikTokRoot_Application.getAppContext()) != null) {
Context context = ReVancedUtils.getContext();
if (context != null) {
for (SettingsEnum setting : values()) {
Object value = null;
if (setting.name().endsWith("BOOLEAN")) {
@ -98,8 +93,8 @@ public enum SettingsEnum {
public void saveValue(Object newValue) {
loadSettings();
Context context;
if ((context = YouTubeTikTokRoot_Application.getAppContext()) != null) {
Context context = ReVancedUtils.getContext();
if (context != null) {
if (name().endsWith("BOOLEAN")) {
SharedPrefHelper.saveBoolean(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, getPath(), (Boolean) newValue);
} else if (name().endsWith("INTEGER")) {
@ -113,6 +108,7 @@ public enum SettingsEnum {
} else {
LogHelper.printException("SettingsEnum", "Setting does not end with a valid Type. Name is: " + name());
}
value = newValue;
} else {
LogHelper.printException("SettingsEnum", "Context on SaveValue is null!");
}
@ -151,11 +147,11 @@ public enum SettingsEnum {
return (Float) value;
}
private Object getDefaultValue() {
public Object getDefaultValue() {
return defaultValue;
}
private String getPath() {
public String getPath() {
return path;
}

View File

@ -1,611 +0,0 @@
package app.revanced.integrations.settings;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.videoplayer.autorepeat.AutoRepeat;
import app.revanced.integrations.videoswipecontrols.FensterGestureListener;
import app.revanced.integrations.videoplayer.settings.XReboot;
import app.revanced.integrations.utils.ScreenSizeHelper;
import app.revanced.integrations.utils.SwipeHelper;
import app.revanced.integrations.videoplayer.videourl.Copy;
import app.revanced.integrations.videoplayer.videourl.CopyWithTimeStamp;
import app.revanced.integrations.BuildConfig;
/* loaded from: classes6.dex */
public class XSettingsFragment extends PreferenceFragment {
// YouTubePlayerOverlaysLayout.overlayContext
public static Context overlayContext;
// Shell_HomeActivity.class
public static Class homeActivityClass;
private Toast toast;
private PreferenceScreen adsSettingsPreferenceScreen;
private PreferenceScreen bufferSettingsPreferenceScreen;
private Preference codecDefault;
private Preference codecHDRH;
private Preference codecHDRS;
private PreferenceScreen codecPreferenceScreen;
private Preference codecVP9;
private PreferenceScreen layoutSettingsPreferenceScreen;
private EditTextPreference manufacturerOverride;
private PreferenceScreen miscsPreferenceScreen;
private EditTextPreference modelOverride;
public SharedPreferences sharedPreferences;
private SwitchPreference tabletComments;
private SwitchPreference tabletMiniplayer;
private PreferenceScreen videoAdSettingsPreferenceScreen;
private PreferenceScreen videoSettingsPreferenceScreen;
private SwitchPreference vp9Override;
private PreferenceScreen xFensterPreferenceScreen;
private boolean Registered = false;
CharSequence[] videoQualityEntries = {"Auto", "144p", "240p", "360p", "480p", "720p", "1080p", "1440p", "2160p"};
CharSequence[] videoQualityentryValues = {"-2", "144", "240", "360", "480", "720", "1080", "1440", "2160"};
CharSequence[] minimizedVideoEntries = {"Auto", "Video only", "Video with controls"};
CharSequence[] minimizedVideoentryValues = {"-2", "0", "1"};
CharSequence[] videoSpeedEntries = {"Auto", "0.25x", "0.5x", "0.75x", "Normal", "1.25x", "1.5x", "1.75x", "2x"};
CharSequence[] videoSpeedentryValues = {"-2", "0.25", "0.5", "0.75", BuildConfig.VERSION_NAME, "1.25", "1.5", "1.75", "2.0"};
CharSequence[] buttonLocationEntries = {"None", "In player", "Under player", "Both"};
CharSequence[] buttonLocationentryValues = {"NONE", "PLAYER", "BUTTON_BAR", "BOTH"};
private long PreviousClick = 0;
private int clicks = 0;
private final int neededClicks = 5;
private boolean hiddenMenuOpened = false;
private boolean settingsInitialized = false;
// from class: app.revanced.integrations.settings.XSettingsFragment.9
// android.content.SharedPreferences.OnSharedPreferenceChangeListener
SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
if ("debug_xfile_enabled".equals(str)) {
SettingsEnum.DEBUG_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.findPreference("debug_xfile_enabled")).isChecked());
} else if ("vp9_xfile_enabled".equals(str)) {
if (((SwitchPreference) XSettingsFragment.this.codecPreferenceScreen.findPreference("vp9_xfile_enabled")).isChecked()) {
sharedPreferences.edit().putString("override_manufacturer", "samsung").apply();
sharedPreferences.edit().putString("override_model", "SM-G920F").apply();
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.setValue("samsung");
SettingsEnum.MODEL_OVERRIDE_STRING.setValue("SM-G920F");
return;
}
sharedPreferences.edit().remove("override_manufacturer").apply();
sharedPreferences.edit().remove("override_model").apply();
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.setValue(null);
SettingsEnum.MODEL_OVERRIDE_STRING.setValue(null);
} else if ("override_manufacturer".equals(str)) {
EditTextPreference editTextPreference = (EditTextPreference) XSettingsFragment.this.codecPreferenceScreen.findPreference("override_manufacturer");
if (editTextPreference != null) {
editTextPreference.setSummary(editTextPreference.getText());
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.setValue(editTextPreference.getText());
}
} else if ("override_model".equals(str)) {
EditTextPreference editTextPreference2 = (EditTextPreference) XSettingsFragment.this.codecPreferenceScreen.findPreference("override_model");
if (editTextPreference2 != null) {
editTextPreference2.setSummary(editTextPreference2.getText());
SettingsEnum.MODEL_OVERRIDE_STRING.setValue(editTextPreference2.getText());
}
} else if ("home_ads_enabled".equals(str)) {
SettingsEnum.HOME_ADS_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.adsSettingsPreferenceScreen.findPreference("home_ads_enabled")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("video_ads_enabled".equals(str)) {
SettingsEnum.VIDEO_ADS_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.adsSettingsPreferenceScreen.findPreference("video_ads_enabled")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("reel_enabled".equals(str)) {
SettingsEnum.REEL_BUTTON_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("reel_enabled")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("info_card_suggestions_enabled".equals(str)) {
SettingsEnum.SUGGESTIONS_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("info_card_suggestions_enabled")).isChecked());
} else if ("info_cards_enabled".equals(str)) {
SettingsEnum.INFO_CARDS_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("info_cards_enabled")).isChecked());
} else if ("branding_watermark_enabled".equals(str)) {
SettingsEnum.BRANDING_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("branding_watermark_enabled")).isChecked());
} else if ("cast_button_enabled".equals(str)) {
SettingsEnum.CAST_BUTTON_SHOWN_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("cast_button_enabled")).isChecked());
} else if ("tablet_miniplayer".equals(str)) {
SettingsEnum.USE_TABLET_MINIPLAYER_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("tablet_miniplayer")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("comments_location".equals(str)) {
SwitchPreference switchPreference = (SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("comments_location");
SettingsEnum.CHANGE_COMMENT_LOCATION_BOOLEAN.setValue(switchPreference.isChecked());
SwipeHelper.isTabletMode = switchPreference.isChecked();
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("xfile_create_button_hidden".equals(str)) {
SwitchPreference switchPreference = (SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("xfile_create_button_hidden");
SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.setValue(switchPreference.isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("xfile_new_actionbar".equals(str)) {
SettingsEnum.USE_NEW_ACTIONBAR_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("xfile_new_actionbar")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("xfile_zoom_to_fit_vertical".equals(str)) {
SettingsEnum.USE_VERTICAL_ZOOM_TO_FIT_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("xfile_zoom_to_fit_vertical")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("pref_minimized_video_preview".equals(str)) {
ListPreference listPreference = (ListPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("pref_minimized_video_preview");
String string = sharedPreferences.getString("pref_minimized_video_preview", "-2");
listPreference.setDefaultValue(string);
listPreference.setSummary(XSettingsFragment.this.minimizedVideoEntries[listPreference.findIndexOfValue(string)]);
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("xfile_accessibility_seek_buttons".equals(str)) {
SettingsEnum.ACCESSIBILITY_SEEK_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.layoutSettingsPreferenceScreen.findPreference("xfile_accessibility_seek_buttons")).isChecked());
} else if ("override_resolution_xfile_enabled".equals(str)) {
SettingsEnum.CODEC_OVERRIDE_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.findPreference("override_resolution_xfile_enabled")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("pref_auto_captions".equals(str)) {
SettingsEnum.PREFERRED_AUTO_CAPTIONS_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.findPreference("pref_auto_captions")).isChecked());
if (Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
} else if ("pref_preferred_video_quality_wifi".equals(str)) {
ListPreference listPreference2 = (ListPreference) XSettingsFragment.this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_wifi");
String string2 = sharedPreferences.getString("pref_preferred_video_quality_wifi", "-2");
listPreference2.setDefaultValue(string2);
listPreference2.setSummary(XSettingsFragment.this.videoQualityEntries[listPreference2.findIndexOfValue(string2)]);
SettingsEnum.PREFERRED_RESOLUTION_WIFI_INTEGER.setValue(Integer.parseInt(string2));
} else if ("pref_preferred_video_quality_mobile".equals(str)) {
ListPreference listPreference3 = (ListPreference) XSettingsFragment.this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_mobile");
String string3 = sharedPreferences.getString("pref_preferred_video_quality_mobile", "-2");
listPreference3.setDefaultValue(string3);
listPreference3.setSummary(XSettingsFragment.this.videoQualityEntries[listPreference3.findIndexOfValue(string3)]);
SettingsEnum.PREFERRED_RESOLUTION_MOBILE_INTEGER.setValue(Integer.parseInt(string3));
} else if ("pref_preferred_video_speed".equals(str)) {
ListPreference listPreference4 = (ListPreference) XSettingsFragment.this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_speed");
String string4 = sharedPreferences.getString("pref_preferred_video_speed", "-2");
listPreference4.setDefaultValue(string4);
listPreference4.setSummary(XSettingsFragment.this.videoSpeedEntries[listPreference4.findIndexOfValue(string4)]);
SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.setValue(Float.parseFloat(string4));
} else if ("pref_max_buffer_ms".equals(str)) {
EditTextPreference editTextPreference3 = (EditTextPreference) XSettingsFragment.this.bufferSettingsPreferenceScreen.findPreference("pref_max_buffer_ms");
if (editTextPreference3 != null) {
editTextPreference3.setSummary(editTextPreference3.getText());
SettingsEnum.MAX_BUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference3.getText()));
}
} else if ("pref_buffer_for_playback_ms".equals(str)) {
EditTextPreference editTextPreference4 = (EditTextPreference) XSettingsFragment.this.bufferSettingsPreferenceScreen.findPreference("pref_buffer_for_playback_ms");
if (editTextPreference4 != null) {
editTextPreference4.setSummary(editTextPreference4.getText());
SettingsEnum.PLAYBACK_MAX_BUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference4.getText()));
}
} else if ("pref_buffer_for_playback_after_rebuffer_ms".equals(str)) {
EditTextPreference editTextPreference5 = (EditTextPreference) XSettingsFragment.this.bufferSettingsPreferenceScreen.findPreference("pref_buffer_for_playback_after_rebuffer_ms");
if (editTextPreference5 != null) {
editTextPreference5.setSummary(editTextPreference5.getText());
SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference5.getText()));
}
} else if ("pref_auto_repeat_button".equals(str)) {
XSettingsFragment.this.AutoRepeatLinks();
} else if ("pref_auto_repeat".equals(str)) {
AutoRepeat.changeSelected(sharedPreferences.getBoolean("pref_auto_repeat", false), true);
} else if ("pref_copy_video_url_timestamp_button_list".equals(str)) {
CopyWithTimeStamp.refreshShouldBeShown();
} else if ("pref_copy_video_url_button_list".equals(str)) {
Copy.refreshShouldBeShown();
} else if ("pref_hdr_autobrightness".equals(str)) {
SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.miscsPreferenceScreen.findPreference("pref_hdr_autobrightness")).isChecked());
} else if ("pref_xfenster_brightness".equals(str)) {
SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.xFensterPreferenceScreen.findPreference("pref_xfenster_brightness")).isChecked());
} else if ("pref_xfenster_volume".equals(str)) {
SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.setValue(((SwitchPreference) XSettingsFragment.this.xFensterPreferenceScreen.findPreference("pref_xfenster_volume")).isChecked());
} else if ("pref_xfenster_tablet".equals(str)) {
SwipeHelper.isTabletMode = ((SwitchPreference) XSettingsFragment.this.xFensterPreferenceScreen.findPreference("pref_xfenster_tablet")).isChecked();
} else if ("pref_xfenster_swipe_threshold".equals(str)) {
EditTextPreference editTextPreference6 = (EditTextPreference) XSettingsFragment.this.xFensterPreferenceScreen.findPreference("pref_xfenster_swipe_threshold");
if (editTextPreference6 != null) {
editTextPreference6.setSummary(editTextPreference6.getText());
try {
FensterGestureListener.SWIPE_THRESHOLD = Integer.parseInt(editTextPreference6.getText());
} catch (NumberFormatException unused) {
FensterGestureListener.SWIPE_THRESHOLD = 0;
}
}
} else if ("pref_xfenster_swipe_padding_top".equals(str)) {
EditTextPreference editTextPreference7 = (EditTextPreference) XSettingsFragment.this.xFensterPreferenceScreen.findPreference("pref_xfenster_swipe_padding_top");
if (editTextPreference7 != null) {
editTextPreference7.setSummary(editTextPreference7.getText());
try {
FensterGestureListener.TOP_PADDING = Integer.parseInt(editTextPreference7.getText());
} catch (NumberFormatException unused2) {
FensterGestureListener.TOP_PADDING = 20;
}
}
} else if ("vanced_ryd_enabled".equals(str) && Settings.getContext() != null && XSettingsFragment.this.settingsInitialized) {
XReboot.RebootDialog(XSettingsFragment.this.getActivity());
}
};
static /* synthetic */ int access$308(XSettingsFragment xSettingsFragment) {
int i = xSettingsFragment.clicks;
xSettingsFragment.clicks = i + 1;
return i;
}
@SuppressLint("ResourceType")
@Override // android.preference.PreferenceFragment, android.app.Fragment
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getPreferenceManager().setSharedPreferencesName("youtube");
try {
int identifier = getResources().getIdentifier("xfile_prefs", "xml", Settings.getPackageName());
addPreferencesFromResource(identifier);
String stringByName = Settings.getStringByName(getActivity(), "quality_auto");
this.videoQualityEntries[0] = stringByName;
this.minimizedVideoEntries[0] = stringByName;
this.videoSpeedEntries[0] = stringByName;
String stringByName2 = Settings.getStringByName(getActivity(), "pref_subtitles_scale_normal");
if (stringByName2.equals("")) {
this.videoSpeedEntries[4] = "Normal";
} else {
this.videoSpeedEntries[4] = stringByName2;
}
this.minimizedVideoEntries[1] = Settings.getStringByName(getActivity(), "xfile_miniplayer_style_video");
this.minimizedVideoEntries[2] = Settings.getStringByName(getActivity(), "xfile_miniplayer_style_video_controls");
SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
this.sharedPreferences = sharedPreferences;
this.settingsInitialized = sharedPreferences.getBoolean("xfile_initialized", false);
this.sharedPreferences.registerOnSharedPreferenceChangeListener(this.listener);
this.Registered = true;
this.hiddenMenuOpened = this.sharedPreferences.getBoolean("xfile_hiddenMenu_enabled", false);
this.codecPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("codec_override");
this.videoSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("video_settings");
this.videoAdSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("video_ad_settings");
this.adsSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("ad_settings");
this.layoutSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("layout_settings");
this.bufferSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("buffer_screen");
this.miscsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("misc_screen");
this.xFensterPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("xfenster_screen");
this.vp9Override = (SwitchPreference) this.codecPreferenceScreen.findPreference("vp9_xfile_enabled");
this.manufacturerOverride = (EditTextPreference) this.codecPreferenceScreen.findPreference("override_manufacturer");
this.modelOverride = (EditTextPreference) this.codecPreferenceScreen.findPreference("override_model");
this.codecDefault = this.codecPreferenceScreen.findPreference("pref_default_override");
this.codecVP9 = this.codecPreferenceScreen.findPreference("pref_vp9_override");
this.codecHDRH = this.codecPreferenceScreen.findPreference("pref_hdrhardware_override");
this.codecHDRS = this.codecPreferenceScreen.findPreference("pref_hdrsoftware_override");
this.tabletMiniplayer = (SwitchPreference) this.layoutSettingsPreferenceScreen.findPreference("tablet_miniplayer");
this.tabletComments = (SwitchPreference) this.layoutSettingsPreferenceScreen.findPreference("comments_location");
AutoRepeatLinks();
EditTextPreference editTextPreference = this.manufacturerOverride;
editTextPreference.setSummary(editTextPreference.getText());
EditTextPreference editTextPreference2 = this.modelOverride;
editTextPreference2.setSummary(editTextPreference2.getText());
CheckHiddenMenuStatus();
final ListPreference listPreference = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_wifi");
final ListPreference listPreference2 = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_mobile");
setListPreferenceData(listPreference, true);
setListPreferenceData(listPreference2, false);
// from class: app.revanced.integrations.settings.XSettingsFragment.1
// android.preference.Preference.OnPreferenceClickListener
listPreference.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.setListPreferenceData(listPreference, true);
return false;
});
// from class: app.revanced.integrations.settings.XSettingsFragment.2
// android.preference.Preference.OnPreferenceClickListener
listPreference2.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.setListPreferenceData(listPreference2, false);
return false;
});
final ListPreference listPreference3 = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_speed");
setSpeedListPreferenceData(listPreference3);
// from class: app.revanced.integrations.settings.XSettingsFragment.3
// android.preference.Preference.OnPreferenceClickListener
listPreference3.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.setSpeedListPreferenceData(listPreference3);
return false;
});
Preference findPreference = findPreference("pref_about_field");
final String stringByName3 = Settings.getStringByName(getActivity(), "xfile_hiddenmenu_open");
final String stringByName4 = Settings.getStringByName(getActivity(), "xfile_hiddenmenu_opened");
final String str = " " + Settings.getStringByName(getActivity(), "xfile_hiddenmenu_needed");
// from class: app.revanced.integrations.settings.XSettingsFragment.4
// android.preference.Preference.OnPreferenceClickListener
findPreference.setOnPreferenceClickListener(preference -> {
if (XSettingsFragment.this.hiddenMenuOpened) {
if (XSettingsFragment.this.toast != null) {
XSettingsFragment.this.toast.cancel();
}
XSettingsFragment.this.toast = Toast.makeText(Settings.getContext(), stringByName3, Toast.LENGTH_SHORT);
XSettingsFragment.this.toast.show();
return false;
}
long currentTimeMillis = System.currentTimeMillis() - XSettingsFragment.this.PreviousClick;
XSettingsFragment.this.PreviousClick = System.currentTimeMillis();
if (currentTimeMillis / 1000 < 2) {
XSettingsFragment.access$308(XSettingsFragment.this);
int i = XSettingsFragment.this.neededClicks - XSettingsFragment.this.clicks;
if (XSettingsFragment.this.toast != null) {
XSettingsFragment.this.toast.cancel();
}
if (i <= 0) {
XSettingsFragment.this.toast = Toast.makeText(Settings.getContext(), stringByName4, Toast.LENGTH_SHORT);
XSettingsFragment.this.hiddenMenuOpened = true;
XSettingsFragment.this.sharedPreferences.edit().putBoolean("xfile_hiddenMenu_enabled", true).apply();
XSettingsFragment.this.CheckHiddenMenuStatus();
} else {
XSettingsFragment xSettingsFragment = XSettingsFragment.this;
Context context = Settings.getContext();
xSettingsFragment.toast = Toast.makeText(context, i + str, Toast.LENGTH_SHORT);
}
XSettingsFragment.this.toast.show();
} else {
XSettingsFragment.this.clicks = 0;
}
return false;
});
// from class: app.revanced.integrations.settings.XSettingsFragment.5
// android.preference.Preference.OnPreferenceClickListener
this.codecDefault.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
// from class: app.revanced.integrations.settings.XSettingsFragment.6
// android.preference.Preference.OnPreferenceClickListener
this.codecVP9.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
// from class: app.revanced.integrations.settings.XSettingsFragment.7
// android.preference.Preference.OnPreferenceClickListener
this.codecHDRH.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
// from class: app.revanced.integrations.settings.XSettingsFragment.8
// android.preference.Preference.OnPreferenceClickListener
this.codecHDRS.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
if (ScreenSizeHelper.isTablet(YouTubeTikTokRoot_Application.getAppContext())) {
if (this.layoutSettingsPreferenceScreen.findPreference("tablet_miniplayer") != null) {
this.layoutSettingsPreferenceScreen.removePreference(this.tabletMiniplayer);
}
if (this.layoutSettingsPreferenceScreen.findPreference("comments_location") != null) {
this.layoutSettingsPreferenceScreen.removePreference(this.tabletComments);
}
}
this.sharedPreferences.edit().putBoolean("xfile_initialized", true);
this.settingsInitialized = true;
} catch (Throwable th) {
LogHelper.printException("XSettingsFragment", "Unable to retrieve resourceId for xfile_prefs", th);
}
}
/* JADX INFO: Access modifiers changed from: private */
public void ChangeCodec(Preference preference) {
String key = preference.getKey();
char c = 65535;
switch (key.hashCode()) {
case -1420246871:
if (key.equals("pref_hdrhardware_override")) {
c = 0;
break;
}
break;
case -350518296:
if (key.equals("pref_vp9_override")) {
c = 1;
break;
}
break;
case 1613958090:
if (key.equals("pref_hdrsoftware_override")) {
c = 2;
break;
}
break;
}
String str = "samsung";
String str2 = null;
switch (c) {
case 0:
str2 = "SM-G955W";
break;
case 1:
str2 = "SM-G920F";
break;
case 2:
str = "Google";
str2 = "Pixel XL";
break;
default:
str = null;
break;
}
if (str != null) {
this.sharedPreferences.edit().putString("override_manufacturer", str).apply();
} else {
this.sharedPreferences.edit().remove("override_manufacturer").apply();
}
if (str2 != null) {
this.sharedPreferences.edit().putString("override_model", str2).apply();
} else {
this.sharedPreferences.edit().remove("override_model").apply();
}
this.manufacturerOverride.setText(str);
this.modelOverride.setText(str2);
EditTextPreference editTextPreference = this.manufacturerOverride;
editTextPreference.setSummary(editTextPreference.getText());
EditTextPreference editTextPreference2 = this.modelOverride;
editTextPreference2.setSummary(editTextPreference2.getText());
}
/* JADX INFO: Access modifiers changed from: private */
public void CheckHiddenMenuStatus() {
if (this.hiddenMenuOpened) {
if (this.codecPreferenceScreen.findPreference("vp9_xfile_enabled") != null) {
this.codecPreferenceScreen.removePreference(this.vp9Override);
}
if (this.codecPreferenceScreen.findPreference("override_manufacturer") == null) {
this.codecPreferenceScreen.addPreference(this.manufacturerOverride);
EditTextPreference editTextPreference = this.manufacturerOverride;
editTextPreference.setSummary(editTextPreference.getText());
}
if (this.codecPreferenceScreen.findPreference("override_model") == null) {
this.codecPreferenceScreen.addPreference(this.modelOverride);
EditTextPreference editTextPreference2 = this.modelOverride;
editTextPreference2.setSummary(editTextPreference2.getText());
}
if (this.codecPreferenceScreen.findPreference("pref_default_override") == null) {
this.codecPreferenceScreen.addPreference(this.codecDefault);
// from class: app.revanced.integrations.settings.XSettingsFragment.10
// android.preference.Preference.OnPreferenceClickListener
this.codecDefault.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
}
if (this.codecPreferenceScreen.findPreference("pref_vp9_override") == null) {
this.codecPreferenceScreen.addPreference(this.codecVP9);
// from class: app.revanced.integrations.settings.XSettingsFragment.11
// android.preference.Preference.OnPreferenceClickListener
this.codecVP9.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
}
if (this.codecPreferenceScreen.findPreference("pref_hdrhardware_override") == null) {
this.codecPreferenceScreen.addPreference(this.codecHDRH);
// from class: app.revanced.integrations.settings.XSettingsFragment.12
// android.preference.Preference.OnPreferenceClickListener
this.codecHDRH.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
}
if (this.codecPreferenceScreen.findPreference("pref_hdrsoftware_override") == null) {
this.codecPreferenceScreen.addPreference(this.codecHDRS);
// from class: app.revanced.integrations.settings.XSettingsFragment.13
// android.preference.Preference.OnPreferenceClickListener
this.codecHDRS.setOnPreferenceClickListener(preference -> {
XSettingsFragment.this.ChangeCodec(preference);
return false;
});
return;
}
return;
}
if (this.codecPreferenceScreen.findPreference("vp9_xfile_enabled") == null) {
this.codecPreferenceScreen.addPreference(this.vp9Override);
}
if (this.codecPreferenceScreen.findPreference("override_manufacturer") != null) {
this.codecPreferenceScreen.removePreference(this.manufacturerOverride);
}
if (this.codecPreferenceScreen.findPreference("override_model") != null) {
this.codecPreferenceScreen.removePreference(this.modelOverride);
}
if (this.codecPreferenceScreen.findPreference("pref_default_override") != null) {
this.codecPreferenceScreen.removePreference(this.codecDefault);
}
if (this.codecPreferenceScreen.findPreference("pref_vp9_override") != null) {
this.codecPreferenceScreen.removePreference(this.codecVP9);
}
if (this.codecPreferenceScreen.findPreference("pref_hdrhardware_override") != null) {
this.codecPreferenceScreen.removePreference(this.codecHDRH);
}
if (this.codecPreferenceScreen.findPreference("pref_hdrsoftware_override") != null) {
this.codecPreferenceScreen.removePreference(this.codecHDRS);
}
}
/* JADX INFO: Access modifiers changed from: private */
public void AutoRepeatLinks() {
boolean z = this.sharedPreferences.getBoolean("pref_auto_repeat_button", false);
SwitchPreference switchPreference = (SwitchPreference) this.miscsPreferenceScreen.findPreference("pref_auto_repeat");
if (switchPreference == null) {
return;
}
if (z) {
switchPreference.setEnabled(false);
AutoRepeat.isAutoRepeatBtnEnabled = true;
return;
}
switchPreference.setEnabled(true);
AutoRepeat.isAutoRepeatBtnEnabled = false;
}
protected void setListPreferenceData(ListPreference listPreference, boolean z) {
listPreference.setEntries(this.videoQualityEntries);
listPreference.setEntryValues(this.videoQualityentryValues);
String string = this.sharedPreferences.getString(z ? "pref_preferred_video_quality_wifi" : "pref_preferred_video_quality_mobile", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.videoQualityEntries[listPreference.findIndexOfValue(string)]);
}
protected void setMinimizedListPreferenceData(ListPreference listPreference) {
listPreference.setEntries(this.minimizedVideoEntries);
listPreference.setEntryValues(this.minimizedVideoentryValues);
String string = this.sharedPreferences.getString("pref_minimized_video_preview", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.minimizedVideoEntries[listPreference.findIndexOfValue(string)]);
}
protected void setSpeedListPreferenceData(ListPreference listPreference) {
listPreference.setEntries(this.videoSpeedEntries);
listPreference.setEntryValues(this.videoSpeedentryValues);
String string = this.sharedPreferences.getString("pref_preferred_video_speed", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.videoSpeedEntries[listPreference.findIndexOfValue(string)]);
}
protected void setCopyLinkListPreferenceData(ListPreference listPreference, String str) {
listPreference.setEntries(this.buttonLocationEntries);
listPreference.setEntryValues(this.buttonLocationentryValues);
String string = this.sharedPreferences.getString(str, "NONE");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.buttonLocationEntries[listPreference.findIndexOfValue(string)]);
}
private void RestartApplication() {
Intent launchIntentForPackage = getActivity().getBaseContext().getPackageManager().getLaunchIntentForPackage(getActivity().getBaseContext().getPackageName());
launchIntentForPackage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(launchIntentForPackage);
getActivity().finish();
}
@Override // android.preference.PreferenceFragment, android.app.Fragment
public void onDestroy() {
if (this.Registered) {
this.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this.listener);
this.Registered = false;
}
super.onDestroy();
}
}

View File

@ -1,4 +1,4 @@
package app.revanced.integrations.ryd;
package app.revanced.integrations.settingsmenu;
import static app.revanced.integrations.ryd.RYDSettings.PREFERENCES_KEY_RYD_ENABLED;
import static app.revanced.integrations.ryd.RYDSettings.PREFERENCES_KEY_RYD_HINT_SHOWN;
@ -15,11 +15,12 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import app.revanced.integrations.ryd.ReturnYouTubeDislikes;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.SharedPrefHelper;
public class RYDFragment extends PreferenceFragment {
public class RYDSettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@ -0,0 +1,421 @@
package app.revanced.integrations.settingsmenu;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Process;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.videoplayer.autorepeat.AutoRepeat;
import app.revanced.integrations.videoswipecontrols.SwipeGestureListener;
import app.revanced.integrations.utils.ScreenSizeHelper;
import app.revanced.integrations.videoplayer.videourl.Copy;
import app.revanced.integrations.videoplayer.videourl.CopyWithTimeStamp;
public class ReVancedSettingsFragment extends PreferenceFragment {
public static Context overlayContext;
public static Class homeActivityClass;
private SharedPreferences sharedPreferences;
private PreferenceScreen adsSettingsPreferenceScreen;
private PreferenceScreen bufferSettingsPreferenceScreen;
private Preference codecDefault;
private PreferenceScreen codecPreferenceScreen;
private Preference codecVP9;
private PreferenceScreen layoutSettingsPreferenceScreen;
private EditTextPreference manufacturerOverride;
private PreferenceScreen miscsPreferenceScreen;
private EditTextPreference modelOverride;
private SwitchPreference tabletMiniplayer;
private PreferenceScreen videoAdSettingsPreferenceScreen;
private PreferenceScreen videoSettingsPreferenceScreen;
private SwitchPreference vp9Override;
private PreferenceScreen xSwipeControlPreferenceScreen;
private boolean Registered = false;
private boolean settingsInitialized = false;
private final CharSequence[] videoQualityEntries = {"Auto", "144p", "240p", "360p", "480p", "720p", "1080p", "1440p", "2160p"};
private final CharSequence[] videoQualityentryValues = {"-2", "144", "240", "360", "480", "720", "1080", "1440", "2160"};
private final CharSequence[] minimizedVideoEntries = {"Auto", "Video only", "Video with controls"};
private final CharSequence[] minimizedVideoentryValues = {"-2", "0", "1"};
private final CharSequence[] videoSpeedEntries = {"Auto", "0.25x", "0.5x", "0.75x", "Normal", "1.25x", "1.5x", "1.75x", "2x", "3x", "4x", "5x"};
private final CharSequence[] videoSpeedentryValues = {"-2", "0.25", "0.5", "0.75", "1.0", "1.25", "1.5", "1.75", "2.0", "3.0", "4.0", "5.0"};
private final CharSequence[] buttonLocationEntries = {"None", "In player", "Under player", "Both"};
private final CharSequence[] buttonLocationentryValues = {"NONE", "PLAYER", "BUTTON_BAR", "BOTH"};
SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
if (str.equals(SettingsEnum.DEBUG_BOOLEAN.getPath())) {
SettingsEnum.DEBUG_BOOLEAN.setValue(((SwitchPreference) findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.CODEC_OVERRIDE_BOOLEAN.getPath())) {
if (((SwitchPreference) codecPreferenceScreen.findPreference(str)).isChecked()) {
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.saveValue("samsung");
SettingsEnum.MODEL_OVERRIDE_STRING.saveValue("SM-G920F");
} else {
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.saveValue(null);
SettingsEnum.MODEL_OVERRIDE_STRING.saveValue(null);
}
} else if (str.equals(SettingsEnum.MANUFACTURER_OVERRIDE_STRING.getPath())) {
EditTextPreference editTextPreference = (EditTextPreference) codecPreferenceScreen.findPreference(str);
if (editTextPreference != null) {
editTextPreference.setSummary(editTextPreference.getText());
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.setValue(editTextPreference.getText());
}
} else if (str.equals(SettingsEnum.MODEL_OVERRIDE_STRING.getPath())) {
EditTextPreference editTextPreference2 = (EditTextPreference) codecPreferenceScreen.findPreference(str);
if (editTextPreference2 != null) {
editTextPreference2.setSummary(editTextPreference2.getText());
SettingsEnum.MODEL_OVERRIDE_STRING.setValue(editTextPreference2.getText());
}
} else if (str.equals(SettingsEnum.HOME_ADS_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.HOME_ADS_SHOWN_BOOLEAN.setValue(((SwitchPreference) adsSettingsPreferenceScreen.findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.VIDEO_ADS_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.VIDEO_ADS_SHOWN_BOOLEAN.setValue(((SwitchPreference) adsSettingsPreferenceScreen.findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.REEL_BUTTON_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.REEL_BUTTON_SHOWN_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.SUGGESTIONS_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.SUGGESTIONS_SHOWN_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.INFO_CARDS_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.INFO_CARDS_SHOWN_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.BRANDING_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.BRANDING_SHOWN_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.CAST_BUTTON_SHOWN_BOOLEAN.getPath())) {
SettingsEnum.CAST_BUTTON_SHOWN_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.USE_TABLET_MINIPLAYER_BOOLEAN.getPath())) {
SettingsEnum.USE_TABLET_MINIPLAYER_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.getPath())) {
SwitchPreference switchPreference = (SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str);
SettingsEnum.CREATE_BUTTON_SHOWN_BOOLEAN.setValue(switchPreference.isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.USE_NEW_ACTIONBAR_BOOLEAN.getPath())) {
SettingsEnum.USE_NEW_ACTIONBAR_BOOLEAN.setValue(((SwitchPreference) layoutSettingsPreferenceScreen.findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.PREFERRED_MINIMIZED_VIDEO_PREVIEW_INTEGER.getPath())) {
ListPreference listPreference = (ListPreference) layoutSettingsPreferenceScreen.findPreference(str);
int index = SettingsEnum.PREFERRED_MINIMIZED_VIDEO_PREVIEW_INTEGER.getInt();
listPreference.setDefaultValue(SettingsEnum.PREFERRED_MINIMIZED_VIDEO_PREVIEW_INTEGER.getDefaultValue());
listPreference.setSummary(minimizedVideoEntries[listPreference.findIndexOfValue(String.valueOf(index))]);
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.CODEC_OVERRIDE_BOOLEAN.getPath())) {
SettingsEnum.CODEC_OVERRIDE_BOOLEAN.setValue(((SwitchPreference) findPreference(str)).isChecked());
if (ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(getActivity());
}
} else if (str.equals(SettingsEnum.PREFERRED_RESOLUTION_WIFI_INTEGER.getPath())) {
ListPreference listPreference2 = (ListPreference) videoSettingsPreferenceScreen.findPreference(str);
int index = SettingsEnum.PREFERRED_RESOLUTION_WIFI_INTEGER.getInt();
listPreference2.setDefaultValue(index);
listPreference2.setSummary(videoQualityEntries[listPreference2.findIndexOfValue(String.valueOf(index))]);
SettingsEnum.PREFERRED_RESOLUTION_WIFI_INTEGER.setValue(index);
} else if (str.equals(SettingsEnum.PREFERRED_RESOLUTION_MOBILE_INTEGER.getPath())) {
ListPreference listPreference2 = (ListPreference) videoSettingsPreferenceScreen.findPreference(str);
int index = SettingsEnum.PREFERRED_RESOLUTION_MOBILE_INTEGER.getInt();
listPreference2.setDefaultValue(index);
listPreference2.setSummary(videoQualityEntries[listPreference2.findIndexOfValue(String.valueOf(index))]);
SettingsEnum.PREFERRED_RESOLUTION_MOBILE_INTEGER.setValue(index);
} else if (str.equals(SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.getPath())) {
ListPreference listPreference4 = (ListPreference) videoSettingsPreferenceScreen.findPreference(str);
Float value = SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.getFloat();
listPreference4.setDefaultValue(value);
listPreference4.setSummary(videoSpeedEntries[listPreference4.findIndexOfValue(String.valueOf(value))]);
SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.setValue(value);
} else if (str.equals(SettingsEnum.MAX_BUFFER_INTEGER.getPath())) {
EditTextPreference editTextPreference3 = (EditTextPreference) bufferSettingsPreferenceScreen.findPreference(str);
if (editTextPreference3 != null) {
editTextPreference3.setSummary(editTextPreference3.getText());
SettingsEnum.MAX_BUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference3.getText()));
}
} else if (str.equals(SettingsEnum.PLAYBACK_MAX_BUFFER_INTEGER.getPath())) {
EditTextPreference editTextPreference4 = (EditTextPreference) ReVancedSettingsFragment.this.bufferSettingsPreferenceScreen.findPreference(str);
if (editTextPreference4 != null) {
editTextPreference4.setSummary(editTextPreference4.getText());
SettingsEnum.PLAYBACK_MAX_BUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference4.getText()));
}
} else if (str.equals(SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.getPath())) {
EditTextPreference editTextPreference5 = (EditTextPreference) ReVancedSettingsFragment.this.bufferSettingsPreferenceScreen.findPreference(str);
if (editTextPreference5 != null) {
editTextPreference5.setSummary(editTextPreference5.getText());
SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference5.getText()));
}
} else if (str.equals(SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.getPath())) {
SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) miscsPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getPath())) {
SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) xSwipeControlPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getPath())) {
SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.setValue(((SwitchPreference) xSwipeControlPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.SWIPE_USE_TABLET_MODE.getPath())) {
SettingsEnum.SWIPE_USE_TABLET_MODE.setValue(((SwitchPreference) xSwipeControlPreferenceScreen.findPreference(str)).isChecked());
} else if (str.equals(SettingsEnum.SWIPE_THRESHOLD_INTEGER.getPath())) {
EditTextPreference editTextPreference6 = (EditTextPreference) xSwipeControlPreferenceScreen.findPreference(str);
if (editTextPreference6 != null) {
int val = 0;
editTextPreference6.setSummary(editTextPreference6.getText());
try {
val = Integer.parseInt(editTextPreference6.getText());
} catch (NumberFormatException unused) {
val = 0;
}
SwipeGestureListener.SWIPE_THRESHOLD = val;
SettingsEnum.SWIPE_THRESHOLD_INTEGER.setValue(val);
}
} else if (str.equals(SettingsEnum.SWIPE_PADDING_TOP_INTEGER.getPath())) {
EditTextPreference editTextPreference6 = (EditTextPreference) xSwipeControlPreferenceScreen.findPreference(str);
if (editTextPreference6 != null) {
int val = 0;
editTextPreference6.setSummary(editTextPreference6.getText());
try {
val = Integer.parseInt(editTextPreference6.getText());
} catch (NumberFormatException unused) {
val = 0;
}
SwipeGestureListener.TOP_PADDING = val;
SettingsEnum.SWIPE_PADDING_TOP_INTEGER.setValue(val);
}
} else if ("vanced_ryd_enabled".equals(str) && ReVancedUtils.getContext() != null && settingsInitialized) {
rebootDialog(ReVancedSettingsFragment.this.getActivity());
} else if (str.equals("pref_auto_repeat_button")) {
AutoRepeatLinks();
} else if ("pref_auto_repeat".equals(str)) {
AutoRepeat.changeSelected(sharedPreferences.getBoolean("pref_auto_repeat", false), true);
} else if ("pref_copy_video_url_timestamp_button_list".equals(str)) {
CopyWithTimeStamp.refreshShouldBeShown();
} else if ("pref_copy_video_url_button_list".equals(str)) {
Copy.refreshShouldBeShown();
}
};
@SuppressLint("ResourceType")
@Override // android.preference.PreferenceFragment, android.app.Fragment
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getPreferenceManager().setSharedPreferencesName("youtube");
try {
int identifier = getResources().getIdentifier("xfile_prefs", "xml", getPackageName());
addPreferencesFromResource(identifier);
String stringByName = ReVancedUtils.getStringByName(getActivity(), "quality_auto");
this.videoQualityEntries[0] = stringByName;
this.minimizedVideoEntries[0] = stringByName;
this.videoSpeedEntries[0] = stringByName;
String stringByName2 = ReVancedUtils.getStringByName(getActivity(), "pref_subtitles_scale_normal");
if (stringByName2.equals("")) {
this.videoSpeedEntries[4] = "Normal";
} else {
this.videoSpeedEntries[4] = stringByName2;
}
this.minimizedVideoEntries[1] = ReVancedUtils.getStringByName(getActivity(), "xfile_miniplayer_style_video");
this.minimizedVideoEntries[2] = ReVancedUtils.getStringByName(getActivity(), "xfile_miniplayer_style_video_controls");
SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
this.sharedPreferences = sharedPreferences;
this.settingsInitialized = sharedPreferences.getBoolean("xfile_initialized", false);
this.sharedPreferences.registerOnSharedPreferenceChangeListener(this.listener);
this.Registered = true;
this.codecPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("codec_override");
this.videoSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("video_settings");
this.videoAdSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("video_ad_settings");
this.adsSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("ad_settings");
this.layoutSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("layout_settings");
this.bufferSettingsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("buffer_screen");
this.miscsPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("misc_screen");
this.xSwipeControlPreferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("xfenster_screen");
this.vp9Override = (SwitchPreference) this.codecPreferenceScreen.findPreference("vp9_xfile_enabled");
this.manufacturerOverride = (EditTextPreference) this.codecPreferenceScreen.findPreference("override_manufacturer");
this.modelOverride = (EditTextPreference) this.codecPreferenceScreen.findPreference("override_model");
this.codecDefault = this.codecPreferenceScreen.findPreference("pref_default_override");
this.codecVP9 = this.codecPreferenceScreen.findPreference("pref_vp9_override");
this.tabletMiniplayer = (SwitchPreference) this.layoutSettingsPreferenceScreen.findPreference("tablet_miniplayer");
AutoRepeatLinks();
EditTextPreference editTextPreference = this.manufacturerOverride;
editTextPreference.setSummary(editTextPreference.getText());
EditTextPreference editTextPreference2 = this.modelOverride;
editTextPreference2.setSummary(editTextPreference2.getText());
final ListPreference listPreference = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_wifi");
final ListPreference listPreference2 = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_quality_mobile");
setListPreferenceData(listPreference, true);
setListPreferenceData(listPreference2, false);
listPreference.setOnPreferenceClickListener(preference -> {
ReVancedSettingsFragment.this.setListPreferenceData(listPreference, true);
return false;
});
listPreference2.setOnPreferenceClickListener(preference -> {
ReVancedSettingsFragment.this.setListPreferenceData(listPreference2, false);
return false;
});
final ListPreference listPreference3 = (ListPreference) this.videoSettingsPreferenceScreen.findPreference("pref_preferred_video_speed");
setSpeedListPreferenceData(listPreference3);
listPreference3.setOnPreferenceClickListener(preference -> {
ReVancedSettingsFragment.this.setSpeedListPreferenceData(listPreference3);
return false;
});
Preference findPreference = findPreference("pref_about_field");
this.codecDefault.setOnPreferenceClickListener(preference -> {
ReVancedSettingsFragment.this.ChangeCodec(preference);
return false;
});
this.codecVP9.setOnPreferenceClickListener(preference -> {
ReVancedSettingsFragment.this.ChangeCodec(preference);
return false;
});
if (ScreenSizeHelper.isTablet(ReVancedUtils.getContext())) {
if (this.layoutSettingsPreferenceScreen.findPreference("tablet_miniplayer") != null) {
this.layoutSettingsPreferenceScreen.removePreference(this.tabletMiniplayer);
}
}
this.sharedPreferences.edit().putBoolean("xfile_initialized", true);
this.settingsInitialized = true;
} catch (Throwable th) {
LogHelper.printException("XSettingsFragment", "Unable to retrieve resourceId for xfile_prefs", th);
}
}
@Override // android.preference.PreferenceFragment, android.app.Fragment
public void onDestroy() {
if (this.Registered) {
this.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this.listener);
this.Registered = false;
}
super.onDestroy();
}
protected void setListPreferenceData(ListPreference listPreference, boolean z) {
listPreference.setEntries(this.videoQualityEntries);
listPreference.setEntryValues(this.videoQualityentryValues);
String string = this.sharedPreferences.getString(z ? "pref_preferred_video_quality_wifi" : "pref_preferred_video_quality_mobile", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.videoQualityEntries[listPreference.findIndexOfValue(string)]);
}
protected void setMinimizedListPreferenceData(ListPreference listPreference) {
listPreference.setEntries(this.minimizedVideoEntries);
listPreference.setEntryValues(this.minimizedVideoentryValues);
String string = this.sharedPreferences.getString("pref_minimized_video_preview", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.minimizedVideoEntries[listPreference.findIndexOfValue(string)]);
}
protected void setSpeedListPreferenceData(ListPreference listPreference) {
listPreference.setEntries(this.videoSpeedEntries);
listPreference.setEntryValues(this.videoSpeedentryValues);
String string = this.sharedPreferences.getString("pref_preferred_video_speed", "-2");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.videoSpeedEntries[listPreference.findIndexOfValue(string)]);
}
protected void setCopyLinkListPreferenceData(ListPreference listPreference, String str) {
listPreference.setEntries(this.buttonLocationEntries);
listPreference.setEntryValues(this.buttonLocationentryValues);
String string = this.sharedPreferences.getString(str, "NONE");
if (listPreference.getValue() == null) {
listPreference.setValue(string);
}
listPreference.setSummary(this.buttonLocationEntries[listPreference.findIndexOfValue(string)]);
}
private String getPackageName() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
if (context == null) {
LogHelper.printException("Settings", "Context is null, returning com.google.android.youtube!");
return "com.google.android.youtube";
}
String PACKAGE_NAME = context.getPackageName();
LogHelper.debug("Settings", "getPackageName: " + PACKAGE_NAME);
return PACKAGE_NAME;
}
private void ChangeCodec(Preference preference) {
String manufacturer = null;
String model = null;
String key = preference.getKey();
if (key.equals("pref_vp9_override")) {
manufacturer = "samsung";
model = "SM-G920F";
}
SettingsEnum.MANUFACTURER_OVERRIDE_STRING.saveValue(manufacturer);
SettingsEnum.MODEL_OVERRIDE_STRING.saveValue(model);
manufacturerOverride.setText(manufacturer);
modelOverride.setText(model);
EditTextPreference editTextPreference = this.manufacturerOverride;
editTextPreference.setSummary(editTextPreference.getText());
EditTextPreference editTextPreference2 = this.modelOverride;
editTextPreference2.setSummary(editTextPreference2.getText());
}
private void AutoRepeatLinks() {
boolean z = this.sharedPreferences.getBoolean("pref_auto_repeat_button", false);
SwitchPreference switchPreference = (SwitchPreference) this.miscsPreferenceScreen.findPreference("pref_auto_repeat");
if (switchPreference == null) {
return;
}
if (z) {
switchPreference.setEnabled(false);
AutoRepeat.isAutoRepeatBtnEnabled = true;
return;
}
switchPreference.setEnabled(true);
AutoRepeat.isAutoRepeatBtnEnabled = false;
}
private void reboot(Activity activity, Class homeActivityClass) {
int intent;
intent = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
((AlarmManager) activity.getSystemService(Context.ALARM_SERVICE)).setExact(AlarmManager.ELAPSED_REALTIME, 1500L, PendingIntent.getActivity(activity, 0, new Intent(activity, homeActivityClass), intent));
Process.killProcess(Process.myPid());
}
private void rebootDialog(final Activity activity) {
new AlertDialog.Builder(activity).setMessage(ReVancedUtils.getStringByName(activity, "pref_refresh_config")).setPositiveButton(ReVancedUtils.getStringByName(activity, "in_app_update_restart_button"), (dialog, id) -> reboot(activity, ReVancedSettingsFragment.homeActivityClass)).setNegativeButton(ReVancedUtils.getStringByName(activity, "sign_in_cancel"), null).show();
}
}

View File

@ -1,4 +1,4 @@
package app.revanced.integrations.sponsorblock;
package app.revanced.integrations.settingsmenu;
import static app.revanced.integrations.sponsorblock.SponsorBlockSettings.DEFAULT_API_URL;
import static app.revanced.integrations.sponsorblock.SponsorBlockSettings.PREFERENCES_KEY_ADJUST_NEW_SEGMENT_STEP;
@ -50,12 +50,14 @@ import java.util.ArrayList;
import app.revanced.integrations.adremover.whitelist.WhitelistType;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.sponsorblock.SponsorBlockSettings;
import app.revanced.integrations.sponsorblock.SponsorBlockUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.sponsorblock.objects.EditTextListPreference;
import app.revanced.integrations.sponsorblock.requests.SBRequester;
@SuppressWarnings({"unused", "deprecation"}) // injected
public class SponsorBlockPreferenceFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public class SponsorBlockSettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public static final DecimalFormat FORMATTER = new DecimalFormat("#,###,###");
public static final String SAVED_TEMPLATE = "%dh %.1f %s";
private static final APIURLChangeListener API_URL_CHANGE_LISTENER = new APIURLChangeListener();

View File

@ -1,4 +1,4 @@
package app.revanced.integrations.theme;
package app.revanced.integrations.settingsmenu;
import android.app.Activity;
import android.content.Context;
@ -9,24 +9,19 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.settings.XSettingsFragment;
import app.revanced.integrations.ryd.RYDFragment;
import app.revanced.integrations.sponsorblock.SponsorBlockPreferenceFragment;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.ThemeHelper;
/* loaded from: classes6.dex */
public class XSettingActivity extends Activity {
private static Context context;
boolean currentTheme;
private boolean currentTheme;
@Override // android.app.Activity
protected void onCreate(Bundle bundle) {
boolean isDarkTheme = ThemeHelper.isDarkTheme();
this.currentTheme = isDarkTheme;
if (isDarkTheme) {
this.currentTheme = ThemeHelper.isDarkTheme();
if (currentTheme) {
LogHelper.debug("XSettingsActivity", "set Theme.YouTube.Settings.Dark");
setTheme(getIdentifier("Theme.YouTube.Settings.Dark", "style"));
} else {
@ -39,17 +34,50 @@ public class XSettingActivity extends Activity {
String dataString = getIntent().getDataString();
if (dataString.equalsIgnoreCase("sponsorblock_settings")) {
trySetTitle(getIdentifier("sb_settings", "string"));
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new SponsorBlockPreferenceFragment()).commit();
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new SponsorBlockSettingsFragment()).commit();
} else if (dataString.equalsIgnoreCase("ryd_settings")) {
trySetTitle(getIdentifier("vanced_ryd_settings_title", "string"));
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new RYDFragment()).commit();
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new RYDSettingsFragment()).commit();
} else {
trySetTitle(getIdentifier("xfile_settings", "string"));
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new XSettingsFragment()).commit();
getFragmentManager().beginTransaction().replace(getIdentifier("xsettings_fragments", "id"), new ReVancedSettingsFragment()).commit();
}
context = getApplicationContext();
}
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 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);
@ -81,45 +109,4 @@ public class XSettingActivity extends Activity {
}
}
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 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 = YouTubeTikTokRoot_Application.getAppContext();
return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName());
}
public static Context getAppContext() {
Context context2 = context;
if (context2 != null) {
return context2;
}
LogHelper.printException("WatchWhileActivity", "Context is null!");
return null;
}
}

View File

@ -16,8 +16,6 @@ import android.os.Looper;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@ -30,6 +28,7 @@ import app.revanced.integrations.sponsorblock.player.VideoInformation;
import app.revanced.integrations.adremover.whitelist.Whitelist;
import app.revanced.integrations.sponsorblock.objects.SponsorSegment;
import app.revanced.integrations.sponsorblock.requests.SBRequester;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
@SuppressLint({"LongLogTag"})
@ -66,7 +65,7 @@ public class PlayerController {
return;
}
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException("PlayerController", "context is null");
return;
@ -274,7 +273,7 @@ public class PlayerController {
private static void sendViewRequestAsync(final long millis, final SponsorSegment segment) {
if (segment.category != SponsorBlockSettings.SegmentInfo.UNSUBMITTED) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (context != null) {
long newSkippedTime = skippedTime + (segment.end - segment.start);
SharedPrefHelper.saveInt(context, SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK, SponsorBlockSettings.PREFERENCES_KEY_SKIPPED_SEGMENTS, skippedSegments + 1);

View File

@ -8,14 +8,13 @@ import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.lang.ref.WeakReference;
import static app.revanced.integrations.sponsorblock.PlayerController.getCurrentVideoLength;
import static app.revanced.integrations.sponsorblock.PlayerController.getLastKnownVideoTime;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public class ShieldButton {
static RelativeLayout _youtubeControlsLayout;
@ -101,16 +100,16 @@ public class ShieldButton {
//region Helpers
private static int getIdentifier(String name, String defType) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return context.getResources().getIdentifier(name, defType, context.getPackageName());
}
private static int getInteger(String name) {
return YouTubeTikTokRoot_Application.getAppContext().getResources().getInteger(getIdentifier(name, "integer"));
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(name, "integer"));
}
private static Animation getAnimation(String name) {
return AnimationUtils.loadAnimation(YouTubeTikTokRoot_Application.getAppContext(), getIdentifier(name, "anim"));
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(name, "anim"));
}
//endregion
}

View File

@ -6,10 +6,9 @@ import android.util.DisplayMetrics;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.sponsorblock.objects.SponsorSegment;
import app.revanced.integrations.utils.ReVancedUtils;
import static app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView.hideSkipButton;
import static app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView.showSkipButton;
@ -36,7 +35,7 @@ public class SkipSegmentView {
}
lastNotifiedSegment = segment;
String skipMessage = segment.category.skipMessage.toString();
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (VERBOSE)
LogHelper.debug("SkipSegmentView", String.format("notifySkipped; message=%s", skipMessage));

View File

@ -7,8 +7,8 @@ import static app.revanced.integrations.sponsorblock.PlayerController.getCurrent
import static app.revanced.integrations.sponsorblock.PlayerController.getCurrentVideoLength;
import static app.revanced.integrations.sponsorblock.PlayerController.getLastKnownVideoTime;
import static app.revanced.integrations.sponsorblock.PlayerController.sponsorSegmentsOfCurrentVideo;
import static app.revanced.integrations.sponsorblock.SponsorBlockPreferenceFragment.FORMATTER;
import static app.revanced.integrations.sponsorblock.SponsorBlockPreferenceFragment.SAVED_TEMPLATE;
import static app.revanced.integrations.settingsmenu.SponsorBlockSettingsFragment.FORMATTER;
import static app.revanced.integrations.settingsmenu.SponsorBlockSettingsFragment.SAVED_TEMPLATE;
import static app.revanced.integrations.sponsorblock.SponsorBlockSettings.DEFAULT_API_URL;
import static app.revanced.integrations.sponsorblock.SponsorBlockSettings.DEFAULT_SERVER_URL;
import static app.revanced.integrations.sponsorblock.SponsorBlockSettings.PREFERENCES_KEY_API_URL;

View File

@ -8,14 +8,13 @@ import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.lang.ref.WeakReference;
import static app.revanced.integrations.sponsorblock.PlayerController.getCurrentVideoLength;
import static app.revanced.integrations.sponsorblock.PlayerController.getLastKnownVideoTime;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public class VotingButton {
static RelativeLayout _youtubeControlsLayout;
@ -99,16 +98,16 @@ public class VotingButton {
//region Helpers
private static int getIdentifier(String name, String defType) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return context.getResources().getIdentifier(name, defType, context.getPackageName());
}
private static int getInteger(String name) {
return YouTubeTikTokRoot_Application.getAppContext().getResources().getInteger(getIdentifier(name, "integer"));
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(name, "integer"));
}
private static Animation getAnimation(String name) {
return AnimationUtils.loadAnimation(YouTubeTikTokRoot_Application.getAppContext(), getIdentifier(name, "anim"));
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(name, "anim"));
}
//endregion
}

View File

@ -3,11 +3,10 @@ package app.revanced.integrations.sponsorblock.player;
import android.content.Context;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import static app.revanced.integrations.sponsorblock.StringRef.str;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public class VideoHelpers {
@ -35,9 +34,9 @@ public class VideoHelpers {
LogHelper.debug("VideoHelpers", "Video URL: " + videoUrl);
setClipboard(YouTubeTikTokRoot_Application.getAppContext(), videoUrl);
setClipboard(ReVancedUtils.getContext(), videoUrl);
Toast.makeText(YouTubeTikTokRoot_Application.getAppContext(), str("share_copy_url_success"), Toast.LENGTH_SHORT).show();
Toast.makeText(ReVancedUtils.getContext(), str("share_copy_url_success"), Toast.LENGTH_SHORT).show();
} catch (Exception ex) {
LogHelper.printException("VideoHelpers", "Couldn't generate video url", ex);
}

View File

@ -6,12 +6,11 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.lang.ref.WeakReference;
import app.revanced.integrations.sponsorblock.player.PlayerType;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SwipeHelper;
public class SponsorBlockView {
@ -68,9 +67,9 @@ public class SponsorBlockView {
}
private static void addView() {
inlineSponsorOverlay = new RelativeLayout(YouTubeTikTokRoot_Application.getAppContext());
inlineSponsorOverlay = new RelativeLayout(ReVancedUtils.getContext());
setLayoutParams(inlineSponsorOverlay);
LayoutInflater.from(YouTubeTikTokRoot_Application.getAppContext()).inflate(getIdentifier("inline_sponsor_overlay", "layout"), inlineSponsorOverlay);
LayoutInflater.from(ReVancedUtils.getContext()).inflate(getIdentifier("inline_sponsor_overlay", "layout"), inlineSponsorOverlay);
_youtubeOverlaysLayout.addView(inlineSponsorOverlay, _youtubeOverlaysLayout.getChildCount() - 2);
@ -165,7 +164,7 @@ public class SponsorBlockView {
}
private static int getIdentifier(String name, String defType) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return context.getResources().getIdentifier(name, defType, context.getPackageName());
}
}

View File

@ -5,8 +5,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.ReVancedUtils;
public class SponsorBlockVoting extends SlimButton {
@ -23,6 +21,6 @@ public class SponsorBlockVoting extends SlimButton {
@Override
public void onClick(View view) {
Toast.makeText(YouTubeTikTokRoot_Application.getAppContext(), "Nothing atm", Toast.LENGTH_SHORT).show();
Toast.makeText(ReVancedUtils.getContext(), "Nothing atm", Toast.LENGTH_SHORT).show();
}
}

View File

@ -13,8 +13,6 @@ import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.widget.Toast;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import org.json.JSONArray;
import org.json.JSONObject;
@ -33,6 +31,7 @@ import app.revanced.integrations.sponsorblock.SponsorBlockUtils;
import app.revanced.integrations.sponsorblock.SponsorBlockUtils.VoteOption;
import app.revanced.integrations.sponsorblock.objects.SponsorSegment;
import app.revanced.integrations.sponsorblock.objects.UserStats;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
public class SBRequester {
@ -209,7 +208,7 @@ public class SBRequester {
SponsorBlockSettings.vip = vip;
SponsorBlockSettings.lastVipCheck = now;
SharedPreferences.Editor edit = SharedPrefHelper.getPreferences(YouTubeTikTokRoot_Application.getAppContext(), SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK).edit();
SharedPreferences.Editor edit = SharedPrefHelper.getPreferences(ReVancedUtils.getContext(), SharedPrefHelper.SharedPrefNames.SPONSOR_BLOCK).edit();
edit.putString(SponsorBlockSettings.PREFERENCES_KEY_LAST_VIP_CHECK, String.valueOf(now));
edit.putBoolean(SponsorBlockSettings.PREFERENCES_KEY_IS_VIP, vip);
edit.apply();

View File

@ -1,18 +0,0 @@
package app.revanced.integrations.utils;
import android.content.Context;
import app.revanced.integrations.utils.LogHelper;
public class Globals {
public static Context context;
public static Context getAppContext() {
if (context != null) {
return context;
}
LogHelper.printException("Globals", "Context is null!");
return null;
}
}

View File

@ -1,24 +1,116 @@
package app.revanced.integrations.utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.security.SecureRandom;
import app.revanced.integrations.sponsorblock.player.PlayerType;
public class ReVancedUtils {
private static PlayerType env;
//Used by Integrations patch
public static Context context;
//Used by Integrations patch
public static Context getAppContext() {
if (context != null) {
return context;
}
LogHelper.printException("Globals", "Context is null!");
return null;
}
public static String getStringByName(Context context, String name) {
try {
Resources res = context.getResources();
return res.getString(res.getIdentifier(name, "string", context.getPackageName()));
} catch (Throwable exception) {
LogHelper.printException("Settings", "Resource not found.", exception);
return "";
}
}
public static void setPlayerType(PlayerType type) {
env = type;
}
public static PlayerType getPlayerType() {
return env;
}
public static int getIdentifier(String name, String defType) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = getContext();
return context.getResources().getIdentifier(name, defType, context.getPackageName());
}
public static void runOnMainThread(Runnable runnable) {
new Handler(Looper.getMainLooper()).post(runnable);
}
public static void CheckForMicroG(Activity activity) {
AlertDialog.Builder builder;
if (!appInstalledOrNot("com.mgoogle.android.gms")) {
LogHelper.debug("XDebug", "Custom MicroG installation undetected");
if (Build.VERSION.SDK_INT >= 21) {
builder = new AlertDialog.Builder(activity, 16974374);
} else {
builder = new AlertDialog.Builder(activity);
}
builder.setTitle("Someone is not reading...").setMessage("You didn't install the MicroG as instructed, you can't login without it.\n\nInstall it and try again.").setPositiveButton("Close", new DialogInterface.OnClickListener() { // from class: app.revanced.integrations.settings.Settings.1
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialog, int id) {
}
}).show();
} else {
LogHelper.debug("XDebug", "Custom MicroG installation detected");
}
}
private static boolean appInstalledOrNot(String uri) {
try {
PackageManager pm = getContext().getPackageManager();
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
public static Context getContext() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
if (context != null) {
return context;
} else {
LogHelper.printException("Settings", "Context is null, returning null!");
return null;
}
}
//Not used atm
/*public static String getManufacturer() {
String manufacturer = SettingsEnum.MANUFACTURER_OVERRIDE_STRING.getString();
if (manufacturer == null || manufacturer.isEmpty()) {
manufacturer = Build.MANUFACTURER;
}
LogHelper.debug("Settings", "getManufacturer: " + manufacturer);
return manufacturer;
}
public static String getModel() {
String model = SettingsEnum.MODEL_OVERRIDE_STRING.getString();
if (model == null || model.isEmpty()) {
model = Build.MODEL;
}
LogHelper.debug("Settings", "getModel: " + model);
return model;
}*/
}

View File

@ -7,9 +7,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.sponsorblock.player.PlayerType;
/* loaded from: classes6.dex */
public class SwipeHelper {
@ -20,7 +18,7 @@ public class SwipeHelper {
public static void SetFrameLayout(Object obj) {
try {
_frameLayout = (FrameLayout) obj;
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
if (ScreenSizeHelper.isTablet(appContext) || SharedPrefHelper.getBoolean(appContext, SharedPrefHelper.SharedPrefNames.YOUTUBE,"pref_xfenster_tablet", false)) {
isTabletMode = true;
}
@ -56,7 +54,7 @@ public class SwipeHelper {
private static void refreshLayout() {
View findViewById;
try {
if (Settings.isWatchWhileFullScreen() && (findViewById = nextGenWatchLayout.findViewById(getIdentifier())) != null) {
if (isWatchWhileFullScreen() && (findViewById = nextGenWatchLayout.findViewById(getIdentifier())) != null) {
_frameLayout = (FrameLayout) findViewById.getParent();
LogHelper.debug("Settings", "related_endscreen_results refreshed");
}
@ -65,6 +63,14 @@ public class SwipeHelper {
}
}
private static boolean isWatchWhileFullScreen() {
if (ReVancedUtils.getPlayerType() == null) {
return false;
}
return ReVancedUtils.getPlayerType() == PlayerType.WATCH_WHILE_FULLSCREEN;
}
private static String getViewMessage(View view) {
try {
String resourceName = view.getResources() != null ? view.getId() != 0 ? view.getResources().getResourceName(view.getId()) : "no_id" : "no_resources";
@ -75,7 +81,7 @@ public class SwipeHelper {
}
private static int getIdentifier() {
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
assert appContext != null;
return appContext.getResources().getIdentifier("related_endscreen_results", "id", appContext.getPackageName());
}

View File

@ -2,15 +2,11 @@ package app.revanced.integrations.utils;
import android.os.Build;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import java.util.Objects;
import app.revanced.integrations.utils.LogHelper;
/* loaded from: classes6.dex */
public class ThemeHelper {
static int themeValue;
private static int themeValue;
public static void setTheme(int value) {
themeValue = value;
@ -26,11 +22,4 @@ public class ThemeHelper {
return themeValue == 1;
}
public static boolean isNightDarkMode() {
return (Objects.requireNonNull(YouTubeTikTokRoot_Application.getAppContext()).getResources().getConfiguration().uiMode & 48) == 32;
}
public static boolean isAbovePie() {
return Build.VERSION.SDK_INT > 28;
}
}

View File

@ -9,10 +9,9 @@ import android.widget.ImageView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.videoplayer.videourl.Copy;
import app.revanced.integrations.videoplayer.videourl.CopyWithTimeStamp;
@ -106,7 +105,7 @@ public class AutoRepeat {
}
private static boolean shouldBeSelected() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException("AutoRepeat", "ChangeSelected - context is null!");
return false;
@ -115,12 +114,12 @@ public class AutoRepeat {
}
private static void setSelected(boolean selected) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
SharedPrefHelper.saveBoolean(context, SharedPrefHelper.SharedPrefNames.YOUTUBE, "pref_auto_repeat", selected);
}
private static boolean shouldBeShown() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException("AutoRepeat", "ChangeSelected - context is null!");
return false;
@ -129,17 +128,17 @@ public class AutoRepeat {
}
private static int getIdentifier(String name, String defType) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return context.getResources().getIdentifier(name, defType, context.getPackageName());
}
private static int getInteger(String name) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return context.getResources().getInteger(getIdentifier(name, "integer"));
}
private static Animation getAnimation(String name) {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
return AnimationUtils.loadAnimation(context, getIdentifier(name, "anim"));
}
}

View File

@ -1,33 +0,0 @@
package app.revanced.integrations.videoplayer.settings;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Process;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.settings.XSettingsFragment;
/* loaded from: classes6.dex */
public class XReboot {
/**
* @param homeActivityClass Shell_HomeActivity.class
*/
static void Reboot(Activity activity, Class homeActivityClass) {
int intent;
intent = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
((AlarmManager) activity.getSystemService(Context.ALARM_SERVICE)).setExact(AlarmManager.ELAPSED_REALTIME, 1500L, PendingIntent.getActivity(activity, 0, new Intent(activity, homeActivityClass), intent));
Process.killProcess(Process.myPid());
}
/* JADX INFO: Access modifiers changed from: package-private */
public static void RebootDialog(final Activity activity) {
// from class: app.revanced.integrations.videoplayer.settings.XReboot.1
// android.content.DialogInterface.OnClickListenerXSettingsFragment.homeActivityClass
new AlertDialog.Builder(activity).setMessage(Settings.getStringByName(activity, "pref_refresh_config")).setPositiveButton(Settings.getStringByName(activity, "in_app_update_restart_button"), (dialog, id) -> XReboot.Reboot(activity, XSettingsFragment.homeActivityClass)).setNegativeButton(Settings.getStringByName(activity, "sign_in_cancel"), null).show();
}
}

View File

@ -3,11 +3,9 @@ package app.revanced.integrations.videoplayer.videosettings;
import android.content.Context;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.settings.Settings;
import app.revanced.integrations.utils.ReVancedUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@ -16,38 +14,41 @@ import java.util.Collections;
/* loaded from: classes6.dex */
public class VideoQuality {
static final int[] videoResolutions = {0, 144, 240, 360, 480, 720, 1080, 1440, 2160};
public static final int[] videoResolutions = {0, 144, 240, 360, 480, 720, 1080, 1440, 2160};
private static Boolean userChangedQuality = false;
private static Boolean newVideo = false;
public static void userChangedQuality() {
Settings.userChangedQuality = true;
Settings.newVideo = false;
userChangedQuality = true;
newVideo = false;
}
public static int setVideoQuality(Object[] qualities, int quality, Object qInterface) {
int preferredQuality;
Field[] fields;
if (!Settings.newVideo || Settings.userChangedQuality || qInterface == null) {
if (SettingsEnum.DEBUG_BOOLEAN.getBoolean() && Settings.userChangedQuality) {
LogHelper.debug("Settings - quality", "Skipping quality change because user changed it: " + quality);
if (!newVideo || userChangedQuality || qInterface == null) {
if (SettingsEnum.DEBUG_BOOLEAN.getBoolean() && userChangedQuality) {
LogHelper.debug("VideoQuality", "Skipping quality change because user changed it: " + quality);
}
Settings.userChangedQuality = false;
userChangedQuality = false;
return quality;
}
Settings.newVideo = false;
LogHelper.debug("Settings - quality", "Quality: " + quality);
Context context = YouTubeTikTokRoot_Application.getAppContext();
newVideo = false;
LogHelper.debug("VideoQuality", "Quality: " + quality);
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException("Settings", "Context is null or settings not initialized, returning quality: " + quality);
LogHelper.printException("VideoQuality", "Context is null or settings not initialized, returning quality: " + quality);
return quality;
}
if (Connectivity.isConnectedWifi(context)) {
preferredQuality = SettingsEnum.PREFERRED_RESOLUTION_WIFI_INTEGER.getInt();
LogHelper.debug("Settings", "Wi-Fi connection detected, preferred quality: " + preferredQuality);
LogHelper.debug("VideoQuality", "Wi-Fi connection detected, preferred quality: " + preferredQuality);
} else if (Connectivity.isConnectedMobile(context)) {
preferredQuality = SettingsEnum.PREFERRED_RESOLUTION_MOBILE_INTEGER.getInt();
LogHelper.debug("Settings", "Mobile data connection detected, preferred quality: " + preferredQuality);
LogHelper.debug("VideoQuality", "Mobile data connection detected, preferred quality: " + preferredQuality);
} else {
LogHelper.debug("Settings", "No Internet connection!");
LogHelper.debug("VideoQuality", "No Internet connection!");
return quality;
}
if (preferredQuality == -2) {
@ -71,7 +72,7 @@ public class VideoQuality {
Collections.sort(iStreamQualities);
int index = 0;
for (int streamQuality2 : iStreamQualities) {
LogHelper.debug("Settings - qualities", "Quality at index " + index + ": " + streamQuality2);
LogHelper.debug("VideoQuality", "Quality at index " + index + ": " + streamQuality2);
index++;
}
for (Integer iStreamQuality : iStreamQualities) {
@ -84,15 +85,15 @@ public class VideoQuality {
return quality;
}
int qualityIndex = iStreamQualities.indexOf(quality);
LogHelper.debug("Settings", "Index of quality " + quality + " is " + qualityIndex);
LogHelper.debug("VideoQuality", "Index of quality " + quality + " is " + qualityIndex);
try {
Class<?> cl = qInterface.getClass();
Method m = cl.getMethod("x", Integer.TYPE);
m.invoke(qInterface, iStreamQualities.get(qualityIndex));
LogHelper.debug("Settings", "Quality changed to: " + qualityIndex);
LogHelper.debug("VideoQuality", "Quality changed to: " + qualityIndex);
return qualityIndex;
} catch (Exception ex) {
LogHelper.printException("Settings", "Failed to set quality", ex);
LogHelper.printException("VideoQuality", "Failed to set quality", ex);
return qualityIndex;
}
}

View File

@ -14,14 +14,16 @@ import java.util.Iterator;
/* loaded from: classes6.dex */
public class VideoSpeed {
public static final float[] videoSpeeds = {0.25f, 0.5f, 0.75f, 1.0f, 1.25f, 1.5f, 1.75f, 2.0f, 3.0f, 4.0f, 5.0f};
private static Boolean userChangedSpeed = false;
private static Boolean newVideoSpeed = false;
public static int DefaultSpeed(Object[] speeds, int speed, Object qInterface) {
int speed2;
Exception e;
if (!Settings.newVideoSpeed) {
if (!newVideoSpeed) {
return speed;
}
Settings.newVideoSpeed = false;
newVideoSpeed = false;
LogHelper.debug("Settings - speeds", "Speed: " + speed);
float preferredSpeed = SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.getFloat();
LogHelper.debug("Settings", "Preferred speed: " + preferredSpeed);
@ -90,31 +92,26 @@ public class VideoSpeed {
}
public static void userChangedSpeed() {
Settings.userChangedSpeed = true;
Settings.newVideoSpeed = false;
userChangedSpeed = true;
newVideoSpeed = false;
}
private static float getSpeedByIndex(int index) {
if (index == -2) {
return 1.0f;
}
try {
return videoSpeeds[index];
} catch (Exception e) {
return 1.0f;
}
public static void NewVideoStarted() {
newVideoSpeed = true;
LogHelper.debug("VideoSpeed", "New video started!");
}
public static float getSpeedValue(Object[] speeds, int speed) {
int i = 0;
if (!Settings.newVideoSpeed || Settings.userChangedSpeed) {
if (SettingsEnum.DEBUG_BOOLEAN.getBoolean() && Settings.userChangedSpeed) {
if (!newVideoSpeed || userChangedSpeed) {
if (SettingsEnum.DEBUG_BOOLEAN.getBoolean() && userChangedSpeed) {
LogHelper.debug("Settings - speeds", "Skipping speed change because user changed it: " + speed);
}
Settings.userChangedSpeed = false;
userChangedSpeed = false;
return -1.0f;
}
Settings.newVideoSpeed = false;
newVideoSpeed = false;
LogHelper.debug("Settings - speeds", "Speed: " + speed);
float preferredSpeed = SettingsEnum.PREFERRED_VIDEO_SPEED_FLOAT.getFloat();
LogHelper.debug("Settings", "Preferred speed: " + preferredSpeed);
@ -170,4 +167,16 @@ public class VideoSpeed {
LogHelper.debug("Settings", "Speed changed to: " + newSpeedIndex);
return getSpeedByIndex(newSpeedIndex);
}
private static float getSpeedByIndex(int index) {
if (index == -2) {
return 1.0f;
}
try {
return videoSpeeds[index];
} catch (Exception e) {
return 1.0f;
}
}
}

View File

@ -8,10 +8,9 @@ import android.widget.ImageView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.sponsorblock.player.VideoHelpers;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import java.lang.ref.WeakReference;
@ -82,7 +81,7 @@ public class Copy {
}
private static boolean shouldBeShown() {
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
if (appContext == null) {
LogHelper.printException("CopyButton", "shouldBeShown - context is null!");
return false;
@ -95,15 +94,15 @@ public class Copy {
}
private static int getIdentifier(String str, String str2) {
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName());
}
private static int getInteger(String str) {
return YouTubeTikTokRoot_Application.getAppContext().getResources().getInteger(getIdentifier(str, "integer"));
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(str, "integer"));
}
private static Animation getAnimation(String str) {
return AnimationUtils.loadAnimation(YouTubeTikTokRoot_Application.getAppContext(), getIdentifier(str, "anim"));
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(str, "anim"));
}
}

View File

@ -9,10 +9,9 @@ import android.widget.ImageView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.sponsorblock.player.VideoHelpers;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import java.lang.ref.WeakReference;
@ -85,7 +84,7 @@ public class CopyWithTimeStamp {
}
private static boolean shouldBeShown() {
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
if (appContext == null) {
LogHelper.printException("CopyButtonWithTimeStamp", "shouldBeShown - context is null!");
return false;
@ -99,15 +98,15 @@ public class CopyWithTimeStamp {
}
private static int getIdentifier(String str, String str2) {
Context appContext = YouTubeTikTokRoot_Application.getAppContext();
Context appContext = ReVancedUtils.getContext();
return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName());
}
private static int getInteger(String str) {
return YouTubeTikTokRoot_Application.getAppContext().getResources().getInteger(getIdentifier(str, "integer"));
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(str, "integer"));
}
private static Animation getAnimation(String str) {
return AnimationUtils.loadAnimation(YouTubeTikTokRoot_Application.getAppContext(), getIdentifier(str, "anim"));
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(str, "anim"));
}
}

View File

@ -0,0 +1,73 @@
package app.revanced.integrations.videoswipecontrols;
import android.content.Context;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.sponsorblock.NewSegmentHelperLayout;
import app.revanced.integrations.sponsorblock.SponsorBlockUtils;
import app.revanced.integrations.sponsorblock.player.PlayerType;
import app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SwipeHelper;
public class SwipeControlAPI {
private static SwipeGestureController swipeGestureController;
public static void InitializeFensterController(Context context, ViewGroup viewGroup, ViewConfiguration viewConfiguration) {
swipeGestureController = new SwipeGestureController();
swipeGestureController.setFensterEventsListener(new XSwipe(context, viewGroup), context, viewConfiguration);
LogHelper.debug("Settings", "XFenster initialized");
}
public static boolean FensterTouchEvent(MotionEvent motionEvent) {
if (swipeGestureController == null) {
LogHelper.debug("Settings", "fensterGestureController is null");
return false;
} else if (motionEvent == null) {
LogHelper.debug("Settings", "motionEvent is null");
return false;
} else if (!SwipeHelper.IsControlsShown()) {
return swipeGestureController.onTouchEvent(motionEvent);
} else {
LogHelper.debug("Settings", "skipping onTouchEvent dispatching because controls are shown.");
return false;
}
}
public static void PlayerTypeChanged(PlayerType playerType) {
LogHelper.debug("XDebug", playerType.toString());
if (ReVancedUtils.getPlayerType() != playerType) {
if (playerType == PlayerType.WATCH_WHILE_FULLSCREEN) {
EnableSwipeControl();
} else {
DisableSwipeControl();
}
if (playerType == PlayerType.WATCH_WHILE_SLIDING_MINIMIZED_MAXIMIZED || playerType == PlayerType.WATCH_WHILE_MINIMIZED || playerType == PlayerType.WATCH_WHILE_PICTURE_IN_PICTURE) {
NewSegmentHelperLayout.hide();
}
SponsorBlockView.playerTypeChanged(playerType);
SponsorBlockUtils.playerTypeChanged(playerType);
}
ReVancedUtils.setPlayerType(playerType);
}
private static void EnableSwipeControl() {
if (SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() || SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean()) {
SwipeGestureController swipeGestureController2 = swipeGestureController;
swipeGestureController2.TouchesEnabled = true;
((XSwipe) swipeGestureController2.listener).enable(SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean(), SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getBoolean());
}
}
private static void DisableSwipeControl() {
SwipeGestureController swipeGestureController2 = swipeGestureController;
swipeGestureController2.TouchesEnabled = false;
((XSwipe) swipeGestureController2.listener).disable();
}
}

View File

@ -3,7 +3,7 @@ package app.revanced.integrations.videoswipecontrols;
import android.view.MotionEvent;
/* loaded from: classes6.dex */
public interface FensterEventsListener {
public interface SwipeEventsListener {
void onDown(MotionEvent motionEvent);
void onHorizontalScroll(MotionEvent motionEvent, float f);

View File

@ -8,10 +8,10 @@ import android.view.ViewConfiguration;
import app.revanced.integrations.utils.LogHelper;
/* loaded from: classes6.dex */
public class FensterGestureController {
public class SwipeGestureController {
public boolean TouchesEnabled = false;
private GestureDetector gestureDetector;
public FensterEventsListener listener;
public SwipeEventsListener listener;
public boolean onTouchEvent(MotionEvent event) {
if (event == null || !this.TouchesEnabled || event.getPointerCount() > 1) {
@ -24,8 +24,8 @@ public class FensterGestureController {
return this.gestureDetector.onTouchEvent(event);
}
public void setFensterEventsListener(FensterEventsListener listener, Context context, ViewConfiguration viewConfiguration) {
public void setFensterEventsListener(SwipeEventsListener listener, Context context, ViewConfiguration viewConfiguration) {
this.listener = listener;
this.gestureDetector = new GestureDetector(context, new FensterGestureListener(listener, viewConfiguration));
this.gestureDetector = new GestureDetector(context, new SwipeGestureListener(listener, viewConfiguration));
}
}

View File

@ -7,14 +7,14 @@ import android.view.ViewConfiguration;
import app.revanced.integrations.utils.LogHelper;
/* loaded from: classes6.dex */
public class FensterGestureListener implements GestureDetector.OnGestureListener {
public class SwipeGestureListener implements GestureDetector.OnGestureListener {
private boolean ignoreScroll = false;
private final FensterEventsListener listener;
private final SwipeEventsListener listener;
private final int minFlingVelocity;
public static int SWIPE_THRESHOLD = 0;
public static int TOP_PADDING = 20;
public FensterGestureListener(FensterEventsListener listener, ViewConfiguration viewConfiguration) {
public SwipeGestureListener(SwipeEventsListener listener, ViewConfiguration viewConfiguration) {
this.listener = listener;
this.minFlingVelocity = viewConfiguration.getScaledMinimumFlingVelocity();
}

View File

@ -7,16 +7,15 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.apps.youtube.app.YouTubeTikTokRoot_Application;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.videoswipecontrols.seekbar.BrightnessSeekBar;
import app.revanced.integrations.videoswipecontrols.seekbar.VolumeSeekBar;
import app.revanced.integrations.utils.SwipeHelper;
import app.revanced.integrations.settings.XSettingsFragment;
import app.revanced.integrations.settingsmenu.ReVancedSettingsFragment;
/* loaded from: classes6.dex */
public class XFenster implements FensterEventsListener {
public class XSwipe implements SwipeEventsListener {
public static final int ONE_FINGER = 1;
Handler handler;
float mBrightnessDownPos;
@ -36,7 +35,7 @@ public class XFenster implements FensterEventsListener {
BrightnessSeekBar mBrightness = new BrightnessSeekBar();
VolumeSeekBar mVolume = new VolumeSeekBar();
public XFenster(Context context, ViewGroup viewGroup) {
public XSwipe(Context context, ViewGroup viewGroup) {
this.mViewGroup = viewGroup;
this.mBrightness.initialise(context, viewGroup);
this.mVolume.initialise(context, viewGroup);
@ -153,8 +152,8 @@ public class XFenster implements FensterEventsListener {
// from class: app.revanced.integrations.videoplayer.Fenster.XFenster.1
// java.lang.Runnable
this.handler.postDelayed(() -> {
XFenster.this.mVolume.hide();
XFenster.this.mBrightness.hide();
XSwipe.this.mVolume.hide();
XSwipe.this.mBrightness.hide();
}, 2000L);
}
@ -265,7 +264,7 @@ public class XFenster implements FensterEventsListener {
View layout = SwipeHelper.nextGenWatchLayout.findViewById(getIdentifier());
if (layout != null) {
this.mViewGroup = (ViewGroup) layout;
this.mBrightness.refreshViewGroup(this.mViewGroup, XSettingsFragment.overlayContext);
this.mBrightness.refreshViewGroup(this.mViewGroup, ReVancedSettingsFragment.overlayContext);
this.mVolume.refreshViewGroup(this.mViewGroup);
LogHelper.debug("Settings", "player_overlays refreshed");
} else {
@ -278,7 +277,7 @@ public class XFenster implements FensterEventsListener {
}
private static int getIdentifier() {
Context context = YouTubeTikTokRoot_Application.getAppContext();
Context context = ReVancedUtils.getContext();
assert context != null;
return context.getResources().getIdentifier("player_overlays", "id", context.getPackageName());
}