Keyboard buttons refactor

+ Fixed vibrations
+ Fixed fractional button icon
This commit is contained in:
Sad Ellie 2023-02-26 20:21:31 +04:00
parent d6db240222
commit fa1ec777cd
7 changed files with 154 additions and 154 deletions

View File

@ -49,7 +49,8 @@ fun BasicKeyboardButton(
containerColor: Color, containerColor: Color,
icon: ImageVector, icon: ImageVector,
iconColor: Color, iconColor: Color,
allowVibration: Boolean allowVibration: Boolean,
contentPadding: PaddingValues = PaddingValues(24.dp, 8.dp)
) { ) {
val view = LocalView.current val view = LocalView.current
val interactionSource = remember { MutableInteractionSource() } val interactionSource = remember { MutableInteractionSource() }
@ -65,7 +66,7 @@ fun BasicKeyboardButton(
onLongClick = onLongClick, onLongClick = onLongClick,
shape = RoundedCornerShape(cornerRadius), shape = RoundedCornerShape(cornerRadius),
containerColor = containerColor, containerColor = containerColor,
contentPadding = PaddingValues(24.dp, 8.dp), contentPadding = contentPadding,
interactionSource = interactionSource interactionSource = interactionSource
) { ) {
Icon(icon, null, modifier = Modifier.fillMaxHeight(), tint = iconColor) Icon(icon, null, modifier = Modifier.fillMaxHeight(), tint = iconColor)
@ -80,9 +81,9 @@ fun BasicKeyboardButton(
fun KeyboardButtonLight( fun KeyboardButtonLight(
modifier: Modifier, modifier: Modifier,
icon: ImageVector, icon: ImageVector,
onClick: () -> Unit, allowVibration: Boolean,
onLongClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null,
allowVibration: Boolean = false onClick: () -> Unit,
) { ) {
BasicKeyboardButton( BasicKeyboardButton(
modifier = modifier, modifier = modifier,
@ -99,9 +100,9 @@ fun KeyboardButtonLight(
fun KeyboardButtonFilled( fun KeyboardButtonFilled(
modifier: Modifier, modifier: Modifier,
icon: ImageVector, icon: ImageVector,
onClick: () -> Unit, allowVibration: Boolean,
onLongClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null,
allowVibration: Boolean = false onClick: () -> Unit,
) { ) {
BasicKeyboardButton( BasicKeyboardButton(
modifier = modifier, modifier = modifier,
@ -118,21 +119,21 @@ fun KeyboardButtonFilled(
fun KeyboardButtonAdditional( fun KeyboardButtonAdditional(
modifier: Modifier, modifier: Modifier,
icon: ImageVector, icon: ImageVector,
allowVibration: Boolean,
onLongClick: (() -> Unit)? = null,
onClick: () -> Unit onClick: () -> Unit
) { ) {
UnittoButton(
BasicKeyboardButton(
modifier = modifier modifier = modifier
.minimumInteractiveComponentSize() .minimumInteractiveComponentSize()
.heightIn(max = 48.dp), .heightIn(max = 48.dp),
onClick = onClick, onClick = onClick,
containerColor = Color.Transparent, containerColor = Color.Transparent,
contentPadding = PaddingValues(12.dp, 2.dp) icon = icon,
) { iconColor = MaterialTheme.colorScheme.onSurfaceVariant,
Icon( allowVibration = allowVibration,
imageVector = icon, contentPadding = PaddingValues(12.dp, 2.dp),
contentDescription = null, onLongClick = onLongClick
modifier = Modifier.fillMaxHeight(), )
tint = MaterialTheme.colorScheme.onSurfaceVariant
)
}
} }

View File

@ -264,11 +264,12 @@ private fun CalculatorScreen(
numPad = { numPad = {
CalculatorKeyboard( CalculatorKeyboard(
modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp),
angleMode = uiState.angleMode,
allowVibration = uiState.allowVibration,
addSymbol = addSymbol, addSymbol = addSymbol,
clearSymbols = clearSymbols, clearSymbols = clearSymbols,
deleteSymbol = deleteSymbol, deleteSymbol = deleteSymbol,
toggleAngleMode = toggleAngleMode, toggleAngleMode = toggleAngleMode,
angleMode = uiState.angleMode,
evaluate = evaluate evaluate = evaluate
) )
} }

View File

@ -25,5 +25,6 @@ internal data class CalculatorUIState(
val input: TextFieldValue = TextFieldValue(), val input: TextFieldValue = TextFieldValue(),
val output: String = "", val output: String = "",
val angleMode: AngleMode = AngleMode.RAD, val angleMode: AngleMode = AngleMode.RAD,
val history: List<HistoryItem> = emptyList() val history: List<HistoryItem> = emptyList(),
val allowVibration: Boolean = false
) )

View File

@ -66,12 +66,13 @@ internal class CalculatorViewModel @Inject constructor(
val uiState = combine( val uiState = combine(
textFieldController.input, _output, _angleMode, _history, _userPrefs textFieldController.input, _output, _angleMode, _history, _userPrefs
) { input, output, angleMode, history, _ -> ) { input, output, angleMode, history, userPrefs ->
return@combine CalculatorUIState( return@combine CalculatorUIState(
input = input, input = input,
output = output, output = output,
angleMode = angleMode, angleMode = angleMode,
history = history history = history,
allowVibration = userPrefs.enableVibrations
) )
}.stateIn( }.stateIn(
viewModelScope, SharingStarted.WhileSubscribed(5000L), CalculatorUIState() viewModelScope, SharingStarted.WhileSubscribed(5000L), CalculatorUIState()

View File

@ -75,10 +75,12 @@ import com.sadellie.unitto.core.base.KEY_RIGHT_BRACKET
import com.sadellie.unitto.core.base.KEY_SIN import com.sadellie.unitto.core.base.KEY_SIN
import com.sadellie.unitto.core.base.KEY_SQRT import com.sadellie.unitto.core.base.KEY_SQRT
import com.sadellie.unitto.core.base.KEY_TAN import com.sadellie.unitto.core.base.KEY_TAN
import com.sadellie.unitto.core.ui.Formatter
import com.sadellie.unitto.core.ui.common.KeyboardButtonAdditional import com.sadellie.unitto.core.ui.common.KeyboardButtonAdditional
import com.sadellie.unitto.core.ui.common.KeyboardButtonFilled import com.sadellie.unitto.core.ui.common.KeyboardButtonFilled
import com.sadellie.unitto.core.ui.common.KeyboardButtonLight import com.sadellie.unitto.core.ui.common.KeyboardButtonLight
import com.sadellie.unitto.core.ui.common.key.UnittoIcons import com.sadellie.unitto.core.ui.common.key.UnittoIcons
import com.sadellie.unitto.core.ui.common.key.unittoicons.Comma
import com.sadellie.unitto.core.ui.common.key.unittoicons.Cos import com.sadellie.unitto.core.ui.common.key.unittoicons.Cos
import com.sadellie.unitto.core.ui.common.key.unittoicons.Deg import com.sadellie.unitto.core.ui.common.key.unittoicons.Deg
import com.sadellie.unitto.core.ui.common.key.unittoicons.Delete import com.sadellie.unitto.core.ui.common.key.unittoicons.Delete
@ -117,18 +119,20 @@ import com.sadellie.unitto.feature.calculator.AngleMode
@Composable @Composable
internal fun CalculatorKeyboard( internal fun CalculatorKeyboard(
modifier: Modifier, modifier: Modifier,
angleMode: AngleMode,
allowVibration: Boolean,
addSymbol: (String) -> Unit, addSymbol: (String) -> Unit,
clearSymbols: () -> Unit, clearSymbols: () -> Unit,
deleteSymbol: () -> Unit, deleteSymbol: () -> Unit,
toggleAngleMode: () -> Unit, toggleAngleMode: () -> Unit,
angleMode: AngleMode,
evaluate: () -> Unit evaluate: () -> Unit
) { ) {
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT) { if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT) {
PortraitKeyboard( PortraitKeyboard(
modifier = modifier, modifier = modifier,
addSymbol = addSymbol,
angleMode = angleMode, angleMode = angleMode,
allowVibration = allowVibration,
addSymbol = addSymbol,
toggleAngleMode = toggleAngleMode, toggleAngleMode = toggleAngleMode,
deleteSymbol = deleteSymbol, deleteSymbol = deleteSymbol,
clearSymbols = clearSymbols, clearSymbols = clearSymbols,
@ -137,8 +141,9 @@ internal fun CalculatorKeyboard(
} else { } else {
LandscapeKeyboard( LandscapeKeyboard(
modifier = modifier, modifier = modifier,
addSymbol = addSymbol,
angleMode = angleMode, angleMode = angleMode,
allowVibration = allowVibration,
addSymbol = addSymbol,
toggleAngleMode = toggleAngleMode, toggleAngleMode = toggleAngleMode,
deleteSymbol = deleteSymbol, deleteSymbol = deleteSymbol,
clearSymbols = clearSymbols, clearSymbols = clearSymbols,
@ -150,13 +155,15 @@ internal fun CalculatorKeyboard(
@Composable @Composable
private fun PortraitKeyboard( private fun PortraitKeyboard(
modifier: Modifier, modifier: Modifier,
addSymbol: (String) -> Unit,
angleMode: AngleMode, angleMode: AngleMode,
allowVibration: Boolean,
addSymbol: (String) -> Unit,
toggleAngleMode: () -> Unit, toggleAngleMode: () -> Unit,
deleteSymbol: () -> Unit, deleteSymbol: () -> Unit,
clearSymbols: () -> Unit, clearSymbols: () -> Unit,
evaluate: () -> Unit evaluate: () -> Unit
) { ) {
val fractionalIcon = remember { if (Formatter.fractional == KEY_DOT) UnittoIcons.Dot else UnittoIcons.Comma }
var showAdditional: Boolean by remember { mutableStateOf(false) } var showAdditional: Boolean by remember { mutableStateOf(false) }
val expandRotation: Float by animateFloatAsState( val expandRotation: Float by animateFloatAsState(
targetValue = if (showAdditional) 0f else 180f, targetValue = if (showAdditional) 0f else 180f,
@ -183,24 +190,24 @@ private fun PortraitKeyboard(
// Additional buttons // Additional buttons
Column(modifier = weightModifier) { Column(modifier = weightModifier) {
Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) { Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) {
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.SquareRoot) { addSymbol(KEY_SQRT) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.SquareRoot, allowVibration) { addSymbol(KEY_SQRT) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Pi) { addSymbol(KEY_PI) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Pi, allowVibration) { addSymbol(KEY_PI) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Exponent) { addSymbol(KEY_EXPONENT) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Exponent, allowVibration) { addSymbol(KEY_EXPONENT) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Factorial) { addSymbol(KEY_FACTORIAL) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Factorial, allowVibration) { addSymbol(KEY_FACTORIAL) }
} }
AnimatedVisibility(visible = showAdditional) { AnimatedVisibility(visible = showAdditional) {
Column { Column {
Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) { Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) {
KeyboardButtonAdditional(additionalButtonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad) { toggleAngleMode() } KeyboardButtonAdditional(additionalButtonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Sin) { addSymbol(KEY_SIN) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Sin, allowVibration) { addSymbol(KEY_SIN) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Cos) { addSymbol(KEY_COS) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Cos, allowVibration) { addSymbol(KEY_COS) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Tan) { addSymbol(KEY_TAN) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Tan, allowVibration) { addSymbol(KEY_TAN) }
} }
Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) { Row(Modifier, horizontalArrangement = Arrangement.spacedBy(2.dp)) {
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Modulo) { addSymbol(KEY_MODULO) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Modulo, allowVibration) { addSymbol(KEY_MODULO) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.E) { addSymbol(KEY_E_SMALL) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.E, allowVibration) { addSymbol(KEY_E_SMALL) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Ln) { addSymbol(KEY_LN) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Ln, allowVibration) { addSymbol(KEY_LN) }
KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Log) { addSymbol(KEY_LOG) } KeyboardButtonAdditional(additionalButtonModifier, UnittoIcons.Log, allowVibration) { addSymbol(KEY_LOG) }
} }
} }
} }
@ -215,35 +222,35 @@ private fun PortraitKeyboard(
} }
Row(weightModifier) { Row(weightModifier) {
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.LeftBracket, { addSymbol(KEY_LEFT_BRACKET) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.LeftBracket, allowVibration) { addSymbol(KEY_LEFT_BRACKET) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.RightBracket, { addSymbol(KEY_RIGHT_BRACKET) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.RightBracket, allowVibration) { addSymbol(KEY_RIGHT_BRACKET) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Percent, { addSymbol(KEY_PERCENT) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Percent, allowVibration) { addSymbol(KEY_PERCENT) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Divide, { addSymbol(KEY_DIVIDE_DISPLAY) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Divide, allowVibration) { addSymbol(KEY_DIVIDE_DISPLAY) }
} }
Row(weightModifier) { Row(weightModifier) {
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key7, { addSymbol(KEY_7) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key7, allowVibration) { addSymbol(KEY_7) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key8, { addSymbol(KEY_8) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key8, allowVibration) { addSymbol(KEY_8) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key9, { addSymbol(KEY_9) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key9, allowVibration) { addSymbol(KEY_9) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Multiply, { addSymbol(KEY_MULTIPLY_DISPLAY) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Multiply, allowVibration) { addSymbol(KEY_MULTIPLY_DISPLAY) }
} }
Row(weightModifier) { Row(weightModifier) {
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key4, { addSymbol(KEY_4) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key4, allowVibration) { addSymbol(KEY_4) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key5, { addSymbol(KEY_5) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key5, allowVibration) { addSymbol(KEY_5) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key6, { addSymbol(KEY_6) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key6, allowVibration) { addSymbol(KEY_6) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Minus, { addSymbol(KEY_MINUS_DISPLAY) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Minus, allowVibration) { addSymbol(KEY_MINUS_DISPLAY) }
} }
Row(weightModifier) { Row(weightModifier) {
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key1, { addSymbol(KEY_1) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key1, allowVibration) { addSymbol(KEY_1) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key2, { addSymbol(KEY_2) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key2, allowVibration) { addSymbol(KEY_2) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key3, { addSymbol(KEY_3) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key3, allowVibration) { addSymbol(KEY_3) }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Plus, { addSymbol(KEY_PLUS) }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Plus, allowVibration) { addSymbol(KEY_PLUS) }
} }
Row(weightModifier) { Row(weightModifier) {
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key0, { addSymbol(KEY_0) }) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Key0, allowVibration) { addSymbol(KEY_0) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Dot, { addSymbol(KEY_DOT) }) KeyboardButtonLight(mainButtonModifier, fractionalIcon, allowVibration) { addSymbol(KEY_DOT) }
KeyboardButtonLight(mainButtonModifier, UnittoIcons.Delete, { deleteSymbol() }, onLongClick = clearSymbols) KeyboardButtonLight(mainButtonModifier, UnittoIcons.Delete, allowVibration, clearSymbols) { deleteSymbol() }
KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Equal, { evaluate() }) KeyboardButtonFilled(mainButtonModifier, UnittoIcons.Equal, allowVibration) { evaluate() }
} }
} }
} }
@ -251,58 +258,61 @@ private fun PortraitKeyboard(
@Composable @Composable
private fun LandscapeKeyboard( private fun LandscapeKeyboard(
modifier: Modifier, modifier: Modifier,
addSymbol: (String) -> Unit,
angleMode: AngleMode, angleMode: AngleMode,
allowVibration: Boolean,
addSymbol: (String) -> Unit,
toggleAngleMode: () -> Unit, toggleAngleMode: () -> Unit,
deleteSymbol: () -> Unit, deleteSymbol: () -> Unit,
clearSymbols: () -> Unit, clearSymbols: () -> Unit,
evaluate: () -> Unit evaluate: () -> Unit
) { ) {
val fractionalIcon = remember { if (Formatter.fractional == KEY_DOT) UnittoIcons.Dot else UnittoIcons.Comma }
Column(modifier = modifier) { Column(modifier = modifier) {
val buttonModifier = Modifier.weight(1f).padding(2.dp) val buttonModifier = Modifier.weight(1f).padding(2.dp)
Row(Modifier.weight(1f)) { Row(Modifier.weight(1f)) {
KeyboardButtonAdditional(buttonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad) { toggleAngleMode() } KeyboardButtonAdditional(buttonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.SquareRoot) { addSymbol(KEY_SQRT) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.SquareRoot, allowVibration) { addSymbol(KEY_SQRT) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Pi) { addSymbol(KEY_PI) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Pi, allowVibration) { addSymbol(KEY_PI) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key7, { addSymbol(KEY_7) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key7, allowVibration) { addSymbol(KEY_7) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key8, { addSymbol(KEY_8) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key8, allowVibration) { addSymbol(KEY_8) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key9, { addSymbol(KEY_9) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key9, allowVibration) { addSymbol(KEY_9) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.LeftBracket, { addSymbol(KEY_LEFT_BRACKET) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.LeftBracket, allowVibration) { addSymbol(KEY_LEFT_BRACKET) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.RightBracket, { addSymbol(KEY_RIGHT_BRACKET) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.RightBracket, allowVibration) { addSymbol(KEY_RIGHT_BRACKET) }
} }
Row(Modifier.weight(1f)) { Row(Modifier.weight(1f)) {
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Modulo) { addSymbol(KEY_MODULO) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Modulo, allowVibration) { addSymbol(KEY_MODULO) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Exponent) { addSymbol(KEY_EXPONENT) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Exponent, allowVibration) { addSymbol(KEY_EXPONENT) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Factorial) { addSymbol(KEY_FACTORIAL) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Factorial, allowVibration) { addSymbol(KEY_FACTORIAL) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key4, { addSymbol(KEY_4) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key4, allowVibration) { addSymbol(KEY_4) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key5, { addSymbol(KEY_5) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key5, allowVibration) { addSymbol(KEY_5) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key6, { addSymbol(KEY_6) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key6, allowVibration) { addSymbol(KEY_6) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Multiply, { addSymbol(KEY_MULTIPLY_DISPLAY) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Multiply, allowVibration) { addSymbol(KEY_MULTIPLY_DISPLAY) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Divide, { addSymbol(KEY_DIVIDE_DISPLAY) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Divide, allowVibration) { addSymbol(KEY_DIVIDE_DISPLAY) }
} }
Row(Modifier.weight(1f)) { Row(Modifier.weight(1f)) {
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Sin) { addSymbol(KEY_SIN) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Sin, allowVibration) { addSymbol(KEY_SIN) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Cos) { addSymbol(KEY_COS) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Cos, allowVibration) { addSymbol(KEY_COS) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Tan) { addSymbol(KEY_TAN) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Tan, allowVibration) { addSymbol(KEY_TAN) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key1, { addSymbol(KEY_1) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key1, allowVibration) { addSymbol(KEY_1) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key2, { addSymbol(KEY_2) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key2, allowVibration) { addSymbol(KEY_2) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key3, { addSymbol(KEY_3) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key3, allowVibration) { addSymbol(KEY_3) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Minus, { addSymbol(KEY_MINUS_DISPLAY) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Minus, allowVibration) { addSymbol(KEY_MINUS_DISPLAY) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Percent, { addSymbol(KEY_PERCENT) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Percent, allowVibration) { addSymbol(KEY_PERCENT) }
} }
Row(Modifier.weight(1f)) { Row(Modifier.weight(1f)) {
KeyboardButtonAdditional(buttonModifier, UnittoIcons.E) { addSymbol(KEY_E_SMALL) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.E, allowVibration) { addSymbol(KEY_E_SMALL) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Ln) { addSymbol(KEY_LN) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Ln, allowVibration) { addSymbol(KEY_LN) }
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Log) { addSymbol(KEY_LOG) } KeyboardButtonAdditional(buttonModifier, UnittoIcons.Log, allowVibration) { addSymbol(KEY_LOG) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Key0, { addSymbol(KEY_0) }) KeyboardButtonLight(buttonModifier, UnittoIcons.Key0, allowVibration) { addSymbol(KEY_0) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Dot, { addSymbol(KEY_DOT) }) KeyboardButtonLight(buttonModifier, fractionalIcon, allowVibration) { addSymbol(KEY_DOT) }
KeyboardButtonLight(buttonModifier, UnittoIcons.Delete, { deleteSymbol() }, onLongClick = clearSymbols) KeyboardButtonLight(buttonModifier, UnittoIcons.Delete, allowVibration, clearSymbols) { deleteSymbol() }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Plus, { addSymbol(KEY_PLUS) }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Plus, allowVibration) { addSymbol(KEY_PLUS) }
KeyboardButtonFilled(buttonModifier, UnittoIcons.Equal, { evaluate() }) KeyboardButtonFilled(buttonModifier, UnittoIcons.Equal, allowVibration) { evaluate() }
} }
} }
} }
@ -312,11 +322,12 @@ private fun LandscapeKeyboard(
private fun PreviewCalculatorKeyboard() { private fun PreviewCalculatorKeyboard() {
CalculatorKeyboard( CalculatorKeyboard(
modifier = Modifier, modifier = Modifier,
angleMode = AngleMode.DEG,
addSymbol = {}, addSymbol = {},
clearSymbols = {}, clearSymbols = {},
deleteSymbol = {}, deleteSymbol = {},
toggleAngleMode = {}, toggleAngleMode = {},
angleMode = AngleMode.DEG, evaluate = {},
evaluate = {} allowVibration = false
) )
} }

View File

@ -129,34 +129,34 @@ private fun DefaultKeyboard(
// Column modifier // Column modifier
val cModifier = Modifier.weight(1f) val cModifier = Modifier.weight(1f)
Row(cModifier) { Row(cModifier) {
KeyboardButtonFilled(bModifier, UnittoIcons.LeftBracket, { addDigit(KEY_LEFT_BRACKET) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.LeftBracket, allowVibration) { addDigit(KEY_LEFT_BRACKET) }
KeyboardButtonFilled(bModifier, UnittoIcons.RightBracket, { addDigit(KEY_RIGHT_BRACKET) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.RightBracket, allowVibration) { addDigit(KEY_RIGHT_BRACKET) }
KeyboardButtonFilled(bModifier, UnittoIcons.Exponent, { addDigit(KEY_EXPONENT) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.Exponent, allowVibration) { addDigit(KEY_EXPONENT) }
KeyboardButtonFilled(bModifier, UnittoIcons.SquareRoot, { addDigit(KEY_SQRT) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.SquareRoot, allowVibration) { addDigit(KEY_SQRT) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key7, { addDigit(KEY_7) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key7, allowVibration) { addDigit(KEY_7) }
KeyboardButtonLight(bModifier, UnittoIcons.Key8, { addDigit(KEY_8) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key8, allowVibration) { addDigit(KEY_8) }
KeyboardButtonLight(bModifier, UnittoIcons.Key9, { addDigit(KEY_9) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key9, allowVibration) { addDigit(KEY_9) }
KeyboardButtonFilled(bModifier, UnittoIcons.Divide, { addDigit(KEY_DIVIDE) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.Divide, allowVibration) { addDigit(KEY_DIVIDE) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key4, { addDigit(KEY_4) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key4, allowVibration) { addDigit(KEY_4) }
KeyboardButtonLight(bModifier, UnittoIcons.Key5, { addDigit(KEY_5) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key5, allowVibration) { addDigit(KEY_5) }
KeyboardButtonLight(bModifier, UnittoIcons.Key6, { addDigit(KEY_6) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key6, allowVibration) { addDigit(KEY_6) }
KeyboardButtonFilled(bModifier, UnittoIcons.Multiply, { addDigit(KEY_MULTIPLY) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.Multiply, allowVibration) { addDigit(KEY_MULTIPLY) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key1, { addDigit(KEY_1) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key1, allowVibration) { addDigit(KEY_1) }
KeyboardButtonLight(bModifier, UnittoIcons.Key2, { addDigit(KEY_2) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key2, allowVibration) { addDigit(KEY_2) }
KeyboardButtonLight(bModifier, UnittoIcons.Key3, { addDigit(KEY_3) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key3, allowVibration) { addDigit(KEY_3) }
KeyboardButtonFilled(bModifier, UnittoIcons.Minus, { addDigit(KEY_MINUS) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.Minus, allowVibration) { addDigit(KEY_MINUS) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key0, { addDigit(KEY_0) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key0, allowVibration) { addDigit(KEY_0) }
KeyboardButtonLight(bModifier, fractionalIcon, { addDigit(KEY_DOT) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, fractionalIcon, allowVibration) { addDigit(KEY_DOT) }
KeyboardButtonLight(bModifier, UnittoIcons.Delete, { deleteDigit() }, clearInput, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Delete, allowVibration, clearInput) { deleteDigit() }
KeyboardButtonFilled(bModifier, UnittoIcons.Plus, { addDigit(KEY_PLUS) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.Plus, allowVibration) { addDigit(KEY_PLUS) }
} }
} }
} }
@ -178,42 +178,33 @@ private fun BaseKeyboard(
val cModifier = Modifier.weight(1f) val cModifier = Modifier.weight(1f)
Row(cModifier) { Row(cModifier) {
KeyboardButtonFilled(bModifier, UnittoIcons.KeyA, { addDigit(KEY_BASE_A) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyA, allowVibration) { addDigit(KEY_BASE_A) }
KeyboardButtonFilled(bModifier, UnittoIcons.KeyB, { addDigit(KEY_BASE_B) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyB, allowVibration) { addDigit(KEY_BASE_B) }
KeyboardButtonFilled(bModifier, UnittoIcons.KeyC, { addDigit(KEY_BASE_C) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyC, allowVibration) { addDigit(KEY_BASE_C) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonFilled(bModifier, UnittoIcons.KeyD, { addDigit(KEY_BASE_D) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyD, allowVibration) { addDigit(KEY_BASE_D) }
KeyboardButtonFilled(bModifier, UnittoIcons.KeyE, { addDigit(KEY_BASE_E) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyE, allowVibration) { addDigit(KEY_BASE_E) }
KeyboardButtonFilled(bModifier, UnittoIcons.KeyF, { addDigit(KEY_BASE_F) }, allowVibration = allowVibration) KeyboardButtonFilled(bModifier, UnittoIcons.KeyF, allowVibration) { addDigit(KEY_BASE_F) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key7, { addDigit(KEY_7) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key7, allowVibration) { addDigit(KEY_7) }
KeyboardButtonLight(bModifier, UnittoIcons.Key8, { addDigit(KEY_8) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key8, allowVibration) { addDigit(KEY_8) }
KeyboardButtonLight(bModifier, UnittoIcons.Key9, { addDigit(KEY_9) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key9, allowVibration) { addDigit(KEY_9) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key4, { addDigit(KEY_4) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key4, allowVibration) { addDigit(KEY_4) }
KeyboardButtonLight(bModifier, UnittoIcons.Key5, { addDigit(KEY_5) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key5, allowVibration) { addDigit(KEY_5) }
KeyboardButtonLight(bModifier, UnittoIcons.Key6, { addDigit(KEY_6) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key6, allowVibration) { addDigit(KEY_6) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key1, { addDigit(KEY_1) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key1, allowVibration) { addDigit(KEY_1) }
KeyboardButtonLight(bModifier, UnittoIcons.Key2, { addDigit(KEY_2) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key2, allowVibration) { addDigit(KEY_2) }
KeyboardButtonLight(bModifier, UnittoIcons.Key3, { addDigit(KEY_3) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key3, allowVibration) { addDigit(KEY_3) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key0, { addDigit(KEY_0) }, allowVibration = allowVibration) KeyboardButtonLight(bModifier, UnittoIcons.Key0, allowVibration) { addDigit(KEY_0) }
KeyboardButtonLight( KeyboardButtonLight(Modifier.fillMaxSize().weight(2f).padding(4.dp), UnittoIcons.Delete, allowVibration, clearInput) { deleteDigit() }
Modifier
.fillMaxSize()
.weight(2f)
.padding(4.dp),
UnittoIcons.Delete,
allowVibration = allowVibration,
onClick = { deleteDigit() },
onLongClick = clearInput
)
} }
} }
} }

View File

@ -71,29 +71,23 @@ internal fun EpochKeyboard(
.weight(2f) .weight(2f)
.padding(4.dp) .padding(4.dp)
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key7, allowVibration = false, onClick = { addSymbol(KEY_7) }) KeyboardButtonLight(bModifier, UnittoIcons.Key7, false) { addSymbol(KEY_7) }
KeyboardButtonLight(bModifier, UnittoIcons.Key8, allowVibration = false, onClick = { addSymbol(KEY_8) }) KeyboardButtonLight(bModifier, UnittoIcons.Key8, false) { addSymbol(KEY_8) }
KeyboardButtonLight(bModifier, UnittoIcons.Key9, allowVibration = false, onClick = { addSymbol(KEY_9) }) KeyboardButtonLight(bModifier, UnittoIcons.Key9, false) { addSymbol(KEY_9) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key4, allowVibration = false, onClick = { addSymbol(KEY_4) }) KeyboardButtonLight(bModifier, UnittoIcons.Key4, false) { addSymbol(KEY_4) }
KeyboardButtonLight(bModifier, UnittoIcons.Key5, allowVibration = false, onClick = { addSymbol(KEY_5) }) KeyboardButtonLight(bModifier, UnittoIcons.Key5, false) { addSymbol(KEY_5) }
KeyboardButtonLight(bModifier, UnittoIcons.Key6, allowVibration = false, onClick = { addSymbol(KEY_6) }) KeyboardButtonLight(bModifier, UnittoIcons.Key6, false) { addSymbol(KEY_6) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key1, allowVibration = false, onClick = { addSymbol(KEY_1) }) KeyboardButtonLight(bModifier, UnittoIcons.Key1, false) { addSymbol(KEY_1) }
KeyboardButtonLight(bModifier, UnittoIcons.Key2, allowVibration = false, onClick = { addSymbol(KEY_2) }) KeyboardButtonLight(bModifier, UnittoIcons.Key2, false) { addSymbol(KEY_2) }
KeyboardButtonLight(bModifier, UnittoIcons.Key3, allowVibration = false, onClick = { addSymbol(KEY_3) }) KeyboardButtonLight(bModifier, UnittoIcons.Key3, false) { addSymbol(KEY_3) }
} }
Row(cModifier) { Row(cModifier) {
KeyboardButtonLight(bModifier, UnittoIcons.Key0, allowVibration = false, onClick = { addSymbol(KEY_0) }) KeyboardButtonLight(bModifier, UnittoIcons.Key0, false) { addSymbol(KEY_0) }
KeyboardButtonLight( KeyboardButtonLight(dModifier, UnittoIcons.Delete, false, clearSymbols) { deleteSymbol() }
dModifier,
UnittoIcons.Delete,
allowVibration = false,
onClick = { deleteSymbol() },
onLongClick = clearSymbols
)
} }
} }
} }