diff --git a/lawnchair/res/values/dimens.xml b/lawnchair/res/values/dimens.xml index 089c259e81..ac35ec8da2 100644 --- a/lawnchair/res/values/dimens.xml +++ b/lawnchair/res/values/dimens.xml @@ -20,6 +20,9 @@ 0dp 72dp + 8dp + 2dp + 16dp 56dp - \ No newline at end of file + diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml index 14907cc6fa..021c859fe8 100644 --- a/lawnchair/res/values/strings.xml +++ b/lawnchair/res/values/strings.xml @@ -81,4 +81,6 @@ %1$d App %1$d Apps + + Show search bar diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/AllAppsHotseatQsb.kt b/lawnchair/src/app/lawnchair/nexuslauncher/AllAppsHotseatQsb.kt index 4bfdd4ac52..6b0729d82d 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/AllAppsHotseatQsb.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/AllAppsHotseatQsb.kt @@ -15,6 +15,7 @@ import android.view.animation.Interpolator import android.widget.EditText import android.widget.FrameLayout import androidx.recyclerview.widget.RecyclerView +import app.lawnchair.util.preferences.PreferenceManager import com.android.launcher3.* import com.android.launcher3.allapps.AllAppsContainerView import com.android.launcher3.allapps.AllAppsStore @@ -31,7 +32,7 @@ import com.android.launcher3.views.ActivityContext import java.util.* import kotlin.math.round -class AllAppsHotseatQsb @JvmOverloads constructor(context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : +class AllAppsHotseatQsb @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : QsbContainerView(context, attrs, defStyleAttr), Insettable, SearchUiManager, AllAppsSearchBarController.Callbacks, AllAppsStore.OnUpdateListener { private val mActivity: ActivityContext = ActivityContext.lookupContext(context) private val mFixedTranslationY: Int = resources.getDimensionPixelSize(R.dimen.search_widget_hotseat_height) / 2 @@ -43,6 +44,8 @@ class AllAppsHotseatQsb @JvmOverloads constructor(context: Context?, attrs: Attr private lateinit var mSearchWrapperView: View private lateinit var mFallbackSearchView: ExtendedEditText + private val enableHotseatQsb by PreferenceManager.getInstance(context).enableHotseatQsb + init { clipChildren = false clipToPadding = false @@ -189,8 +192,9 @@ class AllAppsHotseatQsb @JvmOverloads constructor(context: Context?, attrs: Attr override fun setContentVisibility(visibleElements: Int, setter: PropertySetter, interpolator: Interpolator) { + val showHotseatMode = visibleElements and LauncherState.HOTSEAT_SEARCH_BOX != 0 && enableHotseatQsb val showAllAppsMode = visibleElements and LauncherState.ALL_APPS_CONTENT != 0 - setter.setViewAlpha(mSearchWrapperView, if (showAllAppsMode) 0f else 1f, Interpolators.LINEAR) + setter.setViewAlpha(mSearchWrapperView, if (showHotseatMode) 1f else 0f, Interpolators.LINEAR) setter.setViewAlpha(mFallbackSearchView, if (showAllAppsMode) 1f else 0f, Interpolators.LINEAR) } diff --git a/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt index 793dc5b4a5..9d09eddb3c 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt @@ -23,6 +23,7 @@ import androidx.navigation.NavGraphBuilder import app.lawnchair.ui.preferences.components.PreferenceGroup import app.lawnchair.ui.preferences.components.PreferenceLayout import app.lawnchair.ui.preferences.components.SliderPreference +import app.lawnchair.ui.preferences.components.SwitchPreference import app.lawnchair.util.Meta import app.lawnchair.util.pageMeta import app.lawnchair.util.preferences.getAdapter @@ -37,12 +38,20 @@ fun NavGraphBuilder.dockGraph(route: String) { @ExperimentalAnimationApi @Composable fun DockPreferences() { + val prefs = preferenceManager() pageMeta.provide(Meta(title = stringResource(id = R.string.dock_label))) PreferenceLayout { - PreferenceGroup(heading = stringResource(id = R.string.grid), isFirstChild = true) { + PreferenceGroup(isFirstChild = true) { + SwitchPreference( + adapter = prefs.enableHotseatQsb.getAdapter(), + label = stringResource(id = R.string.hotseat_qsb_label), + showDivider = false + ) + } + PreferenceGroup(heading = stringResource(id = R.string.grid)) { SliderPreference( label = stringResource(id = R.string.dock_icons), - adapter = preferenceManager().hotseatColumns.getAdapter(), + adapter = prefs.hotseatColumns.getAdapter(), steps = 3, valueRange = 3.0F..7.0F, showDivider = false diff --git a/lawnchair/src/app/lawnchair/util/preferences/BasePreferenceManager.kt b/lawnchair/src/app/lawnchair/util/preferences/BasePreferenceManager.kt index a16decc987..902d5a8634 100644 --- a/lawnchair/src/app/lawnchair/util/preferences/BasePreferenceManager.kt +++ b/lawnchair/src/app/lawnchair/util/preferences/BasePreferenceManager.kt @@ -22,6 +22,7 @@ import com.android.launcher3.InvariantDeviceProfile import com.android.launcher3.Utilities import java.util.* import kotlin.collections.HashMap +import kotlin.reflect.KProperty abstract class BasePreferenceManager(context: Context) : SharedPreferences.OnSharedPreferenceChangeListener { val sp: SharedPreferences = Utilities.getPrefs(context) @@ -50,6 +51,11 @@ abstract class BasePreferenceManager(context: Context) : SharedPreferences.OnSha fun addListener(listener: PreferenceChangeListener) fun removeListener(listener: PreferenceChangeListener) + + operator fun getValue(thisObj: Any?, property: KProperty<*>): T = get() + operator fun setValue(thisObj: Any?, property: KProperty<*>, newValue: T) { + set(newValue) + } } abstract inner class BasePref(val key: String, private val primaryListener: ChangeListener?) : PrefEntry { diff --git a/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt index aa0a026497..6a09003850 100644 --- a/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt +++ b/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt @@ -50,6 +50,7 @@ class PreferenceManager private constructor(context: Context) : BasePreferenceMa val allowRotation = BoolPref("pref_allowRotation", true) val wrapAdaptiveIcons = BoolPref("prefs_wrapAdaptive", false, reloadIcons) val addIconToHome = BoolPref("pref_add_icon_to_home", true) + val enableHotseatQsb = BoolPref("pref_dockSearchBar", true, reloadGrid) val hotseatColumns = IdpIntPref("pref_hotseatColumns", { numHotseatIcons }, reloadGrid) val workspaceColumns = IdpIntPref("pref_workspaceColumns", { numColumns }, reloadGrid) val workspaceRows = IdpIntPref("pref_workspaceRows", { numRows }, reloadGrid) diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index b7dd156a04..803eff8c99 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -215,11 +215,23 @@ public class DeviceProfile { workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); + // Lawnchair prefs + PreferenceManager prefs = PreferenceManager.getInstance(mContext); + + int hotseatTopPaddingRes; + int hotseatBottomPaddingRes; + if (prefs.getEnableHotseatQsb().get()) { + hotseatTopPaddingRes = R.dimen.dynamic_grid_hotseat_top_padding; + hotseatBottomPaddingRes = R.dimen.dynamic_grid_hotseat_bottom_padding; + } else { + hotseatTopPaddingRes = R.dimen.noqsb_hotseat_top_padding; + hotseatBottomPaddingRes = R.dimen.noqsb_hotseat_bottom_padding; + } hotseatBarTopPaddingPx = - res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_top_padding); + res.getDimensionPixelSize(hotseatTopPaddingRes); hotseatBarBottomPaddingPx = (isTallDevice ? 0 : res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_bottom_non_tall_padding)) - + res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_bottom_padding); + + res.getDimensionPixelSize(hotseatBottomPaddingRes); hotseatBarSidePaddingEndPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_side_padding); // Add a bit of space between nav bar and hotseat in vertical bar layout.