OSDN Git Service

Taskbar 3.3.2 (release 1)
authorBraden Farmer <farmerbb@gmail.com>
Mon, 24 Apr 2017 20:00:44 +0000 (14:00 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Mon, 24 Apr 2017 20:00:44 +0000 (14:00 -0600)
• Fix Taskbar incorrectly handling activities with CATEGORY_INFO
• Show dialog on Samsung devices when attempting to enable freeform mode
• Minor code cleanup

app/build.gradle
app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java
app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java
app/src/main/res/values-de/strings.xml
app/src/main/res/values-ja/strings.xml
app/src/main/res/values-ru/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/xml/pref_freeform_hack.xml

index c272d53..65c0c4a 100644 (file)
@@ -30,8 +30,8 @@ android {
         minSdkVersion 21
         targetSdkVersion 25
 
-        versionCode 139
-        versionName "3.3.1"
+        versionCode 140
+        versionName "3.3.2"
 
         resConfigs "en", "ja", "ru", "de"
 
index 376e2af..7c0186c 100644 (file)
@@ -54,14 +54,6 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
             findPreference("window_size").setOnPreferenceClickListener(this);
 
             bindPreferenceSummaryToValue(findPreference("window_size"));
-
-            SharedPreferences pref = U.getSharedPreferences(getActivity());
-            boolean freeformHackEnabled = pref.getBoolean("freeform_hack", false);
-            findPreference("launch_games_fullscreen").setEnabled(freeformHackEnabled);
-            findPreference("save_window_sizes").setEnabled(freeformHackEnabled);
-            findPreference("window_size").setEnabled(freeformHackEnabled);
-            findPreference("add_shortcut").setEnabled(freeformHackEnabled);
-            findPreference("force_new_window").setEnabled(freeformHackEnabled);
         }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
@@ -70,6 +62,21 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
         if(actionBar != null)
             actionBar.setDisplayHomeAsUpEnabled(true);
 
+        // Dialog shown on Samsung devices, which seem to not work with freeform mode
+        if(Build.MANUFACTURER.equalsIgnoreCase("Samsung")) {
+            SharedPreferences pref = U.getSharedPreferences(getActivity());
+            if(!pref.getBoolean("samsung_dialog_shown", false)) {
+                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+                builder.setTitle(R.string.samsung_freeform_title)
+                        .setMessage(R.string.samsung_freeform_message)
+                        .setPositiveButton(R.string.action_ok, (dialog, which) -> pref.edit().putBoolean("samsung_dialog_shown", true).apply());
+
+                AlertDialog dialog = builder.create();
+                dialog.show();
+                dialog.setCancelable(false);
+            }
+        }
+
         finishedLoadingPrefs = true;
     }
 
@@ -82,12 +89,6 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
 
             ((CheckBoxPreference) findPreference("freeform_hack")).setChecked(U.hasFreeformSupport(getActivity()));
 
-            findPreference("launch_games_fullscreen").setEnabled(U.hasFreeformSupport(getActivity()));
-            findPreference("save_window_sizes").setEnabled(U.hasFreeformSupport(getActivity()));
-            findPreference("window_size").setEnabled(U.hasFreeformSupport(getActivity()));
-            findPreference("add_shortcut").setEnabled(U.hasFreeformSupport(getActivity()));
-            findPreference("force_new_window").setEnabled(U.hasFreeformSupport(getActivity()));
-
             if(U.hasFreeformSupport(getActivity())) {
                 U.showToastLong(getActivity(), R.string.reboot_required);
             }
@@ -139,12 +140,6 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
                     LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(new Intent("com.farmerbb.taskbar.FORCE_TASKBAR_RESTART"));
                 }
 
-                findPreference("launch_games_fullscreen").setEnabled(((CheckBoxPreference) p).isChecked());
-                findPreference("save_window_sizes").setEnabled(((CheckBoxPreference) p).isChecked());
-                findPreference("window_size").setEnabled(((CheckBoxPreference) p).isChecked());
-                findPreference("add_shortcut").setEnabled(((CheckBoxPreference) p).isChecked());
-                findPreference("force_new_window").setEnabled(((CheckBoxPreference) p).isChecked());
-
                 break;
             case "freeform_mode_help":
                 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
index a5fe9cb..226f954 100644 (file)
@@ -529,7 +529,7 @@ public class TaskbarService extends Service {
                                 }
                             }
                         });
-                    }
+                }
 
                 isRefreshingRecents = false;
             }
@@ -597,7 +597,7 @@ public class TaskbarService extends Service {
                 // Filter out apps without a launcher intent
                 // Also filter out the current launcher, and Taskbar itself
                 for(AppEntry packageInfo : usageStatsList) {
-                    if(pm.getLaunchIntentForPackage(packageInfo.getPackageName()) != null
+                    if(hasLauncherIntent(packageInfo.getPackageName())
                             && !packageInfo.getPackageName().contains(BuildConfig.BASE_APPLICATION_ID)
                             && !packageInfo.getPackageName().equals(defaultLauncher.activityInfo.packageName))
                         usageStatsList2.add(packageInfo);
@@ -1283,4 +1283,13 @@ public class TaskbarService extends Service {
 
         return entries;
     }
+
+    private boolean hasLauncherIntent(String packageName) {
+        Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
+        intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
+        intentToResolve.setPackage(packageName);
+
+        List<ResolveInfo> ris = getPackageManager().queryIntentActivities(intentToResolve, 0);
+        return ris != null && ris.size() > 0;
+    }
 }
index 08a5f7a..87ce5ab 100644 (file)
 
     <string name="restore_widget">Restore widget</string>
 
+    <string name="samsung_freeform_title">Note</string>
+    <string name="samsung_freeform_message">Freeform mode may not work on Samsung devices, due to system changes made for DeX support.\n\nYou may need to flash a custom ROM in order to use freeform mode on this device.</string>
+
 </resources>
index aafcb63..be05b76 100644 (file)
 
     <string name="restore_widget">Restore widget</string>
 
+    <string name="samsung_freeform_title">Note</string>
+    <string name="samsung_freeform_message">Freeform mode may not work on Samsung devices, due to system changes made for DeX support.\n\nYou may need to flash a custom ROM in order to use freeform mode on this device.</string>
+
 </resources>
index 468312c..582b7af 100644 (file)
 
     <string name="restore_widget">Restore widget</string>
 
+    <string name="samsung_freeform_title">Note</string>
+    <string name="samsung_freeform_message">Freeform mode may not work on Samsung devices, due to system changes made for DeX support.\n\nYou may need to flash a custom ROM in order to use freeform mode on this device.</string>
+
 </resources>
index 0ab3d27..11eda37 100644 (file)
 
     <string name="restore_widget">Restore widget</string>
 
+    <string name="samsung_freeform_title">Note</string>
+    <string name="samsung_freeform_message">Freeform mode may not work on Samsung devices, due to system changes made for DeX support.\n\nYou may need to flash a custom ROM in order to use freeform mode on this device.</string>
+
 </resources>
index b5c3721..65f5277 100644 (file)
     <CheckBoxPreference
         android:defaultValue="true"
         android:key="save_window_sizes"
+        android:dependency="freeform_hack"
         android:title="@string/pref_title_save_window_sizes"
         android:summary="@string/pref_description_save_window_sizes" />
 
     <CheckBoxPreference
         android:defaultValue="false"
         android:key="force_new_window"
+        android:dependency="freeform_hack"
         android:title="@string/pref_title_force_new_window"
         android:summary="@string/pref_description_force_new_window" />
 
     <CheckBoxPreference
         android:defaultValue="true"
         android:key="launch_games_fullscreen"
+        android:dependency="freeform_hack"
         android:title="@string/launch_games_fullscreen_title"
         android:summary="@string/launch_games_fullscreen_message" />
 
         android:entries="@array/pref_window_size_list"
         android:entryValues="@array/pref_window_size_list_values"
         android:key="window_size"
+        android:dependency="freeform_hack"
         android:negativeButtonText="@null"
         android:positiveButtonText="@null"
         android:title="@string/pref_title_window_size"/>
 
     <Preference
         android:key="add_shortcut"
+        android:dependency="freeform_hack"
         android:title="@string/add_shortcut" />
 
     <Preference