Skip to content

Commit 0b1217c

Browse files
author
sds100
committed
Merge branch 'feature/51-put-buttons-to-save-and-view-location' into develop
2 parents 352789b + 1292dc3 commit 0b1217c

4 files changed

Lines changed: 146 additions & 182 deletions

File tree

app/src/main/java/com/mapcode/map/AddressScreenPart.kt

Lines changed: 52 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,8 @@ import androidx.compose.foundation.text.KeyboardActions
2121
import androidx.compose.foundation.text.KeyboardOptions
2222
import androidx.compose.material.*
2323
import androidx.compose.material.icons.Icons
24-
import androidx.compose.material.icons.outlined.Bookmark
25-
import androidx.compose.material.icons.outlined.BookmarkAdd
2624
import androidx.compose.material.icons.outlined.Clear
2725
import androidx.compose.runtime.*
28-
import androidx.compose.ui.Alignment
2926
import androidx.compose.ui.Modifier
3027
import androidx.compose.ui.focus.FocusRequester
3128
import androidx.compose.ui.focus.focusRequester
@@ -38,7 +35,6 @@ import androidx.compose.ui.text.input.KeyboardType
3835
import androidx.compose.ui.tooling.preview.Preview
3936
import androidx.compose.ui.unit.dp
4037
import com.mapcode.R
41-
import com.mapcode.theme.MapcodeColor
4238
import com.mapcode.theme.MapcodeTheme
4339

4440
@OptIn(ExperimentalMaterialApi::class)
@@ -51,88 +47,72 @@ fun AddressArea(
5147
onSubmit: () -> Unit = {},
5248
helper: AddressHelper,
5349
error: AddressError,
54-
onAddFavouriteClick: () -> Unit = {},
55-
onDeleteFavouriteClick: () -> Unit = {},
56-
isFavouriteLocation: Boolean
5750
) {
5851
Column(modifier) {
5952

6053
var menuExpanded by remember { mutableStateOf(false) }
6154
val focusRequester = FocusRequester()
6255
val focusManager = LocalFocusManager.current
6356

64-
Row {
65-
ExposedDropdownMenuBox(
66-
modifier = Modifier.weight(1f),
67-
expanded = menuExpanded,
68-
onExpandedChange = { menuExpanded = it }) {
69-
OutlinedTextField(
70-
modifier = Modifier
71-
.fillMaxWidth()
72-
.focusRequester(focusRequester),
73-
value = address,
74-
onValueChange = {
75-
onChange(it)
76-
if (!menuExpanded) {
77-
menuExpanded = true
78-
}
79-
},
80-
singleLine = true,
81-
keyboardOptions = KeyboardOptions(
82-
imeAction = ImeAction.Search,
83-
keyboardType = KeyboardType.Text
84-
),
85-
keyboardActions = KeyboardActions(onSearch = {
86-
menuExpanded = false
87-
focusManager.clearFocus()
88-
onSubmit()
89-
}),
90-
label = { Text(stringResource(R.string.address_bar_label), maxLines = 1) },
91-
placeholder = { Text(address, maxLines = 1) },
92-
trailingIcon = {
93-
if (address.isNotEmpty()) {
94-
IconButton(
95-
onClick = {
96-
focusRequester.requestFocus()
97-
onChange("")
98-
}) {
99-
Icon(
100-
Icons.Outlined.Clear,
101-
contentDescription = stringResource(R.string.clear_address_content_description)
102-
)
103-
}
57+
ExposedDropdownMenuBox(
58+
modifier = Modifier.fillMaxWidth(),
59+
expanded = menuExpanded,
60+
onExpandedChange = { menuExpanded = it }) {
61+
OutlinedTextField(
62+
modifier = Modifier
63+
.fillMaxWidth()
64+
.focusRequester(focusRequester),
65+
value = address,
66+
onValueChange = {
67+
onChange(it)
68+
if (!menuExpanded) {
69+
menuExpanded = true
70+
}
71+
},
72+
singleLine = true,
73+
keyboardOptions = KeyboardOptions(
74+
imeAction = ImeAction.Search,
75+
keyboardType = KeyboardType.Text
76+
),
77+
keyboardActions = KeyboardActions(onSearch = {
78+
menuExpanded = false
79+
focusManager.clearFocus()
80+
onSubmit()
81+
}),
82+
label = { Text(stringResource(R.string.address_bar_label), maxLines = 1) },
83+
placeholder = { Text(address, maxLines = 1) },
84+
trailingIcon = {
85+
if (address.isNotEmpty()) {
86+
IconButton(
87+
onClick = {
88+
focusRequester.requestFocus()
89+
onChange("")
90+
}) {
91+
Icon(
92+
Icons.Outlined.Clear,
93+
contentDescription = stringResource(R.string.clear_address_content_description)
94+
)
10495
}
10596
}
106-
)
97+
}
98+
)
10799

108-
if (matchingAddresses.isNotEmpty()) {
109-
ExposedDropdownMenu(
110-
modifier = Modifier.testTag("address_dropdown"),
111-
expanded = menuExpanded, onDismissRequest = { menuExpanded = false }) {
112-
matchingAddresses.forEach { address ->
113-
DropdownMenuItem(onClick = {
114-
menuExpanded = false
115-
focusManager.clearFocus()
116-
onChange(address)
117-
onSubmit()
118-
}) {
119-
Text(address)
120-
}
100+
if (matchingAddresses.isNotEmpty()) {
101+
ExposedDropdownMenu(
102+
modifier = Modifier.testTag("address_dropdown"),
103+
expanded = menuExpanded, onDismissRequest = { menuExpanded = false }) {
104+
matchingAddresses.forEach { address ->
105+
DropdownMenuItem(onClick = {
106+
menuExpanded = false
107+
focusManager.clearFocus()
108+
onChange(address)
109+
onSubmit()
110+
}) {
111+
Text(address)
121112
}
122113
}
123114
}
124115
}
125-
126-
Spacer(Modifier.width(8.dp))
127-
128-
FavouriteButton(
129-
modifier = Modifier
130-
.align(Alignment.CenterVertically)
131-
.padding(top = 8.dp),
132-
isFavouriteLocation = isFavouriteLocation,
133-
addFavourite = onAddFavouriteClick,
134-
deleteFavourite = onDeleteFavouriteClick
135-
)
136116
}
137117

138118
val extraTextHeight = 20.dp
@@ -165,7 +145,6 @@ private fun AddressAreaPreview() {
165145
helper = AddressHelper.None,
166146
error = AddressError.None,
167147
matchingAddresses = listOf("Address 1", "VERY VERY VERY VERY VERY LONG ADDRESS"),
168-
isFavouriteLocation = true
169148
)
170149
}
171150
}
@@ -231,40 +210,4 @@ private fun HelperText(modifier: Modifier = Modifier, message: String) {
231210
style = MaterialTheme.typography.body1,
232211
fontWeight = FontWeight.Bold
233212
)
234-
}
235-
236-
@Composable
237-
private fun FavouriteButton(
238-
modifier: Modifier = Modifier,
239-
isFavouriteLocation: Boolean,
240-
deleteFavourite: () -> Unit,
241-
addFavourite: () -> Unit
242-
) {
243-
IconButton(
244-
modifier = modifier,
245-
onClick = {
246-
if (isFavouriteLocation) {
247-
deleteFavourite()
248-
} else {
249-
addFavourite()
250-
}
251-
}
252-
) {
253-
if (isFavouriteLocation) {
254-
Icon(
255-
modifier = Modifier.size(32.dp),
256-
imageVector = Icons.Outlined.Bookmark,
257-
contentDescription = stringResource(R.string.delete_favourite_button_content_description),
258-
tint = MapcodeColor.addFavouritesButton()
259-
)
260-
} else {
261-
Icon(
262-
modifier = Modifier.size(32.dp),
263-
imageVector = Icons.Outlined.BookmarkAdd,
264-
contentDescription = stringResource(R.string.add_favourite_button_content_description),
265-
tint = MapcodeColor.addFavouritesButton()
266-
)
267-
}
268-
}
269-
270213
}

app/src/main/java/com/mapcode/map/InfoScreenPart.kt

Lines changed: 7 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import androidx.compose.material.icons.Icons
2727
import androidx.compose.material.icons.outlined.ContentCopy
2828
import androidx.compose.material.icons.outlined.FastForward
2929
import androidx.compose.runtime.*
30-
import androidx.compose.runtime.saveable.rememberSaveable
3130
import androidx.compose.ui.Modifier
3231
import androidx.compose.ui.focus.FocusRequester
3332
import androidx.compose.ui.focus.focusRequester
@@ -46,7 +45,6 @@ import androidx.compose.ui.tooling.preview.Devices
4645
import androidx.compose.ui.tooling.preview.Preview
4746
import androidx.compose.ui.unit.dp
4847
import com.mapcode.R
49-
import com.mapcode.favourites.CreateFavouriteDialog
5048
import com.mapcode.theme.MapcodeTheme
5149
import com.mapcode.util.ErrorText
5250

@@ -77,41 +75,6 @@ fun InfoArea(
7775
}
7876
}
7977

80-
var showFavouriteNameDialog: Boolean by rememberSaveable { mutableStateOf(false) }
81-
var favouriteName: String by rememberSaveable { mutableStateOf("") }
82-
83-
if (showFavouriteNameDialog) {
84-
val mapcode: String by remember {
85-
derivedStateOf {
86-
buildString {
87-
if (uiState.mapcodeUi.territoryShortName != null) {
88-
append(uiState.mapcodeUi.territoryShortName)
89-
append(" ")
90-
}
91-
92-
append(uiState.mapcodeUi.code)
93-
}
94-
}
95-
}
96-
97-
CreateFavouriteDialog(
98-
name = favouriteName,
99-
mapcode = mapcode,
100-
onNameChange = { favouriteName = it },
101-
onDismiss = { showFavouriteNameDialog = false },
102-
onSubmitClick = {
103-
viewModel.onSaveFavouriteClick(favouriteName)
104-
showFavouriteNameDialog = false
105-
})
106-
}
107-
108-
val onAddFavouriteClick = remember {
109-
{
110-
favouriteName = uiState.addressUi.address
111-
showFavouriteNameDialog = true
112-
}
113-
}
114-
11578
InfoArea(
11679
modifier,
11780
uiState,
@@ -125,9 +88,7 @@ fun InfoArea(
12588
onChangeLongitude = viewModel::onLongitudeTextChanged,
12689
onSubmitLongitude = viewModel::onSubmitLongitude,
12790
onCopyLongitude = onLocationClick,
128-
isVerticalLayout = isVerticalLayout,
129-
onAddFavouriteClick = onAddFavouriteClick,
130-
onDeleteFavouriteClick = viewModel::onDeleteFavouriteClick
91+
isVerticalLayout = isVerticalLayout
13192
)
13293
}
13394

@@ -145,8 +106,6 @@ private fun InfoArea(
145106
onCopyLongitude: () -> Unit = {},
146107
onTerritoryClick: () -> Unit = {},
147108
onMapcodeClick: () -> Unit = {},
148-
onAddFavouriteClick: () -> Unit = {},
149-
onDeleteFavouriteClick: () -> Unit = {},
150109
isVerticalLayout: Boolean
151110
) {
152111
if (isVerticalLayout) {
@@ -162,9 +121,7 @@ private fun InfoArea(
162121
onSubmitLongitude,
163122
onCopyLongitude,
164123
onTerritoryClick,
165-
onMapcodeClick,
166-
onAddFavouriteClick,
167-
onDeleteFavouriteClick,
124+
onMapcodeClick
168125
)
169126
} else {
170127
HorizontalInfoArea(
@@ -179,9 +136,7 @@ private fun InfoArea(
179136
onSubmitLongitude,
180137
onCopyLongitude,
181138
onTerritoryClick,
182-
onMapcodeClick,
183-
onAddFavouriteClick,
184-
onDeleteFavouriteClick
139+
onMapcodeClick
185140
)
186141
}
187142
}
@@ -247,9 +202,7 @@ private fun VerticalInfoArea(
247202
onSubmitLongitude: () -> Unit,
248203
onCopyLongitude: () -> Unit,
249204
onTerritoryClick: () -> Unit,
250-
onMapcodeClick: () -> Unit,
251-
onAddFavouriteClick: () -> Unit,
252-
onDeleteFavouriteClick: () -> Unit
205+
onMapcodeClick: () -> Unit
253206
) {
254207
Column(modifier) {
255208
AddressArea(
@@ -259,10 +212,7 @@ private fun VerticalInfoArea(
259212
onChange = onAddressChange,
260213
onSubmit = onSubmitAddress,
261214
helper = state.addressUi.helper,
262-
error = state.addressUi.error,
263-
isFavouriteLocation = state.isFavouriteLocation,
264-
onAddFavouriteClick = onAddFavouriteClick,
265-
onDeleteFavouriteClick = onDeleteFavouriteClick
215+
error = state.addressUi.error
266216
)
267217
Spacer(Modifier.height(8.dp))
268218
TerritoryBox(
@@ -317,9 +267,7 @@ private fun HorizontalInfoArea(
317267
onSubmitLongitude: () -> Unit,
318268
onCopyLongitude: () -> Unit,
319269
onTerritoryClick: () -> Unit,
320-
onMapcodeClick: () -> Unit,
321-
onAddFavouriteClick: () -> Unit,
322-
onDeleteFavouriteClick: () -> Unit,
270+
onMapcodeClick: () -> Unit
323271
) {
324272
Column(modifier) {
325273
AddressArea(
@@ -329,10 +277,7 @@ private fun HorizontalInfoArea(
329277
onChange = onAddressChange,
330278
onSubmit = onSubmitAddress,
331279
helper = state.addressUi.helper,
332-
error = state.addressUi.error,
333-
onAddFavouriteClick = onAddFavouriteClick,
334-
onDeleteFavouriteClick = onDeleteFavouriteClick,
335-
isFavouriteLocation = state.isFavouriteLocation
280+
error = state.addressUi.error
336281
)
337282

338283
MapcodeButtons(

0 commit comments

Comments
 (0)