OSDN Git Service

Add new freeform mode options
authorBraden Farmer <farmerbb@gmail.com>
Tue, 11 Oct 2016 05:15:42 +0000 (23:15 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Tue, 11 Oct 2016 05:15:42 +0000 (23:15 -0600)
app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java
app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/SettingsFragment.java
app/src/main/java/com/farmerbb/taskbar/util/U.java
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/xml/pref_freeform_hack.xml

index 2371714..e667057 100644 (file)
@@ -329,8 +329,6 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc
             case "show_window_sizes":
                 getPreferenceScreen().removeAll();
 
-                String windowSizePref = SavedWindowSizes.getInstance(this).getWindowSize(this, packageName);
-
                 addPreferencesFromResource(R.xml.pref_context_menu_window_size_list);
                 findPreference("window_size_standard").setOnPreferenceClickListener(this);
                 findPreference("window_size_large").setOnPreferenceClickListener(this);
@@ -339,8 +337,12 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc
                 findPreference("window_size_half_right").setOnPreferenceClickListener(this);
                 findPreference("window_size_phone_size").setOnPreferenceClickListener(this);
 
-                CharSequence title = findPreference("window_size_" + windowSizePref).getTitle();
-                findPreference("window_size_" + windowSizePref).setTitle('\u2713' + " " + title);
+                SharedPreferences pref = U.getSharedPreferences(this);
+                if(pref.getBoolean("save_window_sizes", true)) {
+                    String windowSizePref = SavedWindowSizes.getInstance(this).getWindowSize(this, packageName);
+                    CharSequence title = findPreference("window_size_" + windowSizePref).getTitle();
+                    findPreference("window_size_" + windowSizePref).setTitle('\u2713' + " " + title);
+                }
 
                 dontFinish = true;
                 break;
@@ -350,8 +352,11 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc
             case "window_size_half_left":
             case "window_size_half_right":
             case "window_size_phone_size":
-                SavedWindowSizes.getInstance(this).setWindowSize(this, packageName, p.getKey().replace("window_size_", ""));
-
+                SharedPreferences pref2 = U.getSharedPreferences(this);
+                if(pref2.getBoolean("save_window_sizes", true)) {
+                    SavedWindowSizes.getInstance(this).setWindowSize(this, packageName, p.getKey().replace("window_size_", ""));
+                }
+                
                 startFreeformActivity();
                 U.launchApp(this, packageName, componentName, false, !isInMultiWindowMode(), true);
 
index a91f0d3..e6abd6f 100644 (file)
@@ -40,6 +40,12 @@ public class FreeformModeFragment extends SettingsFragment {
 
         bindPreferenceSummaryToValue(findPreference("window_size"));
 
+        SharedPreferences pref = U.getSharedPreferences(getActivity());
+        boolean freeformHackEnabled = pref.getBoolean("freeform_hack", false);
+        findPreference("open_in_fullscreen").setEnabled(freeformHackEnabled);
+        findPreference("save_window_sizes").setEnabled(freeformHackEnabled);
+        findPreference("window_size").setEnabled(freeformHackEnabled);
+
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_freeform);
         ActionBar actionBar = activity.getSupportActionBar();
index 78d3825..1d1a797 100644 (file)
@@ -274,6 +274,10 @@ public class SettingsFragment extends PreferenceFragment implements OnPreference
                     LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(new Intent("com.farmerbb.taskbar.FINISH_FREEFORM_ACTIVITY"));
                     LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(new Intent("com.farmerbb.taskbar.FORCE_TASKBAR_RESTART"));
                 }
+
+                findPreference("open_in_fullscreen").setEnabled(((CheckBoxPreference) p).isChecked());
+                findPreference("save_window_sizes").setEnabled(((CheckBoxPreference) p).isChecked());
+                findPreference("window_size").setEnabled(((CheckBoxPreference) p).isChecked());
                 break;
             case "freeform_mode_help":
                 AlertDialog.Builder builder2 = new AlertDialog.Builder(getActivity());
index 9b26aa0..529a316 100644 (file)
@@ -142,9 +142,15 @@ public class U {
         boolean shouldDelay = false;
 
         SharedPreferences pref = getSharedPreferences(context);
+        boolean freeformHackActive = openInNewWindow
+                ? FreeformHackHelper.getInstance().isInFreeformWorkspace()
+                : (pref.getBoolean("open_in_fullscreen", true)
+                    ? FreeformHackHelper.getInstance().isInFreeformWorkspace()
+                    : FreeformHackHelper.getInstance().isFreeformHackActive());
+
         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
                 && pref.getBoolean("freeform_hack", false)
-                && !FreeformHackHelper.getInstance().isInFreeformWorkspace()) {
+                && !freeformHackActive) {
             shouldDelay = true;
 
             new Handler().postDelayed(new Runnable() {
@@ -163,8 +169,10 @@ public class U {
         }
 
         if(!FreeformHackHelper.getInstance().isFreeformHackActive()) {
-            if(!shouldDelay) continueLaunchingApp(context, packageName, componentName, launchedFromTaskbar, padStatusBar, openInNewWindow);
-        } else if(FreeformHackHelper.getInstance().isInFreeformWorkspace())
+            if(!shouldDelay)
+                continueLaunchingApp(context, packageName, componentName, launchedFromTaskbar, padStatusBar, openInNewWindow);
+        } else if(FreeformHackHelper.getInstance().isInFreeformWorkspace()
+                || !pref.getBoolean("open_in_fullscreen", true))
             continueLaunchingApp(context, packageName, componentName, launchedFromTaskbar, padStatusBar, openInNewWindow);
     }
 
index 66c867e..a082099 100644 (file)
     <string name="already_top_app">%1$s can\'t be selected because it is on the top apps list</string>
 
     <string name="alt_button_config">Alternate position for collapse button</string>
+    <string name="pref_title_open_in_fullscreen">Open windows from fullscreen apps</string>
+    <string name="pref_description_open_in_fullscreen">Requires freeform mode to be initiated at least once after Taskbar starts. When unchecked, freeform windows will only open while in the freeform workspace.</string>
+    <string name="pref_title_save_window_sizes">Save window sizes for apps</string>
+    <string name="pref_description_save_window_sizes">When opening new windows from the context menu</string>
 
 </resources>
index 1faa3ad..3ec3cea 100644 (file)
     <string name="already_top_app">%1$s can\'t be selected because it is on the top apps list</string>
 
     <string name="alt_button_config">Alternate position for collapse button</string>
-
+    <string name="pref_title_open_in_fullscreen">Open windows from fullscreen apps</string>
+    <string name="pref_description_open_in_fullscreen">Requires freeform mode to be initiated at least once after Taskbar starts. When unchecked, freeform windows will only open while in the freeform workspace.</string>
+    <string name="pref_title_save_window_sizes">Save window sizes for apps</string>
+    <string name="pref_description_save_window_sizes">When opening new windows from the context menu</string>
 </resources>
index f896ae5..8635c15 100644 (file)
         android:title="@string/pref_title_freeform_hack"
         android:summary="@string/pref_description_freeform_hack" />
 
+    <CheckBoxPreference
+        android:defaultValue="true"
+        android:key="open_in_fullscreen"
+        android:title="@string/pref_title_open_in_fullscreen"
+        android:summary="@string/pref_description_open_in_fullscreen" />
+
+    <CheckBoxPreference
+        android:defaultValue="true"
+        android:key="save_window_sizes"
+        android:title="@string/pref_title_save_window_sizes"
+        android:summary="@string/pref_description_save_window_sizes" />
+
     <ListPreference
         android:defaultValue="standard"
         android:entries="@array/pref_window_size_list"