Skip to content

Commit b6c8f4e

Browse files
committed
feat(ui): use M3 expressive buttons
1 parent 4658907 commit b6c8f4e

File tree

10 files changed

+61
-11
lines changed

10 files changed

+61
-11
lines changed

app/src/foss/java/org/nsh07/pomodoro/billing/TomatoPlusPaywallDialog.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import androidx.compose.foundation.layout.fillMaxSize
2626
import androidx.compose.foundation.layout.height
2727
import androidx.compose.foundation.layout.padding
2828
import androidx.compose.material3.Button
29+
import androidx.compose.material3.ButtonDefaults
30+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
2931
import androidx.compose.material3.Icon
3032
import androidx.compose.material3.MaterialTheme.colorScheme
3133
import androidx.compose.material3.MaterialTheme.typography
@@ -41,6 +43,7 @@ import androidx.compose.ui.unit.dp
4143
import org.nsh07.pomodoro.R
4244
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
4345

46+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
4447
@Composable
4548
fun TomatoPlusPaywallDialog(
4649
isPlus: Boolean,
@@ -77,7 +80,10 @@ fun TomatoPlusPaywallDialog(
7780
modifier = Modifier.padding(horizontal = 24.dp)
7881
)
7982
Spacer(Modifier.height(16.dp))
80-
Button(onClick = { uriHandler.openUri("https://coff.ee/nsh07") }) {
83+
Button(
84+
onClick = { uriHandler.openUri("https://coff.ee/nsh07") },
85+
shapes = ButtonDefaults.shapes()
86+
) {
8187
Text(stringResource(R.string.bmc))
8288
}
8389
}

app/src/foss/java/org/nsh07/pomodoro/ui/settingsScreen/components/AboutButtons.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import androidx.compose.foundation.layout.height
2323
import androidx.compose.foundation.layout.size
2424
import androidx.compose.material3.Button
2525
import androidx.compose.material3.ButtonColors
26+
import androidx.compose.material3.ButtonDefaults
27+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
2628
import androidx.compose.material3.Icon
2729
import androidx.compose.material3.Text
2830
import androidx.compose.runtime.Composable
@@ -34,6 +36,7 @@ import androidx.compose.ui.res.stringResource
3436
import androidx.compose.ui.unit.dp
3537
import org.nsh07.pomodoro.R
3638

39+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
3740
@Composable
3841
fun TopButton(
3942
buttonColors: ButtonColors,
@@ -43,6 +46,7 @@ fun TopButton(
4346
Button(
4447
colors = buttonColors,
4548
onClick = { uriHandler.openUri("https://coff.ee/nsh07") },
49+
shapes = ButtonDefaults.shapes(),
4650
modifier = modifier
4751
) {
4852
Row(
@@ -60,6 +64,7 @@ fun TopButton(
6064
}
6165
}
6266

67+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
6368
@Composable
6469
fun BottomButton(
6570
buttonColors: ButtonColors,
@@ -69,6 +74,7 @@ fun BottomButton(
6974
Button(
7075
colors = buttonColors,
7176
onClick = { uriHandler.openUri("https://hosted.weblate.org/engage/tomato/") },
77+
shapes = ButtonDefaults.shapes(),
7278
modifier = modifier
7379
) {
7480
Row(

app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/components/AboutCard.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ import androidx.compose.foundation.layout.size
2929
import androidx.compose.material3.ButtonDefaults
3030
import androidx.compose.material3.Card
3131
import androidx.compose.material3.CardDefaults
32+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
3233
import androidx.compose.material3.Icon
3334
import androidx.compose.material3.IconButton
35+
import androidx.compose.material3.IconButtonDefaults
3436
import androidx.compose.material3.MaterialTheme
3537
import androidx.compose.material3.MaterialTheme.colorScheme
3638
import androidx.compose.material3.MaterialTheme.shapes
@@ -48,6 +50,7 @@ import org.nsh07.pomodoro.R
4850
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
4951

5052
// Taken from https://github.com/shub39/Grit/blob/master/app/src/main/java/com/shub39/grit/core/presentation/settings/ui/component/AboutApp.kt
53+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
5154
@Composable
5255
fun AboutCard(
5356
isPlus: Boolean,
@@ -92,7 +95,8 @@ fun AboutCard(
9295
IconButton(
9396
onClick = {
9497
Toast.makeText(context, "Coming soon...", Toast.LENGTH_SHORT).show()
95-
}
98+
},
99+
shapes = IconButtonDefaults.shapes()
96100
) {
97101
Icon(
98102
painterResource(R.drawable.discord),
@@ -102,7 +106,8 @@ fun AboutCard(
102106
}
103107

104108
IconButton(
105-
onClick = { uriHandler.openUri("https://github.com/nsh07/Tomato") }
109+
onClick = { uriHandler.openUri("https://github.com/nsh07/Tomato") },
110+
shapes = IconButtonDefaults.shapes()
106111
) {
107112
Icon(
108113
painterResource(R.drawable.github),

app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/components/PlusDivider.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import androidx.compose.foundation.layout.Box
2222
import androidx.compose.foundation.layout.padding
2323
import androidx.compose.foundation.shape.CircleShape
2424
import androidx.compose.material3.Button
25+
import androidx.compose.material3.ButtonDefaults
26+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
2527
import androidx.compose.material3.HorizontalDivider
2628
import androidx.compose.material3.MaterialTheme.colorScheme
2729
import androidx.compose.material3.MaterialTheme.typography
@@ -32,6 +34,7 @@ import androidx.compose.ui.Modifier
3234
import androidx.compose.ui.draw.clip
3335
import androidx.compose.ui.unit.dp
3436

37+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
3538
@Composable
3639
fun PlusDivider(
3740
setShowPaywall: (Boolean) -> Unit,
@@ -41,6 +44,7 @@ fun PlusDivider(
4144
HorizontalDivider(modifier = Modifier.clip(CircleShape), thickness = 4.dp)
4245
Button(
4346
onClick = { setShowPaywall(true) },
47+
shapes = ButtonDefaults.shapes(),
4448
modifier = Modifier
4549
.background(colorScheme.surfaceContainer)
4650
.padding(horizontal = 8.dp)

app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/screens/AlarmSettings.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ import androidx.compose.foundation.lazy.LazyColumn
3838
import androidx.compose.foundation.lazy.itemsIndexed
3939
import androidx.compose.material3.ExperimentalMaterial3Api
4040
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
41+
import androidx.compose.material3.FilledTonalIconButton
4142
import androidx.compose.material3.Icon
42-
import androidx.compose.material3.IconButton
43+
import androidx.compose.material3.IconButtonDefaults
4344
import androidx.compose.material3.LargeFlexibleTopAppBar
4445
import androidx.compose.material3.ListItem
4546
import androidx.compose.material3.Switch
@@ -156,7 +157,11 @@ fun AlarmSettings(
156157
Text(stringResource(R.string.settings))
157158
},
158159
navigationIcon = {
159-
IconButton(onBack) {
160+
FilledTonalIconButton(
161+
onClick = onBack,
162+
shapes = IconButtonDefaults.shapes(),
163+
colors = IconButtonDefaults.filledTonalIconButtonColors(containerColor = listItemColors.containerColor)
164+
) {
160165
Icon(
161166
painterResource(R.drawable.arrow_back),
162167
null

app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/screens/AppearanceSettings.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ import androidx.compose.foundation.layout.size
2828
import androidx.compose.foundation.lazy.LazyColumn
2929
import androidx.compose.material3.ExperimentalMaterial3Api
3030
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
31+
import androidx.compose.material3.FilledTonalIconButton
3132
import androidx.compose.material3.Icon
32-
import androidx.compose.material3.IconButton
33+
import androidx.compose.material3.IconButtonDefaults
3334
import androidx.compose.material3.LargeFlexibleTopAppBar
3435
import androidx.compose.material3.ListItem
3536
import androidx.compose.material3.Switch
@@ -80,7 +81,11 @@ fun AppearanceSettings(
8081
Text(stringResource(R.string.settings))
8182
},
8283
navigationIcon = {
83-
IconButton(onBack) {
84+
FilledTonalIconButton(
85+
onClick = onBack,
86+
shapes = IconButtonDefaults.shapes(),
87+
colors = IconButtonDefaults.filledTonalIconButtonColors(containerColor = listItemColors.containerColor)
88+
) {
8489
Icon(
8590
painterResource(R.drawable.arrow_back),
8691
null

app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/screens/TimerSettings.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ import androidx.compose.foundation.text.input.TextFieldState
4444
import androidx.compose.foundation.text.input.rememberTextFieldState
4545
import androidx.compose.material3.ExperimentalMaterial3Api
4646
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
47+
import androidx.compose.material3.FilledTonalIconButton
4748
import androidx.compose.material3.FilledTonalIconToggleButton
4849
import androidx.compose.material3.Icon
49-
import androidx.compose.material3.IconButton
5050
import androidx.compose.material3.IconButtonDefaults
5151
import androidx.compose.material3.LargeFlexibleTopAppBar
5252
import androidx.compose.material3.ListItem
@@ -150,7 +150,11 @@ fun TimerSettings(
150150
Text(stringResource(R.string.settings))
151151
},
152152
navigationIcon = {
153-
IconButton(onBack) {
153+
FilledTonalIconButton(
154+
onClick = onBack,
155+
shapes = IconButtonDefaults.shapes(),
156+
colors = IconButtonDefaults.filledTonalIconButtonColors(containerColor = listItemColors.containerColor)
157+
) {
154158
Icon(
155159
painterResource(R.drawable.arrow_back),
156160
null

app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/AlarmDialog.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ import androidx.compose.foundation.layout.height
2727
import androidx.compose.foundation.layout.padding
2828
import androidx.compose.foundation.layout.size
2929
import androidx.compose.material3.Button
30+
import androidx.compose.material3.ButtonDefaults
3031
import androidx.compose.material3.ExperimentalMaterial3Api
32+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
3133
import androidx.compose.material3.Icon
3234
import androidx.compose.material3.LocalContentColor
3335
import androidx.compose.material3.MaterialTheme.colorScheme
@@ -47,7 +49,7 @@ import androidx.compose.ui.window.DialogProperties
4749
import org.nsh07.pomodoro.R
4850
import org.nsh07.pomodoro.ui.theme.TomatoTheme
4951

50-
@OptIn(ExperimentalMaterial3Api::class)
52+
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
5153
@Composable
5254
fun AlarmDialog(
5355
modifier: Modifier = Modifier,
@@ -90,6 +92,7 @@ fun AlarmDialog(
9092
Spacer(modifier = Modifier.height(24.dp))
9193
Button(
9294
onClick = stopAlarm,
95+
shapes = ButtonDefaults.shapes(),
9396
modifier = Modifier.align(Alignment.End),
9497
) {
9598
Text(stringResource(R.string.stop_alarm))

app/src/play/java/org/nsh07/pomodoro/billing/TomatoPlusPaywallDialog.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
package org.nsh07.pomodoro.billing
1919

2020
import androidx.compose.foundation.layout.padding
21+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
2122
import androidx.compose.material3.FilledTonalIconButton
2223
import androidx.compose.material3.Icon
24+
import androidx.compose.material3.IconButtonDefaults
2325
import androidx.compose.material3.Scaffold
2426
import androidx.compose.runtime.Composable
2527
import androidx.compose.runtime.remember
@@ -30,7 +32,9 @@ import com.revenuecat.purchases.ui.revenuecatui.Paywall
3032
import com.revenuecat.purchases.ui.revenuecatui.PaywallOptions
3133
import com.revenuecat.purchases.ui.revenuecatui.customercenter.CustomerCenter
3234
import org.nsh07.pomodoro.R
35+
import org.nsh07.pomodoro.ui.theme.CustomColors.listItemColors
3336

37+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
3438
@Composable
3539
fun TomatoPlusPaywallDialog(
3640
isPlus: Boolean,
@@ -46,12 +50,14 @@ fun TomatoPlusPaywallDialog(
4650

4751
FilledTonalIconButton(
4852
onClick = onDismiss,
53+
shapes = IconButtonDefaults.shapes(),
54+
colors = IconButtonDefaults.filledTonalIconButtonColors(containerColor = listItemColors.containerColor),
4955
modifier = Modifier
5056
.padding(innerPadding)
5157
.padding(16.dp)
5258
) {
5359
Icon(
54-
painterResource(R.drawable.arrow_back),
60+
painterResource(R.drawable.clear),
5561
null
5662
)
5763
}

app/src/play/java/org/nsh07/pomodoro/ui/settingsScreen/components/AboutButtons.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import androidx.compose.foundation.layout.Row
2222
import androidx.compose.foundation.layout.size
2323
import androidx.compose.material3.Button
2424
import androidx.compose.material3.ButtonColors
25+
import androidx.compose.material3.ButtonDefaults
26+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
2527
import androidx.compose.material3.Icon
2628
import androidx.compose.material3.Text
2729
import androidx.compose.runtime.Composable
@@ -33,6 +35,7 @@ import androidx.compose.ui.res.stringResource
3335
import androidx.compose.ui.unit.dp
3436
import org.nsh07.pomodoro.R
3537

38+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
3639
@Composable
3740
fun TopButton(
3841
buttonColors: ButtonColors,
@@ -42,6 +45,7 @@ fun TopButton(
4245
Button(
4346
colors = buttonColors,
4447
onClick = { uriHandler.openUri("https://hosted.weblate.org/engage/tomato/") },
48+
shapes = ButtonDefaults.shapes(),
4549
modifier = modifier
4650
) {
4751
Row(
@@ -59,6 +63,7 @@ fun TopButton(
5963
}
6064
}
6165

66+
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
6267
@Composable
6368
fun BottomButton(
6469
buttonColors: ButtonColors,
@@ -68,6 +73,7 @@ fun BottomButton(
6873
Button(
6974
colors = buttonColors,
7075
onClick = { uriHandler.openUri("https://play.google.com/store/apps/details?id=org.nsh07.pomodoro") },
76+
shapes = ButtonDefaults.shapes(),
7177
modifier = modifier
7278
) {
7379
Row(

0 commit comments

Comments
 (0)