Skip to content

Commit 8935f8f

Browse files
committed
Fix bottom sheet
Update icons
1 parent f272d5b commit 8935f8f

File tree

4 files changed

+124
-99
lines changed

4 files changed

+124
-99
lines changed

snap-to-features/src/main/java/com/esri/arcgismaps/sample/snaptofeatures/components/BottomSheetContents.kt

+95-94
Original file line numberDiff line numberDiff line change
@@ -54,116 +54,117 @@ fun SnapSettings(
5454
onSnapSourceChanged: (Boolean, Int) -> Unit = { _: Boolean, _: Int -> },
5555
onDismiss: () -> Unit = { }
5656
) {
57-
Column(Modifier.background(MaterialTheme.colorScheme.background)) {
58-
Row(
59-
modifier = Modifier
60-
.fillMaxWidth()
61-
.padding(20.dp, 20.dp, 20.dp, 0.dp),
62-
verticalAlignment = Alignment.CenterVertically,
63-
horizontalArrangement = Arrangement.SpaceBetween
64-
) {
65-
Text(
66-
style = SampleTypography.titleMedium,
67-
text = "Snap Settings",
68-
color = MaterialTheme.colorScheme.primary
69-
)
70-
TextButton(
71-
onClick = onDismiss
57+
Surface(Modifier.background(MaterialTheme.colorScheme.background)) {
58+
Column(Modifier.background(MaterialTheme.colorScheme.background)) {
59+
Row(
60+
modifier = Modifier
61+
.fillMaxWidth()
62+
.padding(20.dp, 20.dp, 20.dp, 0.dp),
63+
verticalAlignment = Alignment.CenterVertically,
64+
horizontalArrangement = Arrangement.SpaceBetween
7265
) {
73-
Text(text = "Done")
74-
}
75-
}
76-
77-
// configure snapping settings
78-
Surface(
79-
modifier = Modifier.padding(20.dp),
80-
tonalElevation = 1.dp,
81-
shape = RoundedCornerShape(20.dp),
82-
border = BorderStroke(1.dp, MaterialTheme.colorScheme.outlineVariant)
83-
) {
84-
Column(
85-
modifier = Modifier.padding(14.dp)
86-
) {
87-
Row(
88-
modifier = Modifier.fillMaxWidth(),
89-
verticalAlignment = Alignment.CenterVertically,
90-
horizontalArrangement = Arrangement.SpaceBetween
91-
) {
92-
Text(
93-
text = "Snapping",
94-
style = SampleTypography.bodyLarge
95-
)
96-
}
97-
Divider(color = MaterialTheme.colorScheme.primary, thickness = 0.5.dp)
98-
Row(
99-
modifier = Modifier.fillMaxWidth(),
100-
verticalAlignment = Alignment.CenterVertically,
101-
horizontalArrangement = Arrangement.SpaceBetween
66+
Text(
67+
style = SampleTypography.titleMedium,
68+
text = "Snap Settings",
69+
color = MaterialTheme.colorScheme.primary
70+
)
71+
TextButton(
72+
onClick = onDismiss
10273
) {
103-
Text(
104-
text = "\t\tEnabled",
105-
style = SampleTypography.bodyLarge,
106-
)
107-
Switch(
108-
checked = isSnappingEnabled,
109-
onCheckedChange = {
110-
onSnappingChanged(it)
111-
}
112-
)
74+
Text(text = "Done")
11375
}
11476
}
115-
}
116-
117-
// configure snap source collection settings
118-
Surface(
119-
modifier = Modifier.padding(20.dp),
120-
tonalElevation = 1.dp,
121-
shape = RoundedCornerShape(20.dp),
122-
border = BorderStroke(1.dp, MaterialTheme.colorScheme.outlineVariant)
123-
) {
124-
Column(
125-
modifier = Modifier.padding(14.dp)
77+
// configure snapping settings
78+
Surface(
79+
modifier = Modifier.padding(20.dp),
80+
tonalElevation = 1.dp,
81+
shape = RoundedCornerShape(20.dp),
82+
border = BorderStroke(1.dp, MaterialTheme.colorScheme.outlineVariant)
12683
) {
127-
Column {
128-
Row {
84+
Column(
85+
modifier = Modifier.padding(14.dp)
86+
) {
87+
Row(
88+
modifier = Modifier.fillMaxWidth(),
89+
verticalAlignment = Alignment.CenterVertically,
90+
horizontalArrangement = Arrangement.SpaceBetween
91+
) {
12992
Text(
130-
modifier = Modifier.weight(12f),
131-
text = "Snap Sources",
93+
text = "Snapping",
94+
style = SampleTypography.bodyLarge
13295
)
13396
}
13497
Divider(color = MaterialTheme.colorScheme.primary, thickness = 0.5.dp)
135-
// add a row for each snap source in the collection
136-
for (x in snapSourceList.indices) {
137-
Row(
138-
modifier = Modifier.fillMaxWidth(),
139-
verticalAlignment = Alignment.CenterVertically,
140-
horizontalArrangement = Arrangement.SpaceBetween
141-
) {
98+
Row(
99+
modifier = Modifier.fillMaxWidth(),
100+
verticalAlignment = Alignment.CenterVertically,
101+
horizontalArrangement = Arrangement.SpaceBetween
102+
) {
103+
Text(
104+
text = "\t\tEnabled",
105+
style = SampleTypography.bodyLarge,
106+
)
107+
Switch(
108+
checked = isSnappingEnabled,
109+
onCheckedChange = {
110+
onSnappingChanged(it)
111+
}
112+
)
113+
}
114+
}
115+
}
116+
117+
// configure snap source collection settings
118+
Surface(
119+
modifier = Modifier.padding(20.dp),
120+
tonalElevation = 1.dp,
121+
shape = RoundedCornerShape(20.dp),
122+
border = BorderStroke(1.dp, MaterialTheme.colorScheme.outlineVariant)
123+
) {
124+
Column(
125+
modifier = Modifier.padding(14.dp)
126+
) {
127+
Column {
128+
Row {
142129
Text(
143-
modifier = Modifier.weight(1f),
144-
text = "\t\t${(snapSourceList[x].source as FeatureLayer).name}"
145-
)
146-
Switch(
147-
checked = isSnapSourceEnabled[x],
148-
onCheckedChange = { newValue ->
149-
onSnapSourceChanged(newValue, x)
150-
}
130+
modifier = Modifier.weight(12f),
131+
text = "Snap Sources",
151132
)
152133
}
153134
Divider(color = MaterialTheme.colorScheme.primary, thickness = 0.5.dp)
154-
}
155-
}
156-
Divider(thickness = 0.5.dp)
157-
TextButton(
158-
modifier = Modifier.align(CenterHorizontally),
159-
onClick = {
135+
// add a row for each snap source in the collection
160136
for (x in snapSourceList.indices) {
161-
onSnapSourceChanged(true, x)
137+
Row(
138+
modifier = Modifier.fillMaxWidth(),
139+
verticalAlignment = Alignment.CenterVertically,
140+
horizontalArrangement = Arrangement.SpaceBetween
141+
) {
142+
Text(
143+
modifier = Modifier.weight(1f),
144+
text = "\t\t${(snapSourceList[x].source as FeatureLayer).name}"
145+
)
146+
Switch(
147+
checked = isSnapSourceEnabled[x],
148+
onCheckedChange = { newValue ->
149+
onSnapSourceChanged(newValue, x)
150+
}
151+
)
152+
}
153+
Divider(color = MaterialTheme.colorScheme.primary, thickness = 0.5.dp)
162154
}
163155
}
164-
)
165-
{
166-
Text(text = "Enable All Sources")
156+
Divider(thickness = 0.5.dp)
157+
TextButton(
158+
modifier = Modifier.align(CenterHorizontally),
159+
onClick = {
160+
for (x in snapSourceList.indices) {
161+
onSnapSourceChanged(true, x)
162+
}
163+
}
164+
)
165+
{
166+
Text(text = "Enable All Sources")
167+
}
167168
}
168169
}
169170
}

snap-to-features/src/main/java/com/esri/arcgismaps/sample/snaptofeatures/screens/MainScreen.kt

+8-5
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ import androidx.compose.foundation.layout.fillMaxSize
2525
import androidx.compose.foundation.layout.fillMaxWidth
2626
import androidx.compose.foundation.layout.padding
2727
import androidx.compose.material.icons.Icons
28-
import androidx.compose.material.icons.filled.ArrowBack
2928
import androidx.compose.material.icons.filled.Create
3029
import androidx.compose.material.icons.filled.Delete
31-
import androidx.compose.material.icons.filled.Done
3230
import androidx.compose.material3.DropdownMenu
3331
import androidx.compose.material3.DropdownMenuItem
3432
import androidx.compose.material3.Icon
@@ -44,13 +42,16 @@ import androidx.compose.runtime.getValue
4442
import androidx.compose.runtime.mutableStateOf
4543
import androidx.compose.runtime.rememberCoroutineScope
4644
import androidx.compose.runtime.setValue
45+
import androidx.compose.ui.graphics.vector.ImageVector
4746
import androidx.compose.ui.platform.LocalContext
47+
import androidx.compose.ui.res.vectorResource
4848
import androidx.compose.ui.unit.dp
4949
import com.arcgismaps.geometry.GeometryType
5050
import com.arcgismaps.toolkit.geocompose.MapView
5151
import com.esri.arcgismaps.sample.sampleslib.components.BottomSheet
5252
import com.esri.arcgismaps.sample.sampleslib.components.MessageDialog
5353
import com.esri.arcgismaps.sample.sampleslib.components.SampleTopAppBar
54+
import com.esri.arcgismaps.sample.snaptofeatures.R
5455
import com.esri.arcgismaps.sample.snaptofeatures.components.MapViewModel
5556
import com.esri.arcgismaps.sample.snaptofeatures.components.SnapSettings
5657

@@ -69,13 +70,13 @@ fun MainScreen (sampleName: String) {
6970
val graphicsOverlayCollection = listOf(mapViewModel.graphicsOverlay)
7071

7172
Scaffold(
72-
topBar = { SampleTopAppBar(title = sampleName) },
7373
content = {
7474
Column(
7575
modifier = Modifier
7676
.fillMaxSize()
7777
.padding(it)
7878
) {
79+
SampleTopAppBar(title = sampleName)
7980
MapView(
8081
modifier = Modifier
8182
.fillMaxSize()
@@ -139,11 +140,13 @@ fun MainScreen (sampleName: String) {
139140
)
140141
}
141142
}
143+
144+
val vector = ImageVector
142145
IconButton(onClick = { mapViewModel.editorUndo() }) {
143-
Icon(Icons.Filled.ArrowBack, contentDescription = "Undo")
146+
Icon(vector.vectorResource(R.drawable.undo), contentDescription = "Undo")
144147
}
145148
IconButton(onClick = { mapViewModel.editorStopped() }) {
146-
Icon(Icons.Default.Done, contentDescription = "Stop")
149+
Icon(vector.vectorResource(R.drawable.save), contentDescription = "Save")
147150
}
148151
IconButton(onClick = { mapViewModel.clearGraphics() }) {
149152
Icon(Icons.Filled.Delete, contentDescription = "Clear")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M840,280L840,760Q840,793 816.5,816.5Q793,840 760,840L200,840Q167,840 143.5,816.5Q120,793 120,760L120,200Q120,167 143.5,143.5Q167,120 200,120L680,120L840,280ZM760,314L646,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760L760,760Q760,760 760,760Q760,760 760,760L760,314ZM480,720Q530,720 565,685Q600,650 600,600Q600,550 565,515Q530,480 480,480Q430,480 395,515Q360,550 360,600Q360,650 395,685Q430,720 480,720ZM240,400L600,400L600,240L240,240L240,400ZM200,314L200,760Q200,760 200,760Q200,760 200,760L200,760Q200,760 200,760Q200,760 200,760L200,200Q200,200 200,200Q200,200 200,200L200,200L200,314Z"/>
10+
</vector>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal"
7+
android:autoMirrored="true">
8+
<path
9+
android:fillColor="@android:color/white"
10+
android:pathData="M280,760L280,680L564,680Q627,680 673.5,640Q720,600 720,540Q720,480 673.5,440Q627,400 564,400L312,400L416,504L360,560L160,360L360,160L416,216L312,320L564,320Q661,320 730.5,383Q800,446 800,540Q800,634 730.5,697Q661,760 564,760L280,760Z"/>
11+
</vector>

0 commit comments

Comments
 (0)