Launcher3: add switch to hide search widget
BRUTE FORCE - here I come
Change-Id: Iaccde127196d71c932e647445ac6ca4abfff967e
Launcher: add resource qsb_show_default to set default for pref_qsb_show
Change-Id: Ifbad5d677039d8cd068edf07c891c1e859c22631Revert "Revert "Launcher3: add switch to hide search widget""
This reverts commit d206005022cb0dc51336c6161c1d113901afc6f7.
Change-Id: I0b2568ce4307ebad4df2d0423862d15c376920e2
diff --git a/res/values/custom_config.xml b/res/values/custom_config.xml
new file mode 100644
index 0000000..d771248
--- /dev/null
+++ b/res/values/custom_config.xml
@@ -0,0 +1,4 @@
+<resources>
+ <!-- Miscellaneous -->
+ <bool name="qsb_show_default">true</bool>
+</resources>
diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml
index 410cc35..4f486b6 100644
--- a/res/xml/launcher_preferences.xml
+++ b/res/xml/launcher_preferences.xml
@@ -50,6 +50,13 @@
launcher:logIdOn="615"
launcher:logIdOff="616" />
+ <SwitchPreference
+ android:defaultValue="@bool/qsb_show_default"
+ android:key="pref_qsb_show"
+ android:persistent="true"
+ android:summary="@string/pref_qsb_show_summary"
+ android:title="@string/pref_qsb_show_title"/>
+
<ListPreference
android:key="pref_grid"
android:title="@string/pref_grid_title"
diff --git a/src/com/android/launcher3/ModelCallbacks.kt b/src/com/android/launcher3/ModelCallbacks.kt
index 13062b6..8137fef 100644
--- a/src/com/android/launcher3/ModelCallbacks.kt
+++ b/src/com/android/launcher3/ModelCallbacks.kt
@@ -38,7 +38,7 @@
var pagesToBindSynchronously = LIntSet()
private var isFirstPagePinnedItemEnabled =
- (BuildConfig.QSB_ON_FIRST_SCREEN && !enableSmartspaceRemovalToggle())
+ (FeatureFlags.QSB_ON_FIRST_SCREEN && !enableSmartspaceRemovalToggle())
var stringCache: StringCache? = null
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 19a3002..c1ef4b4 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -29,6 +29,7 @@
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.Person;
+import android.app.ProgressDialog;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.pm.LauncherActivityInfo;
@@ -95,6 +96,7 @@
import com.android.launcher3.testing.shared.ResourceUtils;
import com.android.launcher3.util.FlagOp;
import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.Executors;
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;
@@ -181,10 +183,18 @@
sIsRunningInTestHarness = true;
}
+ public static final String QSB_SHOW = "pref_qsb_show";
+ public static final long WAIT_BEFORE_RESTART = 250;
+
public static boolean isPropertyEnabled(String propertyName) {
return Log.isLoggable(propertyName, Log.VERBOSE);
}
+ public static boolean showQsbWidget(Context context) {
+ return LauncherPrefs.getPrefs(context).getBoolean(QSB_SHOW,
+ context.getResources().getBoolean(R.bool.qsb_show_default));
+ }
+
/**
* Given a coordinate relative to the descendant, find the coordinate in a parent view's
* coordinates.
@@ -864,4 +874,15 @@
}
return null;
}
+
+ public static void restart(final Context context) {
+ ProgressDialog.show(context, null, context.getString(R.string.state_loading), true, false);
+ Executors.MODEL_EXECUTOR.execute(() -> {
+ try {
+ Thread.sleep(WAIT_BEFORE_RESTART);
+ } catch (Exception ignored) {
+ }
+ android.os.Process.killProcess(android.os.Process.myPid());
+ });
+ }
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index e601a3e..0676c05 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -597,7 +597,7 @@
* Initializes and binds the first page
*/
public void bindAndInitFirstWorkspaceScreen() {
- if ((!FeatureFlags.QSB_ON_FIRST_SCREEN
+ if ((!Utilities.showQsbWidget(mContext)
|| !mLauncher.getIsFirstPagePinnedItemEnabled())
|| SHOULD_SHOW_FIRST_PAGE_WIDGET) {
mFirstPagePinnedItem = null;
@@ -1038,7 +1038,7 @@
int id = mWorkspaceScreens.keyAt(i);
CellLayout cl = mWorkspaceScreens.valueAt(i);
// FIRST_SCREEN_ID can never be removed.
- if (((!FeatureFlags.QSB_ON_FIRST_SCREEN
+ if (((!Utilities.showQsbWidget(getContext())
|| SHOULD_SHOW_FIRST_PAGE_WIDGET)
|| id > FIRST_SCREEN_ID)
&& cl.getShortcutsAndWidgets().getChildCount() == 0) {
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 33e6f91..82bf1ba 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -49,7 +49,8 @@
* @deprecated Use {@link BuildConfig#QSB_ON_FIRST_SCREEN} directly
*/
@Deprecated
- public static final boolean QSB_ON_FIRST_SCREEN = BuildConfig.QSB_ON_FIRST_SCREEN;
+ // NOTE: replaced by resource qsb_show_default
+ public static final boolean QSB_ON_FIRST_SCREEN = true;
/**
* Feature flag to handle define config changes dynamically instead of killing the process.
diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
index ae8f1d5..91deef1 100644
--- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
+++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
@@ -504,7 +504,7 @@
}
// Add first page QSB
- if (FeatureFlags.QSB_ON_FIRST_SCREEN && dataModel.isFirstPagePinnedItemEnabled
+ if (Utilities.showQsbWidget(mContext) && dataModel.isFirstPagePinnedItemEnabled
&& !SHOULD_SHOW_FIRST_PAGE_WIDGET) {
CellLayout firstScreen = mWorkspaceScreens.get(FIRST_SCREEN_ID);
View qsb = mHomeElementInflater.inflate(R.layout.qsb_preview, firstScreen, false);
diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java
index 9a9fa5b..6a68de2 100644
--- a/src/com/android/launcher3/model/BgDataModel.java
+++ b/src/com/android/launcher3/model/BgDataModel.java
@@ -162,9 +162,7 @@
screenSet.add(item.screenId);
}
}
- if ((FeatureFlags.QSB_ON_FIRST_SCREEN
- && !SHOULD_SHOW_FIRST_PAGE_WIDGET)
- || screenSet.isEmpty()) {
+ if (screenSet.isEmpty()) {
screenSet.add(Workspace.FIRST_SCREEN_ID);
}
return screenSet.getArray();
diff --git a/src/com/android/launcher3/model/LoaderCursor.java b/src/com/android/launcher3/model/LoaderCursor.java
index 84130c7..b668b84 100644
--- a/src/com/android/launcher3/model/LoaderCursor.java
+++ b/src/com/android/launcher3/model/LoaderCursor.java
@@ -561,7 +561,7 @@
// container.
int spanX = mIDP.numSearchContainerColumns;
int spanY = 1;
- screen.markCells(0, 0, spanX, spanY, true);
+ screen.markCells(0, 0, spanX, spanY, Utilities.showQsbWidget(mContext));
}
mOccupied.put(item.screenId, screen);
}
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index 312c6f4..fa0c24e 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -414,7 +414,7 @@
mModelDelegate.markActive();
logASplit("workspaceDelegateItems");
}
- mBgDataModel.isFirstPagePinnedItemEnabled = FeatureFlags.QSB_ON_FIRST_SCREEN
+ mBgDataModel.isFirstPagePinnedItemEnabled = Utilities.showQsbWidget(mApp.getContext())
&& (!enableSmartspaceRemovalToggle() || LauncherPrefs.getPrefs(
mApp.getContext()).getBoolean(SMARTSPACE_ON_HOME_SCREEN, true));
}
diff --git a/src/com/android/launcher3/qsb/QsbContainerView.java b/src/com/android/launcher3/qsb/QsbContainerView.java
index d6b41b0..5415a9b 100644
--- a/src/com/android/launcher3/qsb/QsbContainerView.java
+++ b/src/com/android/launcher3/qsb/QsbContainerView.java
@@ -47,6 +47,7 @@
import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.Utilities;
import com.android.launcher3.R;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.FragmentWithPreview;
@@ -292,7 +293,7 @@
}
public boolean isQsbEnabled() {
- return FeatureFlags.QSB_ON_FIRST_SCREEN
+ return Utilities.showQsbWidget(getActivity())
&& !SHOULD_SHOW_FIRST_PAGE_WIDGET;
}
diff --git a/src/com/android/launcher3/settings/SettingsActivity.java b/src/com/android/launcher3/settings/SettingsActivity.java
index 4cdc4eb..6379469 100644
--- a/src/com/android/launcher3/settings/SettingsActivity.java
+++ b/src/com/android/launcher3/settings/SettingsActivity.java
@@ -29,6 +29,7 @@
import android.net.Uri;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
+import android.os.Handler;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -58,6 +59,7 @@
import com.android.launcher3.LauncherFiles;
import com.android.launcher3.R;
import com.android.launcher3.states.RotationHelper;
+import com.android.launcher3.Utilities;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.SettingsCache;
@@ -218,6 +220,14 @@
getActivity().setTitle(getPreferenceScreen().getTitle());
}
+ Preference showQsbWidget = findPreference(Utilities.QSB_SHOW);
+ showQsbWidget.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ new Handler().postDelayed(() -> Utilities.restart(getActivity()), Utilities.WAIT_BEFORE_RESTART);
+ return true;
+ }
+ });
+
final ListPreference grid = (ListPreference) findPreference(GRID_SIZE_PREFERENCE_KEY);
InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(getContext());
ArrayList<String> entries = new ArrayList<>();