Skip to content

Commit 7321e27

Browse files
committed
Colors, style adjustments
1 parent ca2972f commit 7321e27

File tree

6 files changed

+153
-62
lines changed

6 files changed

+153
-62
lines changed

app/src/main/java/org/mydomain/myscan/ui/theme/Color.kt

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,50 @@ package org.mydomain.myscan.ui.theme
1616

1717
import androidx.compose.ui.graphics.Color
1818

19-
val Purple80 = Color(0xFFD0BCFF)
20-
val PurpleGrey80 = Color(0xFFCCC2DC)
21-
val Pink80 = Color(0xFFEFB8C8)
19+
val Primary = Color(0xFF33BE41)
20+
val OnPrimary = Color(0xFFFFFFFF)
21+
val PrimaryContainer = Color(0xFF7BD785)
22+
val OnPrimaryContainer = Color(0xFF0D3311)
23+
val Secondary = Color(0xFF52CBA7)
24+
val OnSecondary = Color(0xFFFFFFFF)
25+
val SecondaryContainer = Color(0xFFBAE6D8)
26+
val OnSecondaryContainer = Color(0xFF14332A)
27+
val Tertiary = Color(0xFF8976D6)
28+
val OnTertiary = Color(0xFFFFFFFF)
29+
val TertiaryContainer = Color(0xFFCBC5E6)
30+
val OnTertiaryContainer = Color(0xFF211C33)
31+
val Error = Color(0xFFB3261E)
32+
val OnError = Color(0xFFFFFFFF)
33+
val ErrorContainer = Color(0xFFE6ACA9)
34+
val OnErrorContainer = Color(0xFF330B09)
35+
val Background = Color(0xFFfcfcfc)
36+
val OnBackground = Color(0xFF313331)
37+
val Surface = Color(0xFFfcfcfc)
38+
val OnSurface = Color(0xFF313331)
39+
val SurfaceVariant = Color(0xFFdbe6dc)
40+
val OnSurfaceVariant = Color(0xFF576658)
41+
val Outline = Color(0xFF829984)
2242

23-
val Purple40 = Color(0xFF6650a4)
24-
val PurpleGrey40 = Color(0xFF625b71)
25-
val Pink40 = Color(0xFF7D5260)
43+
val PrimaryDark = Color(0xFF9AE6A1)
44+
val OnPrimaryDark = Color(0xFF144C19)
45+
val PrimaryContainerDark = Color(0xFF1B6622)
46+
val OnPrimaryContainerDark = Color(0xFFB0E6B5)
47+
val SecondaryDark = Color(0xFFA8E6D3)
48+
val OnSecondaryDark = Color(0xFF1F4C3F)
49+
val SecondaryContainerDark = Color(0xFF296654)
50+
val OnSecondaryContainerDark = Color(0xFFBAE6D8)
51+
val TertiaryDark = Color(0xFFC1B7E6)
52+
val OnTertiaryDark = Color(0xFF312A4C)
53+
val TertiaryContainerDark = Color(0xFF413866)
54+
val OnTertiaryContainerDark = Color(0xFFCBC5E6)
55+
val ErrorDark = Color(0xFFE69490)
56+
val OnErrorDark = Color(0xFF4C100D)
57+
val ErrorContainerDark = Color(0xFF661511)
58+
val OnErrorContainerDark = Color(0xFFE6ACA9)
59+
val BackgroundDark = Color(0xFF313331)
60+
val OnBackgroundDark = Color(0xFFe3e6e3)
61+
val SurfaceDark = Color(0xFF313331)
62+
val OnSurfaceDark = Color(0xFFe3e6e3)
63+
val SurfaceVariantDark = Color(0xFF576658)
64+
val OnSurfaceVariantDark = Color(0xFFd6e6d8)
65+
val OutlineDark = Color(0xFFa2b3a3)

app/src/main/java/org/mydomain/myscan/ui/theme/Theme.kt

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,52 +14,70 @@
1414
*/
1515
package org.mydomain.myscan.ui.theme
1616

17-
import android.app.Activity
18-
import android.os.Build
1917
import androidx.compose.foundation.isSystemInDarkTheme
2018
import androidx.compose.material3.MaterialTheme
2119
import androidx.compose.material3.darkColorScheme
22-
import androidx.compose.material3.dynamicDarkColorScheme
23-
import androidx.compose.material3.dynamicLightColorScheme
2420
import androidx.compose.material3.lightColorScheme
2521
import androidx.compose.runtime.Composable
26-
import androidx.compose.ui.platform.LocalContext
2722

2823
private val DarkColorScheme = darkColorScheme(
29-
primary = Purple80,
30-
secondary = PurpleGrey80,
31-
tertiary = Pink80
24+
primary = PrimaryDark,
25+
onPrimary = OnPrimaryDark,
26+
primaryContainer = PrimaryContainerDark,
27+
onPrimaryContainer = OnPrimaryContainerDark,
28+
secondary = SecondaryDark,
29+
onSecondary = OnSecondaryDark,
30+
secondaryContainer = SecondaryContainerDark,
31+
onSecondaryContainer = OnSecondaryContainerDark,
32+
tertiary = TertiaryDark,
33+
onTertiary = OnTertiaryDark,
34+
tertiaryContainer = TertiaryContainerDark,
35+
onTertiaryContainer = OnTertiaryContainerDark,
36+
error = ErrorDark,
37+
onError = OnErrorDark,
38+
errorContainer = ErrorContainerDark,
39+
onErrorContainer = OnErrorContainerDark,
40+
background = BackgroundDark,
41+
onBackground = OnBackgroundDark,
42+
surface = SurfaceDark,
43+
onSurface = OnSurfaceDark,
44+
surfaceVariant = SurfaceVariantDark,
45+
onSurfaceVariant = OnSurfaceVariantDark,
46+
outline = OutlineDark
3247
)
3348

3449
private val LightColorScheme = lightColorScheme(
35-
primary = Purple40,
36-
secondary = PurpleGrey40,
37-
tertiary = Pink40
38-
39-
/* Other default colors to override
40-
background = Color(0xFFFFFBFE),
41-
surface = Color(0xFFFFFBFE),
42-
onPrimary = Color.White,
43-
onSecondary = Color.White,
44-
onTertiary = Color.White,
45-
onBackground = Color(0xFF1C1B1F),
46-
onSurface = Color(0xFF1C1B1F),
47-
*/
50+
primary = Primary,
51+
onPrimary = OnPrimary,
52+
primaryContainer = PrimaryContainer,
53+
onPrimaryContainer = OnPrimaryContainer,
54+
secondary = Secondary,
55+
onSecondary = OnSecondary,
56+
secondaryContainer = SecondaryContainer,
57+
onSecondaryContainer = OnSecondaryContainer,
58+
tertiary = Tertiary,
59+
onTertiary = OnTertiary,
60+
tertiaryContainer = TertiaryContainer,
61+
onTertiaryContainer = OnTertiaryContainer,
62+
error = Error,
63+
onError = OnError,
64+
errorContainer = ErrorContainer,
65+
onErrorContainer = OnErrorContainer,
66+
background = Background,
67+
onBackground = OnBackground,
68+
surface = Surface,
69+
onSurface = OnSurface,
70+
surfaceVariant = SurfaceVariant,
71+
onSurfaceVariant = OnSurfaceVariant,
72+
outline = Outline
4873
)
4974

5075
@Composable
5176
fun MyScanTheme(
5277
darkTheme: Boolean = isSystemInDarkTheme(),
53-
// Dynamic color is available on Android 12+
54-
dynamicColor: Boolean = true,
5578
content: @Composable () -> Unit
5679
) {
5780
val colorScheme = when {
58-
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
59-
val context = LocalContext.current
60-
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
61-
}
62-
6381
darkTheme -> DarkColorScheme
6482
else -> LightColorScheme
6583
}

app/src/main/java/org/mydomain/myscan/view/CameraPreview.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider
3434
import androidx.camera.view.PreviewView
3535
import androidx.compose.foundation.Canvas
3636
import androidx.compose.foundation.layout.fillMaxSize
37+
import androidx.compose.material3.MaterialTheme
3738
import androidx.compose.runtime.Composable
3839
import androidx.compose.runtime.DisposableEffect
3940
import androidx.compose.runtime.LaunchedEffect
@@ -155,6 +156,7 @@ fun AnalysisOverlay(liveAnalysisState: LiveAnalysisState, debugMode: Boolean) {
155156
if (binaryMask == null) {
156157
return
157158
}
159+
val quadColor = MaterialTheme.colorScheme.primary
158160
Canvas(modifier = Modifier.fillMaxSize()) {
159161
if (debugMode) {
160162
drawMask(this, binaryMask)
@@ -167,7 +169,7 @@ fun AnalysisOverlay(liveAnalysisState: LiveAnalysisState, debugMode: Boolean) {
167169
toHeight = size.height.toInt()
168170
)
169171
scaledQuad.edges().forEach {
170-
drawLine(Color.Green, it.from.toOffset(), it.to.toOffset(), 10.0f)
172+
drawLine(quadColor, it.from.toOffset(), it.to.toOffset(), 10.0f)
171173
}
172174
}
173175
}

app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ fun CameraScreenFooter(
391391
Column (modifier = Modifier.background(MaterialTheme.colorScheme.surfaceContainer)) {
392392
pageList()
393393
BottomAppBar(
394-
containerColor = Color.Transparent
394+
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh,
395395
) {
396396
Row (
397397
modifier = Modifier

app/src/main/java/org/mydomain/myscan/view/DocumentScreen.kt

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ import androidx.compose.material3.AlertDialog
3737
import androidx.compose.material3.BottomAppBar
3838
import androidx.compose.material3.Button
3939
import androidx.compose.material3.ExperimentalMaterial3Api
40-
import androidx.compose.material3.FloatingActionButton
40+
import androidx.compose.material3.FilledIconButton
4141
import androidx.compose.material3.Icon
4242
import androidx.compose.material3.IconButton
43+
import androidx.compose.material3.IconButtonDefaults
4344
import androidx.compose.material3.MaterialTheme
4445
import androidx.compose.material3.Scaffold
45-
import androidx.compose.material3.SmallFloatingActionButton
4646
import androidx.compose.material3.Text
4747
import androidx.compose.material3.TextButton
4848
import androidx.compose.material3.TopAppBar
@@ -58,6 +58,7 @@ import androidx.compose.ui.Alignment
5858
import androidx.compose.ui.Modifier
5959
import androidx.compose.ui.geometry.Size
6060
import androidx.compose.ui.graphics.asImageBitmap
61+
import androidx.compose.ui.graphics.vector.ImageVector
6162
import androidx.compose.ui.platform.LocalContext
6263
import androidx.compose.ui.tooling.preview.Preview
6364
import androidx.compose.ui.unit.dp
@@ -91,8 +92,8 @@ fun DocumentScreen(
9192
topBar = {
9293
TopAppBar(
9394
colors = TopAppBarDefaults.topAppBarColors(
94-
containerColor = MaterialTheme.colorScheme.primaryContainer,
95-
titleContentColor = MaterialTheme.colorScheme.primary,
95+
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh,
96+
titleContentColor = MaterialTheme.colorScheme.onSurface,
9697
),
9798
title = { Text("Finalize document") },
9899
navigationIcon = {
@@ -106,6 +107,7 @@ fun DocumentScreen(
106107
Column {
107108
PageList(pageIds, imageLoader, currentPageIndex, toCameraScreen)
108109
BottomAppBar(
110+
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh,
109111
actions = {
110112
Button(onClick = onSharePressed) {
111113
Icon(Icons.Default.Share, contentDescription = "Share")
@@ -120,9 +122,12 @@ fun DocumentScreen(
120122
}
121123
},
122124
floatingActionButton = {
123-
FloatingActionButton(onClick = { showDialog.value = true }) {
124-
Icon(Icons.Default.RestartAlt, contentDescription = "Close")
125-
}
125+
MyIconButton(
126+
icon = Icons.Default.RestartAlt,
127+
contentDescription = "Restart",
128+
onClick = { showDialog.value = true },
129+
modifier = Modifier.padding(vertical = 8.dp)
130+
)
126131
}
127132
)
128133
}
@@ -147,7 +152,7 @@ private fun DocumentPreview(
147152
Column (
148153
modifier = Modifier
149154
.fillMaxSize()
150-
.background(MaterialTheme.colorScheme.surfaceContainer)
155+
.background(MaterialTheme.colorScheme.surfaceContainerLow)
151156
.padding(padding)
152157
) {
153158
Box (
@@ -163,23 +168,25 @@ private fun DocumentPreview(
163168
LaunchedEffect(imageId) {
164169
zoomState.reset()
165170
}
166-
Image(
167-
bitmap = imageBitmap,
168-
contentDescription = null,
169-
modifier = Modifier
170-
.padding(4.dp)
171-
.align(Alignment.Center)
172-
.zoomable(zoomState)
173-
)
171+
Box(modifier = Modifier.fillMaxSize(0.92f).align(Alignment.Center)) {
172+
Image(
173+
bitmap = imageBitmap,
174+
contentDescription = null,
175+
modifier = Modifier
176+
.padding(4.dp)
177+
.align(Alignment.Center)
178+
.zoomable(zoomState)
179+
)
180+
}
174181
}
175-
SmallFloatingActionButton(
182+
MyIconButton(
183+
Icons.Outlined.Delete,
184+
contentDescription = "Delete page",
176185
onClick = { onDeleteImage(imageId) },
177186
modifier = Modifier
178187
.align(Alignment.TopEnd)
179-
.padding(4.dp)
180-
) {
181-
Icon(imageVector = Icons.Outlined.Delete, contentDescription = "Delete page")
182-
}
188+
.padding(8.dp)
189+
)
183190
Text("${currentPageIndex.intValue + 1} / ${pageIds.size}",
184191
color = MaterialTheme.colorScheme.inverseOnSurface,
185192
modifier = Modifier
@@ -206,14 +213,14 @@ private fun PageList(
206213
onPageClick = { index -> currentPageIndex.value = index },
207214
currentPageIndex = currentPageIndex.value,
208215
)
209-
SmallFloatingActionButton(
216+
MyIconButton(
217+
icon = Icons.Default.Add,
210218
onClick = toCameraScreen,
219+
contentDescription = "Add page",
211220
modifier = Modifier
212221
.align(Alignment.CenterEnd)
213222
.padding(8.dp)
214-
) {
215-
Icon(imageVector = Icons.Default.Add, contentDescription = "Add page")
216-
}
223+
)
217224
}
218225
}
219226

@@ -239,6 +246,30 @@ fun NewDocumentDialog(onConfirm: () -> Unit, showDialog: MutableState<Boolean>)
239246
)
240247
}
241248

249+
@Composable
250+
fun MyIconButton(
251+
icon: ImageVector,
252+
contentDescription: String,
253+
onClick: () -> Unit,
254+
modifier: Modifier = Modifier
255+
) {
256+
FilledIconButton (
257+
onClick = onClick,
258+
colors = IconButtonDefaults.outlinedIconButtonColors(
259+
containerColor = MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f),
260+
contentColor = MaterialTheme.colorScheme.primary
261+
),
262+
modifier = modifier.size(40.dp)
263+
) {
264+
Icon(
265+
imageVector = icon,
266+
contentDescription = contentDescription,
267+
tint = MaterialTheme.colorScheme.primary
268+
)
269+
}
270+
}
271+
272+
242273
@Composable
243274
@Preview
244275
fun DocumentScreenPreview() {

app/src/main/java/org/mydomain/myscan/view/PageList.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ fun CommonPageList(
6060
LazyRow (
6161
state = listState,
6262
contentPadding = PaddingValues(4.dp),
63-
modifier = Modifier.fillMaxWidth(),
63+
modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.surfaceContainer),
6464
horizontalArrangement = Arrangement.spacedBy(8.dp),
6565
verticalAlignment = Alignment.CenterVertically
6666
) {

0 commit comments

Comments
 (0)