diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index bab6400ed8..f49e5e58cc 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -644,6 +644,12 @@ class PreferenceManager2 private constructor(private val context: Context) : onSet = { reloadHelper.reloadIcons() }, ) + val enableLabelInDock = preference( + key = booleanPreferencesKey(name = "enable_label_dock"), + defaultValue = false, + onSet = { reloadHelper.reloadGrid() }, + ) + val doubleTapGestureHandler = serializablePreference( key = stringPreferencesKey("double_tap_gesture_handler"), defaultValue = GestureHandlerConfig.Sleep, diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/DockPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/DockPreferences.kt index 35d76d7e86..3b0817d909 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/DockPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/DockPreferences.kt @@ -134,6 +134,10 @@ fun HotseatBackgroundSettings(prefs: PreferenceManager, prefs2: PreferenceManage @Composable fun GridSettings(prefs: PreferenceManager, prefs2: PreferenceManager2) { + SwitchPreference( + adapter = prefs2.enableLabelInDock.getAdapter(), + label = stringResource(id = R.string.show_labels), + ) SliderPreference( label = stringResource(id = R.string.dock_icons), adapter = prefs.hotseatColumns.getAdapter(), @@ -171,6 +175,7 @@ fun ColumnScope.DockPreferencesPreview(modifier: Modifier = Modifier) { prefs.hotseatQsbStrokeWidth.getAdapter(), prefs2.hotseatBottomFactor.getAdapter(), prefs2.strokeColorStyle.getAdapter(), + prefs2.enableLabelInDock.getAdapter(), prefs.hotseatBG.getAdapter(), prefs.hotseatBGHorizontalInsetLeft.getAdapter(), prefs.hotseatBGVerticalInsetTop.getAdapter(), diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index f601682b07..16c6db09a5 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -87,6 +87,7 @@ import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.util.ShortcutUtil; import com.android.launcher3.views.ActivityContext; import com.android.launcher3.views.FloatingIconViewCompanion; +import com.patrykmichalik.opto.core.PreferenceExtensionsKt; import java.text.NumberFormat; import java.util.HashMap; @@ -95,6 +96,7 @@ import java.util.Locale; import app.lawnchair.LawnchairApp; import app.lawnchair.font.FontManager; import app.lawnchair.preferences.PreferenceManager; +import app.lawnchair.preferences2.PreferenceManager2; import app.lawnchair.util.LawnchairUtilsKt; /** @@ -224,6 +226,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, private boolean mEnableIconUpdateAnimation = false; + private final PreferenceManager2 pref2; + public BubbleTextView(Context context) { this(context, null, 0); } @@ -236,6 +240,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, super(context, attrs, defStyle); mActivity = ActivityContext.lookupContext(context); FastBitmapDrawable.setFlagHoverEnabled(LawnchairApp.isRecentsEnabled() && enableCursorHoverStates()); + pref2 = PreferenceManager2.getInstance(context); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BubbleTextView, defStyle, 0); @@ -844,8 +849,9 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, // Text should be visible everywhere but the hotseat. Object tag = getParent() instanceof FolderIcon ? ((View) getParent()).getTag() : getTag(); ItemInfo info = tag instanceof ItemInfo ? (ItemInfo) tag : null; - return info == null || (info.container != LauncherSettings.Favorites.CONTAINER_HOTSEAT - && info.container != LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION); + return info == null || ((info.container != LauncherSettings.Favorites.CONTAINER_HOTSEAT + && info.container != LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION) + && !PreferenceExtensionsKt.firstBlocking(pref2.getEnableLabelInDock())); } public void setTextVisibility(boolean visible) { diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index 848bf42e3e..986d9d7d02 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -760,7 +760,7 @@ public class CellLayout extends ViewGroup { // Hotseat icons - remove text if (child instanceof BubbleTextView) { BubbleTextView bubbleChild = (BubbleTextView) child; - bubbleChild.setTextVisibility(mContainerType != HOTSEAT); + bubbleChild.setTextVisibility(PreferenceExtensionsKt.firstBlocking(pref.getEnableLabelInDock())); } child.setScaleX(DEFAULT_SCALE); diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index fbbe0a870b..38ce097738 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -933,7 +933,12 @@ public class DeviceProfile { private void updateHotseatSizes(int hotseatIconSizePx) { // Ensure there is enough space for folder icons, which have a slightly larger // radius. + int iconTextHeight = Utilities.calculateTextHeight(iconTextSizePx); + var isLabelInDock = PreferenceExtensionsKt.firstBlocking(preferenceManager2.getEnableLabelInDock()); + hotseatCellHeightPx = getIconSizeWithOverlap(hotseatIconSizePx * 2) - hotseatIconSizePx / 2; + hotseatCellHeightPx += isLabelInDock ? iconTextHeight : 0; + hotseatQsbSpace += isLabelInDock ? iconTextHeight : 0; var space = Math.abs(hotseatCellHeightPx / 2) - 16;