-
Notifications
You must be signed in to change notification settings - Fork 36
/
DecimalScreen.kt
98 lines (89 loc) · 3.51 KB
/
DecimalScreen.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.davidmiguel.sample
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeGesturesPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Backspace
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.davidmiguel.numberkeyboard.NumberKeyboard
import com.davidmiguel.numberkeyboard.NumberKeyboardAuxButton
import com.davidmiguel.numberkeyboard.NumberKeyboardButton
import com.davidmiguel.numberkeyboard.data.NumberKeyboardData
import com.davidmiguel.numberkeyboard.listener.NumberKeyboardListener
import java.text.DecimalFormat
import java.text.NumberFormat
@Composable
fun DecimalScreen(innerPadding: PaddingValues) {
val currencySymbol = "$"
Column(
Modifier
.padding(innerPadding)
.consumeWindowInsets(innerPadding)
.safeGesturesPadding()
) {
Text(
text = "Number Keyboard",
style = MaterialTheme.typography.headlineLarge,
)
Text(
text = "Decimal",
style = MaterialTheme.typography.titleLarge,
)
Spacer(modifier = Modifier.height(16.dp))
var text by remember { mutableStateOf("$currencySymbol 0") }
Text(
text = text,
style = MaterialTheme.typography.displayLarge,
)
Spacer(modifier = Modifier.weight(1F))
val buttonModifier = Modifier
.weight(1F)
.height(48.dp)
val buttonTextStyle = MaterialTheme.typography.titleMedium
NumberKeyboard(
button = { number, clickedListener ->
NumberKeyboardButton(
modifier = buttonModifier,
textStyle = buttonTextStyle,
number = number,
listener = clickedListener
)
},
leftAuxButton = { clickedListener ->
NumberKeyboardAuxButton(
modifier = buttonModifier,
textStyle = buttonTextStyle,
value = (NumberFormat.getNumberInstance() as DecimalFormat).decimalFormatSymbols.decimalSeparator.toString(),
clicked = { clickedListener.onLeftAuxButtonClicked() }
)
},
rightAuxButton = { clickedListener ->
NumberKeyboardAuxButton(
modifier = buttonModifier,
textStyle = buttonTextStyle,
imageVector = Icons.Rounded.Backspace,
clicked = { clickedListener.onRightAuxButtonClicked() }
)
},
listener = object : NumberKeyboardListener {
override fun onUpdated(data: NumberKeyboardData) {
text = data.currency
}
}
)
Spacer(modifier = Modifier.height(16.dp))
}
}