OSDN Git Service

Hide desktop mode behind a preference (not exposed yet)
authorBraden Farmer <farmerbb@gmail.com>
Sat, 14 Mar 2020 17:59:20 +0000 (11:59 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Sat, 14 Mar 2020 18:05:58 +0000 (12:05 -0600)
app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java
app/src/main/java/com/farmerbb/taskbar/util/U.java

index 9822479..8d5c857 100644 (file)
@@ -180,7 +180,7 @@ public class NotificationService extends Service {
                     registerReceiver(userBackgroundReceiver, new IntentFilter(Intent.ACTION_USER_BACKGROUND));
                 }
 
-                if(U.isDesktopModeSupported(this)) {
+                if(U.shouldStartDesktopMode(this)) {
                     startDesktopMode(U.getExternalDisplayID(this), false);
 
                     DisplayManager manager = (DisplayManager) getSystemService(DISPLAY_SERVICE);
@@ -218,7 +218,7 @@ public class NotificationService extends Service {
             unregisterReceiver(userBackgroundReceiver);
         }
 
-        if(U.isDesktopModeSupported(this)) {
+        if(U.shouldStartDesktopMode(this)) {
             DisplayManager manager = (DisplayManager) getSystemService(DISPLAY_SERVICE);
             manager.unregisterDisplayListener(listener);
 
index a613ed4..e360680 100644 (file)
@@ -1811,6 +1811,8 @@ public class U {
     }
 
     public static boolean isDesktopModeSupported(Context context) {
+        if(isLauncherPermanentlyEnabled(context)) return false;
+
         return Build.VERSION.SDK_INT > Build.VERSION_CODES.P
                 && context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS);
     }
@@ -1829,6 +1831,14 @@ public class U {
         return desktopModePrefEnabled && getExternalDisplayID(context) != Display.DEFAULT_DISPLAY;
     }
 
+    public static boolean shouldStartDesktopMode(Context context) {
+        SharedPreferences pref = getSharedPreferences(context);
+
+        return isDesktopModeSupported(context)
+                && pref.getBoolean("desktop_mode", false)
+                && !pref.getBoolean("launcher", false);
+    }
+
     public static int getExternalDisplayID(Context context) {
         DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
         Display[] displays = dm.getDisplays();