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