Merge pull request #2156

This commit is contained in:
Patryk Michalik
2021-06-02 19:02:50 +02:00
committed by GitHub
7 changed files with 44 additions and 7 deletions
+4 -1
View File
@@ -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>
+2
View File
@@ -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)
+14 -2
View File
@@ -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.