Skip to content
This repository was archived by the owner on Dec 11, 2024. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
package app.revanced.integrations.youtube.patches.overlaybutton;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings.System;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.utils.Logger;
import app.revanced.integrations.youtube.settings.Settings;

import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS;
import static app.revanced.integrations.shared.utils.Utils.getActivity;

@SuppressWarnings("unused")
public class SetBrightness extends BottomControlButton {
@Nullable
private static SetBrightness instance;
private static int previousBrightness = -1;

private SetBrightness(ViewGroup bottomControlsViewGroup) {
super(
bottomControlsViewGroup,
"set_brightness_button",
Settings.OVERLAY_BUTTON_SET_BRIGHTNESS,
view -> {
try {
Activity activity = getActivity();
ContentResolver contentResolver = activity.getContentResolver();

if (!System.canWrite(activity)) {
Intent intent = new Intent(ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + ((Context) activity).getPackageName()));
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
((Context) activity).startActivity(intent);
return;
}

int currentBrightness = System.getInt(contentResolver, SCREEN_BRIGHTNESS);

if (previousBrightness == -1)
previousBrightness = currentBrightness;

Logger.printInfo(() -> "Current brightness: " + currentBrightness);

int newBrightness = currentBrightness == 0 ? previousBrightness : 0;

System.putInt(contentResolver, SCREEN_BRIGHTNESS, newBrightness);

if (instance != null)
changeActivated(instance);

Logger.printInfo(() -> "Brightness set to: " + newBrightness);

} catch (Exception e) {
Logger.printException(() -> "Error toggling brightness", e);
}
},
view -> {
try {
Activity activity = getActivity();
ContentResolver contentResolver = activity.getContentResolver();

if (!System.canWrite(activity)) {
Intent intent = new Intent(ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + ((Context) activity).getPackageName()));
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
((Context) activity).startActivity(intent);
return true;
}

int currentBrightness = System.getInt(contentResolver, SCREEN_BRIGHTNESS);

// TODO: why previousBrightness is always 0?
if (previousBrightness == -1)
previousBrightness = currentBrightness;

Logger.printInfo(() -> "Current brightness: " + currentBrightness);

int newBrightness = currentBrightness == 255 ? previousBrightness : 255;

System.putInt(contentResolver, SCREEN_BRIGHTNESS, newBrightness);

if (instance != null)
changeActivated(instance);

Logger.printInfo(() -> "Brightness set to: " + newBrightness);

} catch (Exception e) {
Logger.printException(() -> "Error setting brightness to maximum", e);
}
return true;
}
);
}

/**
* Injection point.
*/
public static void initialize(View bottomControlsViewGroup) {
try {
if (bottomControlsViewGroup instanceof ViewGroup viewGroup) {
instance = new SetBrightness(viewGroup);
}
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}

/**
* Injection point.
*/
public static void changeVisibility(boolean showing, boolean animation) {
if (instance != null) {
instance.setVisibility(showing, animation);
changeActivated(instance);
}
}

public static void changeVisibilityNegatedImmediate() {
if (instance != null) {
instance.setVisibilityNegatedImmediate();
changeActivated(instance);
}
}

private static void changeActivated(SetBrightness instance) {
try {
ContentResolver contentResolver = getActivity().getContentResolver();
boolean isBrightnessLowEnough = System.getInt(contentResolver, SCREEN_BRIGHTNESS) <= 120; // less than ~50%
instance.changeActivated(isBrightnessLowEnough);
} catch (Exception e) {
Logger.printException(() -> "Error updating activation state", e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting OVERLAY_BUTTON_COPY_VIDEO_URL = new BooleanSetting("revanced_overlay_button_copy_video_url", TRUE);
public static final BooleanSetting OVERLAY_BUTTON_COPY_VIDEO_URL_TIMESTAMP = new BooleanSetting("revanced_overlay_button_copy_video_url_timestamp", FALSE);
public static final BooleanSetting OVERLAY_BUTTON_MUTE_VOLUME = new BooleanSetting("revanced_overlay_button_mute_volume", FALSE);
public static final BooleanSetting OVERLAY_BUTTON_SET_BRIGHTNESS = new BooleanSetting("revanced_overlay_button_set_brightness", FALSE);
public static final BooleanSetting OVERLAY_BUTTON_EXTERNAL_DOWNLOADER = new BooleanSetting("revanced_overlay_button_external_downloader", FALSE);
public static final BooleanSetting OVERLAY_BUTTON_SPEED_DIALOG = new BooleanSetting("revanced_overlay_button_speed_dialog", TRUE);
public static final BooleanSetting OVERLAY_BUTTON_TIME_ORDERED_PLAYLIST = new BooleanSetting("revanced_overlay_button_time_ordered_playlist", FALSE);
Expand Down