diff --git a/app/src/main/java/se/ajpanton/statusbartweak/platform/SystemUiCapabilities.java b/app/src/main/java/se/ajpanton/statusbartweak/platform/SystemUiCapabilities.java new file mode 100644 index 0000000..531bd6e --- /dev/null +++ b/app/src/main/java/se/ajpanton/statusbartweak/platform/SystemUiCapabilities.java @@ -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); + } +} diff --git a/app/src/main/java/se/ajpanton/statusbartweak/runtime/layout/StockLayoutCanvasController.java b/app/src/main/java/se/ajpanton/statusbartweak/runtime/layout/StockLayoutCanvasController.java index 481ea2f..d72b684 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/runtime/layout/StockLayoutCanvasController.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/runtime/layout/StockLayoutCanvasController.java @@ -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) { diff --git a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedIconSnapshotRenderController.java b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedIconSnapshotRenderController.java index 96dafdf..aeb176f 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedIconSnapshotRenderController.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedIconSnapshotRenderController.java @@ -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; } diff --git a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedLayoutPlanner.java b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedLayoutPlanner.java index 805b3a5..714b02c 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedLayoutPlanner.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedLayoutPlanner.java @@ -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 unreadNotificationPlacements( diff --git a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedStockSourceCollector.java b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedStockSourceCollector.java index aa7f973..930b44d 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedStockSourceCollector.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/runtime/render/UnlockedStockSourceCollector.java @@ -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) { diff --git a/app/src/main/java/se/ajpanton/statusbartweak/shell/ui/IconsDebugFragment.java b/app/src/main/java/se/ajpanton/statusbartweak/shell/ui/IconsDebugFragment.java index 5b93de1..9ea49ca 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/shell/ui/IconsDebugFragment.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/shell/ui/IconsDebugFragment.java @@ -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); }