blob: a3fb58d5b0150142b9faa1ade3569159c49fe944 [file] [log] [blame]
package com.android.systemui.navigationbar.gestural
import android.content.res.Resources
import com.android.systemui.R
data class EdgePanelParams(private var resources: Resources) {
data class ArrowDimens(
val length: Float = 0f,
val height: Float = 0f
)
data class BackgroundDimens(
val width: Float = 0f,
val height: Float = 0f,
val edgeCornerRadius: Float = 0f,
val farCornerRadius: Float = 0f
)
data class BackIndicatorDimens(
val horizontalTranslation: Float = 0f,
val arrowDimens: ArrowDimens = ArrowDimens(),
val backgroundDimens: BackgroundDimens = BackgroundDimens()
)
var arrowThickness: Float = 0f
private set
var entryIndicator = BackIndicatorDimens()
private set
var activeIndicator = BackIndicatorDimens()
private set
var preThresholdIndicator = BackIndicatorDimens()
private set
var fullyStretchedIndicator = BackIndicatorDimens()
private set
var cancelledArrowDimens = ArrowDimens()
// navigation bar edge constants
var arrowPaddingEnd: Int = 0
private set
// The closest to y
var minArrowYPosition: Int = 0
private set
var fingerOffset: Int = 0
private set
var swipeTriggerThreshold: Float = 0f
private set
var swipeProgressThreshold: Float = 0f
private set
// The minimum delta needed to change direction / stop triggering back
var minDeltaForSwitch: Int = 0
private set
init {
update(resources)
}
private fun getDimen(id: Int): Float {
return resources.getDimension(id)
}
private fun getPx(id: Int): Int {
return resources.getDimensionPixelSize(id)
}
fun update(resources: Resources) {
this.resources = resources
arrowThickness = getDimen(R.dimen.navigation_edge_arrow_thickness)
arrowPaddingEnd = getPx(R.dimen.navigation_edge_panel_padding)
minArrowYPosition = getPx(R.dimen.navigation_edge_arrow_min_y)
fingerOffset = getPx(R.dimen.navigation_edge_finger_offset)
swipeTriggerThreshold = getDimen(R.dimen.navigation_edge_action_drag_threshold)
swipeProgressThreshold = getDimen(R.dimen.navigation_edge_action_progress_threshold)
minDeltaForSwitch = getPx(R.dimen.navigation_edge_minimum_x_delta_for_switch)
entryIndicator = BackIndicatorDimens(
horizontalTranslation = getDimen(R.dimen.navigation_edge_entry_margin),
arrowDimens = ArrowDimens(
length = getDimen(R.dimen.navigation_edge_entry_arrow_length),
height = getDimen(R.dimen.navigation_edge_entry_arrow_height),
),
backgroundDimens = BackgroundDimens(
width = getDimen(R.dimen.navigation_edge_entry_background_width),
height = getDimen(R.dimen.navigation_edge_entry_background_height),
edgeCornerRadius = getDimen(R.dimen.navigation_edge_entry_edge_corners),
farCornerRadius = getDimen(R.dimen.navigation_edge_entry_far_corners)
)
)
activeIndicator = BackIndicatorDimens(
horizontalTranslation = getDimen(R.dimen.navigation_edge_active_margin),
arrowDimens = ArrowDimens(
length = getDimen(R.dimen.navigation_edge_active_arrow_length),
height = getDimen(R.dimen.navigation_edge_active_arrow_height),
),
backgroundDimens = BackgroundDimens(
width = getDimen(R.dimen.navigation_edge_active_background_width),
height = getDimen(R.dimen.navigation_edge_active_background_height),
edgeCornerRadius = getDimen(R.dimen.navigation_edge_active_edge_corners),
farCornerRadius = getDimen(R.dimen.navigation_edge_active_far_corners)
)
)
preThresholdIndicator = BackIndicatorDimens(
horizontalTranslation = getDimen(R.dimen.navigation_edge_pre_threshold_margin),
arrowDimens = ArrowDimens(
length = entryIndicator.arrowDimens.length,
height = entryIndicator.arrowDimens.height,
),
backgroundDimens = BackgroundDimens(
width = getDimen(R.dimen.navigation_edge_pre_threshold_background_width),
height = getDimen(R.dimen.navigation_edge_pre_threshold_background_height),
edgeCornerRadius = getDimen(R.dimen.navigation_edge_pre_threshold_edge_corners),
farCornerRadius = getDimen(R.dimen.navigation_edge_pre_threshold_far_corners)
)
)
fullyStretchedIndicator = BackIndicatorDimens(
horizontalTranslation = getDimen(R.dimen.navigation_edge_stretch_margin),
arrowDimens = ArrowDimens(
length = getDimen(R.dimen.navigation_edge_stretched_arrow_length),
height = getDimen(R.dimen.navigation_edge_stretched_arrow_height),
),
backgroundDimens = BackgroundDimens(
width = getDimen(R.dimen.navigation_edge_stretch_background_width),
height = getDimen(R.dimen.navigation_edge_stretch_background_height),
edgeCornerRadius = getDimen(R.dimen.navigation_edge_stretch_edge_corners),
farCornerRadius = getDimen(R.dimen.navigation_edge_stretch_far_corners)
)
)
cancelledArrowDimens = ArrowDimens(
length = getDimen(R.dimen.navigation_edge_cancelled_arrow_length),
height = getDimen(R.dimen.navigation_edge_cancelled_arrow_height)
)
}
}