Skip to content

Commit b9480fb

Browse files
committed
Update edge to edge
1 parent 0604b5e commit b9480fb

File tree

27 files changed

+223
-145
lines changed

27 files changed

+223
-145
lines changed

app/src/main/java/org/greenstand/android/TreeTracker/activities/TreeTrackerActivity.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ package org.greenstand.android.TreeTracker.activities
1717

1818
import android.os.Bundle
1919
import androidx.activity.ComponentActivity
20+
import androidx.activity.SystemBarStyle
2021
import androidx.activity.compose.setContent
22+
import androidx.activity.enableEdgeToEdge
2123
import androidx.compose.runtime.ExperimentalComposeApi
2224
import org.greenstand.android.TreeTracker.models.LanguageSwitcher
2325
import org.greenstand.android.TreeTracker.models.TreeTrackerViewModelFactory
@@ -37,6 +39,15 @@ class TreeTrackerActivity : ComponentActivity() {
3739
override fun onCreate(savedInstanceState: Bundle?) {
3840
super.onCreate(savedInstanceState)
3941

42+
enableEdgeToEdge(
43+
statusBarStyle = SystemBarStyle.dark(
44+
scrim = android.graphics.Color.argb(128, 0, 0, 0) // 50% black scrim
45+
),
46+
navigationBarStyle = SystemBarStyle.dark(
47+
scrim = android.graphics.Color.argb(128, 0, 0, 0)
48+
)
49+
)
50+
4051
languageSwitcher.applyCurrentLanguage(this)
4152

4253
setContent {

app/src/main/java/org/greenstand/android/TreeTracker/camera/ImageReviewScreen.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ package org.greenstand.android.TreeTracker.camera
1818
import android.app.Activity
1919
import android.content.Intent
2020
import androidx.appcompat.app.AppCompatActivity
21-
import androidx.compose.foundation.layout.*
21+
import androidx.compose.foundation.layout.Arrangement
22+
import androidx.compose.foundation.layout.Row
23+
import androidx.compose.foundation.layout.fillMaxSize
24+
import androidx.compose.foundation.layout.fillMaxWidth
25+
import androidx.compose.foundation.layout.navigationBarsPadding
26+
import androidx.compose.foundation.layout.padding
2227
import androidx.compose.material.Scaffold
2328
import androidx.compose.runtime.Composable
2429
import androidx.compose.ui.Modifier
@@ -28,7 +33,8 @@ import androidx.compose.ui.unit.dp
2833
import org.greenstand.android.TreeTracker.activities.CaptureImageContract
2934
import org.greenstand.android.TreeTracker.models.NavRoute
3035
import org.greenstand.android.TreeTracker.root.LocalNavHostController
31-
import org.greenstand.android.TreeTracker.view.*
36+
import org.greenstand.android.TreeTracker.view.ApprovalButton
37+
import org.greenstand.android.TreeTracker.view.LocalImage
3238

3339
@Composable
3440
fun ImageReviewScreen(photoPath: String) {
@@ -41,6 +47,7 @@ fun ImageReviewScreen(photoPath: String) {
4147
Row(
4248
modifier = Modifier
4349
.fillMaxWidth()
50+
.navigationBarsPadding()
4451
.padding(bottom = 12.dp),
4552
horizontalArrangement = Arrangement.Center,
4653
) {

app/src/main/java/org/greenstand/android/TreeTracker/camera/SelfieScreen.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ import androidx.compose.foundation.layout.Box
1919
import androidx.compose.foundation.layout.aspectRatio
2020
import androidx.compose.foundation.layout.fillMaxSize
2121
import androidx.compose.foundation.layout.fillMaxWidth
22+
import androidx.compose.foundation.layout.navigationBarsPadding
2223
import androidx.compose.foundation.layout.padding
24+
import androidx.compose.foundation.layout.statusBarsPadding
2325
import androidx.compose.material.Scaffold
2426
import androidx.compose.runtime.Composable
2527
import androidx.compose.runtime.getValue
@@ -49,13 +51,15 @@ fun SelfieScreen() {
4951
Scaffold(
5052
topBar = {
5153
ActionBar(
54+
modifier = Modifier.statusBarsPadding(),
5255
centerAction = {
5356
TopBarTitle()
5457
},
5558
)
5659
},
5760
bottomBar = {
5861
ActionBar(
62+
modifier = Modifier.navigationBarsPadding(),
5963
rightAction = {
6064
InfoButton(
6165
modifier = Modifier.align(Alignment.Center),
@@ -80,6 +84,7 @@ fun SelfieScreen() {
8084
Box(
8185
modifier = Modifier
8286
.fillMaxSize()
87+
.padding(it)
8388
.padding(bottom = 10.dp),
8489
contentAlignment = Alignment.BottomCenter
8590
) {

app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeCaptureScreen.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ import androidx.compose.foundation.layout.Spacer
2626
import androidx.compose.foundation.layout.fillMaxSize
2727
import androidx.compose.foundation.layout.fillMaxWidth
2828
import androidx.compose.foundation.layout.height
29+
import androidx.compose.foundation.layout.navigationBarsPadding
2930
import androidx.compose.foundation.layout.padding
3031
import androidx.compose.foundation.layout.size
32+
import androidx.compose.foundation.layout.statusBarsPadding
3133
import androidx.compose.foundation.layout.wrapContentHeight
3234
import androidx.compose.foundation.shape.RoundedCornerShape
3335
import androidx.compose.material.CircularProgressIndicator
@@ -95,7 +97,9 @@ fun TreeCaptureScreen(
9597
Scaffold(
9698
bottomBar = {
9799
ActionBar(
98-
modifier = Modifier.background(color = AppColors.Gray),
100+
modifier = Modifier
101+
.navigationBarsPadding()
102+
.background(color = AppColors.Gray),
99103
leftAction = {
100104
ArrowButton(
101105
isLeft = true,
@@ -129,7 +133,7 @@ fun TreeCaptureScreen(
129133
}
130134
)
131135
}
132-
) {
136+
) { padding ->
133137
if (state.isLocationAvailable == false) {
134138
CustomDialog(
135139
dialogIcon = painterResource(id = R.drawable.error_outline),
@@ -162,6 +166,7 @@ fun TreeCaptureScreen(
162166
}
163167
)
164168
ActionBar(
169+
modifier = Modifier.background(Color.Black).statusBarsPadding(),
165170
leftAction = {
166171
UserImageButton(
167172
onClick = {
@@ -204,15 +209,18 @@ fun TreeCaptureScreen(
204209
}
205210

206211
@Composable
207-
fun CaptureCustomLoading(isLoading: Boolean, progress: Float) {
212+
fun CaptureCustomLoading(
213+
modifier: Modifier = Modifier,
214+
isLoading: Boolean,
215+
progress: Float
216+
) {
208217
if (isLoading) {
209218
Box(
210-
modifier = Modifier
219+
modifier = modifier
211220
.padding(bottom = 90.dp)
212221
.fillMaxSize(),
213222
contentAlignment = Alignment.BottomCenter
214223
) {
215-
216224
Column(
217225
modifier = Modifier
218226
.align(Alignment.BottomCenter)

app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeImageReviewScreen.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ import androidx.compose.foundation.layout.Arrangement
1919
import androidx.compose.foundation.layout.Row
2020
import androidx.compose.foundation.layout.fillMaxSize
2121
import androidx.compose.foundation.layout.fillMaxWidth
22+
import androidx.compose.foundation.layout.navigationBarsPadding
2223
import androidx.compose.foundation.layout.padding
2324
import androidx.compose.foundation.layout.size
25+
import androidx.compose.foundation.layout.statusBarsPadding
2426
import androidx.compose.material.Scaffold
2527
import androidx.compose.material.Text
2628
import androidx.compose.runtime.Composable
@@ -57,8 +59,10 @@ fun TreeImageReviewScreen(
5759
val scope = rememberCoroutineScope()
5860

5961
Scaffold(
62+
modifier = Modifier,
6063
topBar = {
6164
ActionBar(
65+
modifier = Modifier.statusBarsPadding(),
6266
centerAction = {
6367
TreeTrackerButton(
6468
modifier = Modifier
@@ -77,6 +81,7 @@ fun TreeImageReviewScreen(
7781
Row(
7882
modifier = Modifier
7983
.fillMaxWidth()
84+
.navigationBarsPadding()
8085
.padding(bottom = 12.dp),
8186
horizontalArrangement = Arrangement.Center,
8287
) {
@@ -117,7 +122,7 @@ fun TreeImageReviewScreen(
117122
)
118123
}
119124
LocalImage(
120-
modifier = Modifier.fillMaxSize(),
125+
modifier = Modifier.fillMaxSize().navigationBarsPadding(),
121126
imagePath = state.treeImagePath ?: "",
122127
contentDescription = null,
123128
contentScale = ContentScale.Fit

app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardScreen.kt

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.greenstand.android.TreeTracker.dashboard
1717

18+
import androidx.compose.animation.core.animateFloatAsState
1819
import androidx.compose.foundation.Canvas
1920
import androidx.compose.foundation.Image
2021
import androidx.compose.foundation.clickable
@@ -27,18 +28,27 @@ import androidx.compose.foundation.layout.aspectRatio
2728
import androidx.compose.foundation.layout.fillMaxHeight
2829
import androidx.compose.foundation.layout.fillMaxSize
2930
import androidx.compose.foundation.layout.fillMaxWidth
31+
import androidx.compose.foundation.layout.navigationBarsPadding
3032
import androidx.compose.foundation.layout.padding
3133
import androidx.compose.foundation.layout.size
34+
import androidx.compose.foundation.layout.statusBarsPadding
3235
import androidx.compose.foundation.layout.wrapContentHeight
3336
import androidx.compose.foundation.progressSemantics
3437
import androidx.compose.material.ButtonColors
38+
import androidx.compose.material.ProgressIndicatorDefaults
3539
import androidx.compose.material.Scaffold
3640
import androidx.compose.material.Snackbar
3741
import androidx.compose.material.SnackbarHost
3842
import androidx.compose.material.Text
3943
import androidx.compose.material.rememberScaffoldState
40-
import androidx.compose.runtime.*
44+
import androidx.compose.runtime.Composable
45+
import androidx.compose.runtime.ExperimentalComposeApi
46+
import androidx.compose.runtime.LaunchedEffect
47+
import androidx.compose.runtime.getValue
4148
import androidx.compose.runtime.livedata.observeAsState
49+
import androidx.compose.runtime.mutableStateOf
50+
import androidx.compose.runtime.remember
51+
import androidx.compose.runtime.setValue
4252
import androidx.compose.ui.Alignment
4353
import androidx.compose.ui.Alignment.Companion.CenterVertically
4454
import androidx.compose.ui.Modifier
@@ -154,11 +164,9 @@ fun Dashboard(
154164
}
155165
}
156166
}
157-
) {
167+
) { padding ->
158168
Column(
159-
modifier = Modifier
160-
.fillMaxSize()
161-
.padding(bottom = 20.dp),
169+
modifier = Modifier.fillMaxSize().navigationBarsPadding(),
162170
horizontalAlignment = Alignment.CenterHorizontally,
163171
verticalArrangement = Arrangement.Center,
164172
) {
@@ -199,8 +207,7 @@ fun Dashboard(
199207
verticalArrangement = Arrangement.SpaceBetween,
200208
) {
201209
DashboardUploadProgressBar(
202-
progress = (state.treesRemainingToSync)
203-
.toFloat() / (state.totalTreesToSync),
210+
progress = state.uploadProgress,
204211
modifier = Modifier.weight(1f),
205212
)
206213
Text(
@@ -254,6 +261,7 @@ fun Dashboard(
254261
fun DashboardTopBar(state: DashboardState,
255262
onSettingsClicked: () -> Unit = { }, onOrgClicked: () -> Unit) {
256263
ActionBar(
264+
modifier = Modifier.statusBarsPadding(),
257265
leftAction = {
258266
Box(modifier = Modifier
259267
.padding( 10.dp)
@@ -304,10 +312,14 @@ fun DashboardUploadProgressBar(
304312
val stroke = with(LocalDensity.current) {
305313
Stroke(width = strokeWidth.toPx(), cap = StrokeCap.Butt)
306314
}
315+
val animatedProgress by animateFloatAsState(
316+
targetValue = progress,
317+
animationSpec = ProgressIndicatorDefaults.ProgressAnimationSpec
318+
)
307319

308320
Canvas(
309321
modifier = modifier
310-
.progressSemantics(progress)
322+
.progressSemantics(animatedProgress)
311323
.fillMaxWidth()
312324
) {
313325
val diameterOffset = stroke.width / 2
@@ -328,7 +340,7 @@ fun DashboardUploadProgressBar(
328340
)
329341

330342
drawProgress(AppColors.MediumGray, 180f) // Background progress.
331-
drawProgress(AppColors.Orange, progress * 180f) // Foreground progress.
343+
drawProgress(AppColors.Orange, animatedProgress * 180f) // Foreground progress.
332344
}
333345
}
334346

@@ -403,4 +415,4 @@ fun DashboardScreen_Preview(
403415
@PreviewParameter(DashboardPreviewParameter::class) viewModel: DashboardViewModel
404416
) {
405417
DashboardScreen(viewModel = viewModel)
406-
}
418+
}

app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardViewModel.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ data class DashboardState(
5252
val isOrgButtonEnabled: Boolean = false,
5353
val showUnreadMessageNotification: Boolean = false,
5454
val showTreeSyncReminderDialog: Boolean = false
55-
)
55+
) {
56+
val uploadProgress: Float = treesRemainingToSync.toFloat() / totalTreesToSync
57+
}
5658

5759
class DashboardViewModel(
5860
private val dao: TreeTrackerDAO,

0 commit comments

Comments
 (0)