Merge pull request #2156
This commit is contained in:
@@ -20,6 +20,9 @@
|
||||
<dimen name="dynamic_grid_hotseat_top_padding">0dp</dimen>
|
||||
<dimen name="dynamic_grid_hotseat_bottom_padding">72dp</dimen>
|
||||
|
||||
<dimen name="noqsb_hotseat_top_padding">8dp</dimen>
|
||||
<dimen name="noqsb_hotseat_bottom_padding">2dp</dimen>
|
||||
|
||||
<dimen name="search_widget_top_shift">16dp</dimen>
|
||||
<dimen name="search_widget_hotseat_height">56dp</dimen>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -81,4 +81,6 @@
|
||||
<item quantity="one">%1$d App</item>
|
||||
<item quantity="other">%1$d Apps</item>
|
||||
</plurals>
|
||||
|
||||
<string name="hotseat_qsb_label">Show Search Bar</string>
|
||||
</resources>
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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, heading = stringResource(id = R.string.general_label)) {
|
||||
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
|
||||
|
||||
@@ -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<T>(val key: String, private val primaryListener: ChangeListener?) : PrefEntry<T> {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user