Centralize SystemUI capability checks
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package se.ajpanton.statusbartweak.platform;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import se.ajpanton.statusbartweak.shell.settings.SbtSettings;
|
||||
|
||||
public final class SystemUiCapabilities {
|
||||
private SystemUiCapabilities() {
|
||||
}
|
||||
|
||||
public static boolean isSamsungOneUi() {
|
||||
return "samsung".equalsIgnoreCase(Build.MANUFACTURER);
|
||||
}
|
||||
|
||||
public static boolean supportsLockscreenShadeWindowRoot() {
|
||||
return !isSamsungOneUi();
|
||||
}
|
||||
|
||||
public static boolean supportsExperimentalGenericAodStatusbarRoot(SbtSettings settings) {
|
||||
return !isSamsungOneUi()
|
||||
&& settings != null
|
||||
&& settings.debugExperimentalAodStatusbarRoot;
|
||||
}
|
||||
|
||||
public static boolean treatsUnknownAodNotificationStyleAsIcons(SbtSettings settings) {
|
||||
return supportsExperimentalGenericAodStatusbarRoot(settings);
|
||||
}
|
||||
}
|
||||
+3
-8
@@ -7,7 +7,6 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Looper;
|
||||
import android.os.PowerManager;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
@@ -36,6 +35,7 @@ import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.function.Function;
|
||||
|
||||
import se.ajpanton.statusbartweak.platform.SystemUiCapabilities;
|
||||
import se.ajpanton.statusbartweak.runtime.NotificationKeyReflection;
|
||||
import se.ajpanton.statusbartweak.runtime.RuntimeMutationGuard;
|
||||
import se.ajpanton.statusbartweak.runtime.ViewIdNames;
|
||||
@@ -5058,11 +5058,7 @@ final class StockLayoutCanvasController {
|
||||
|| (activeScene != null
|
||||
&& activeScene.isLockscreen()
|
||||
&& isNotificationShadeWindowRoot(root)
|
||||
&& !isSamsungDevice());
|
||||
}
|
||||
|
||||
private boolean isSamsungDevice() {
|
||||
return "samsung".equalsIgnoreCase(Build.MANUFACTURER);
|
||||
&& SystemUiCapabilities.supportsLockscreenShadeWindowRoot());
|
||||
}
|
||||
|
||||
private void updateActiveScene(View root, Context context) {
|
||||
@@ -5114,12 +5110,11 @@ final class StockLayoutCanvasController {
|
||||
if (root == null
|
||||
|| activeScene == null
|
||||
|| !activeScene.isAod()
|
||||
|| isSamsungDevice()
|
||||
|| !isUnlockedStatusBarRoot(root)) {
|
||||
return false;
|
||||
}
|
||||
SbtSettings settings = RuntimeSettingsCache.get(root.getContext());
|
||||
return settings.debugExperimentalAodStatusbarRoot;
|
||||
return SystemUiCapabilities.supportsExperimentalGenericAodStatusbarRoot(settings);
|
||||
}
|
||||
|
||||
private boolean hasConfirmedAodPluginDescendant(View root) {
|
||||
|
||||
+2
-3
@@ -2,7 +2,6 @@ package se.ajpanton.statusbartweak.runtime.render;
|
||||
|
||||
import android.app.KeyguardManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
@@ -11,6 +10,7 @@ import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import se.ajpanton.statusbartweak.platform.SystemUiCapabilities;
|
||||
import se.ajpanton.statusbartweak.runtime.features.clock.ClockLayoutTextFactory;
|
||||
import se.ajpanton.statusbartweak.runtime.layoutsolver.StatusBarLayoutSolver.Bounds;
|
||||
import se.ajpanton.statusbartweak.runtime.mode.NotificationDisplayStyle;
|
||||
@@ -467,8 +467,7 @@ public final class UnlockedIconSnapshotRenderController {
|
||||
&& (style == NotificationDisplayStyle.ICONS
|
||||
|| style == NotificationDisplayStyle.DOT
|
||||
|| (style == NotificationDisplayStyle.UNKNOWN
|
||||
&& settings.debugExperimentalAodStatusbarRoot
|
||||
&& !"samsung".equalsIgnoreCase(Build.MANUFACTURER)));
|
||||
&& SystemUiCapabilities.treatsUnknownAodNotificationStyleAsIcons(settings)));
|
||||
}
|
||||
return settings.layoutNotifEnabledUnlocked;
|
||||
}
|
||||
|
||||
+2
-4
@@ -1,7 +1,6 @@
|
||||
package se.ajpanton.statusbartweak.runtime.render;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
@@ -12,6 +11,7 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import se.ajpanton.statusbartweak.platform.SystemUiCapabilities;
|
||||
import se.ajpanton.statusbartweak.R;
|
||||
import se.ajpanton.statusbartweak.runtime.layoutsolver.StatusBarLayoutSolver.AnchorSide;
|
||||
import se.ajpanton.statusbartweak.runtime.layoutsolver.StatusBarLayoutSolver.Bounds;
|
||||
@@ -874,9 +874,7 @@ final class UnlockedLayoutPlanner {
|
||||
}
|
||||
|
||||
private boolean isExperimentalGenericAod(SbtSettings settings) {
|
||||
return settings != null
|
||||
&& settings.debugExperimentalAodStatusbarRoot
|
||||
&& !"samsung".equalsIgnoreCase(Build.MANUFACTURER);
|
||||
return SystemUiCapabilities.supportsExperimentalGenericAodStatusbarRoot(settings);
|
||||
}
|
||||
|
||||
private ArrayList<SnapshotPlacement> unreadNotificationPlacements(
|
||||
|
||||
+4
-5
@@ -4,7 +4,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.BatteryManager;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -19,6 +18,7 @@ import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import se.ajpanton.statusbartweak.platform.SystemUiCapabilities;
|
||||
import se.ajpanton.statusbartweak.runtime.NotificationKeyReflection;
|
||||
import se.ajpanton.statusbartweak.runtime.ViewIdNames;
|
||||
import se.ajpanton.statusbartweak.runtime.hooks.ReflectionSupport;
|
||||
@@ -142,13 +142,12 @@ final class UnlockedStockSourceCollector {
|
||||
NotificationDisplayStyle style = scene.notificationDisplayStyle();
|
||||
return style == NotificationDisplayStyle.ICONS
|
||||
|| style == NotificationDisplayStyle.DOT
|
||||
|| (style == NotificationDisplayStyle.UNKNOWN && isExperimentalGenericAod(settings));
|
||||
|| (style == NotificationDisplayStyle.UNKNOWN
|
||||
&& SystemUiCapabilities.treatsUnknownAodNotificationStyleAsIcons(settings));
|
||||
}
|
||||
|
||||
private boolean isExperimentalGenericAod(SbtSettings settings) {
|
||||
return settings != null
|
||||
&& settings.debugExperimentalAodStatusbarRoot
|
||||
&& !"samsung".equalsIgnoreCase(Build.MANUFACTURER);
|
||||
return SystemUiCapabilities.supportsExperimentalGenericAodStatusbarRoot(settings);
|
||||
}
|
||||
|
||||
private String reflectString(View view, String methodName, String... fieldNames) {
|
||||
|
||||
@@ -4,7 +4,6 @@ import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -28,6 +27,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import se.ajpanton.statusbartweak.R;
|
||||
import se.ajpanton.statusbartweak.platform.SystemUiCapabilities;
|
||||
import se.ajpanton.statusbartweak.shell.debug.DebugNotifications;
|
||||
import se.ajpanton.statusbartweak.shell.settings.ClockCameraTypeSupport;
|
||||
import se.ajpanton.statusbartweak.shell.settings.SbtDefaults;
|
||||
@@ -147,7 +147,8 @@ public class IconsDebugFragment extends Fragment {
|
||||
SbtSettings.KEY_DEBUG_EXPERIMENTAL_AOD_STATUSBAR_ROOT,
|
||||
SbtDefaults.DEBUG_EXPERIMENTAL_AOD_STATUSBAR_ROOT_DEFAULT,
|
||||
true);
|
||||
if (isSamsungDevice() && experimentalAodStatusbarRootSwitch != null) {
|
||||
if (SystemUiCapabilities.isSamsungOneUi()
|
||||
&& experimentalAodStatusbarRootSwitch != null) {
|
||||
experimentalAodStatusbarRootSwitch.setChecked(false);
|
||||
experimentalAodStatusbarRootSwitch.setEnabled(false);
|
||||
}
|
||||
@@ -201,10 +202,6 @@ public class IconsDebugFragment extends Fragment {
|
||||
return root;
|
||||
}
|
||||
|
||||
private boolean isSamsungDevice() {
|
||||
return "samsung".equalsIgnoreCase(Build.MANUFACTURER);
|
||||
}
|
||||
|
||||
private void styleCompactCounterButton(MaterialButton button) {
|
||||
ViewTreeSupport.styleCompactButtonText(button, 13f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user