Skip to content

Commit 7970326

Browse files
committed
[mage-1438] (#85)
1) Fix non-point observations not showing the associated form icon in the observations list 2) Refactor MapAnnotation's factory methods and associated style classes to make the logic clearer
1 parent ec13b1b commit 7970326

File tree

15 files changed

+450
-486
lines changed

15 files changed

+450
-486
lines changed

mage/src/main/java/mil/nga/giat/mage/LandingViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class LandingViewModel @Inject constructor(
7474
eventLocalDataSource.getForm(it)
7575
}
7676

77-
val icon = MapAnnotation.fromObservation(
77+
val icon = MapAnnotation.getAnnotationWithStyleFromObservation(
7878
event = event,
7979
formDefinition = formDefinition,
8080
observationForm = observationForm,
@@ -107,7 +107,7 @@ class LandingViewModel @Inject constructor(
107107
id.toString(),
108108
NavigableType.USER,
109109
location.geometry,
110-
MapAnnotation.fromUser(user, location)
110+
MapAnnotation.getAnnotationWithBaseStyleFromUser(user, location)
111111
)
112112
)
113113
}
@@ -117,7 +117,7 @@ class LandingViewModel @Inject constructor(
117117
fun startFeedNavigation(feedId: String, itemId: String) {
118118
viewModelScope.launch {
119119
val itemWithFeed = feedItemDao.item(feedId, itemId).first()
120-
val icon = MapAnnotation.fromFeedItem(itemWithFeed, application)
120+
val icon = MapAnnotation.getAnnotationWithBaseStyleFromFeedItem(itemWithFeed, application)
121121
_navigateTo.postValue(
122122
Navigable(
123123
FeedItemId(itemWithFeed.feed.id, itemWithFeed.item.id),

mage/src/main/java/mil/nga/giat/mage/form/edit/dialog/GeometryFieldDialog.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ import mil.nga.giat.mage.coordinate.CoordinateType
5555
import mil.nga.giat.mage.coordinate.DMS
5656
import mil.nga.giat.mage.coordinate.DMSLocation
5757
import mil.nga.giat.mage.databinding.DialogGeometryFieldBinding
58-
import mil.nga.giat.mage.map.annotation.ShapeStyle
58+
import mil.nga.giat.mage.map.annotation.ShapeObservationStyle
5959
import mil.nga.giat.mage.map.hasKinks
6060
import mil.nga.giat.mage.observation.InputFilterDecimal
6161
import mil.nga.giat.mage.observation.ObservationLocation
@@ -257,7 +257,7 @@ class GeometryFieldDialog : DialogFragment(),
257257
mapCoordinateSystem = CoordinateSystem.GARS
258258
}
259259

260-
val style = ShapeStyle(requireContext())
260+
val style = ShapeObservationStyle(null, requireContext())
261261
editMarkerOptions = getEditMarkerOptions()
262262
editPolylineOptions = getEditPolylineOptions(style)
263263
editPolygonOptions = getEditPolygonOptions(style)
@@ -1268,7 +1268,7 @@ class GeometryFieldDialog : DialogFragment(),
12681268
* @param style observation shape style
12691269
* @return edit polyline options
12701270
*/
1271-
private fun getEditPolylineOptions(style: ShapeStyle): PolylineOptions {
1271+
private fun getEditPolylineOptions(style: ShapeObservationStyle): PolylineOptions {
12721272
val polylineOptions = PolylineOptions()
12731273
polylineOptions.width(style.strokeWidth)
12741274
polylineOptions.color(style.strokeColor)
@@ -1281,7 +1281,7 @@ class GeometryFieldDialog : DialogFragment(),
12811281
* @param style observation shape style
12821282
* @return edit polygon options
12831283
*/
1284-
private fun getEditPolygonOptions(style: ShapeStyle): PolygonOptions {
1284+
private fun getEditPolygonOptions(style: ShapeObservationStyle): PolygonOptions {
12851285
val polygonOptions = PolygonOptions()
12861286
polygonOptions.strokeWidth(style.strokeWidth)
12871287
polygonOptions.strokeColor(style.strokeColor)

mage/src/main/java/mil/nga/giat/mage/form/view/MapViewContent.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import mil.nga.giat.mage.form.FormState
2424
import mil.nga.giat.mage.form.field.FieldValue
2525
import mil.nga.giat.mage.glide.target.MarkerTarget
2626
import mil.nga.giat.mage.map.annotation.MapAnnotation
27-
import mil.nga.giat.mage.map.annotation.ShapeStyle
27+
import mil.nga.giat.mage.map.annotation.ShapeObservationStyle
2828
import mil.nga.giat.mage.observation.ObservationLocation
2929
import mil.nga.sf.GeometryType
3030
import mil.nga.sf.util.GeometryUtils
@@ -88,7 +88,7 @@ fun MapViewContent(
8888
if (formState != null) {
8989
Glide.with(context)
9090
.asBitmap()
91-
.load(MapAnnotation.fromObservationProperties(formState.id ?: 0, location.geometry, location.time, location.accuracy, formState.eventId, formState.definition.id, primary, secondary, context))
91+
.load(MapAnnotation.getAnnotationWithBaseStyleFromObservationProperties(formState.id ?: 0, location.geometry, location.time, location.accuracy, formState.eventId, formState.definition.id, primary, secondary, context))
9292
.error(R.drawable.default_marker)
9393
.into(MarkerTarget(context, marker, 32, 32))
9494
}
@@ -104,7 +104,7 @@ fun MapViewContent(
104104
}
105105
} else {
106106
val shape = GoogleMapShapeConverter().toShape(location.geometry).shape
107-
val style = ShapeStyle.fromForm(event, formState, context)
107+
val style = ShapeObservationStyle.getStyleFromForm(event, formState, null, context)
108108

109109
if (shape is PolylineOptions) {
110110
googleMap.addPolyline {

mage/src/main/java/mil/nga/giat/mage/glide/loader/MapIconLoader.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.bumptech.glide.load.Options
55
import com.bumptech.glide.load.model.ModelLoader
66
import com.bumptech.glide.load.model.ModelLoaderFactory
77
import com.bumptech.glide.load.model.MultiModelLoaderFactory
8-
import mil.nga.giat.mage.map.annotation.IconStyle
8+
import mil.nga.giat.mage.map.annotation.BaseObservationStyle
99
import mil.nga.giat.mage.map.annotation.MapAnnotation
1010
import java.io.InputStream
1111

@@ -14,7 +14,7 @@ class MapIconLoader private constructor(
1414
) : ModelLoader<MapAnnotation<*>, InputStream> {
1515

1616
override fun buildLoadData(model: MapAnnotation<*>, width: Int, height: Int, options: Options): ModelLoader.LoadData<InputStream>? {
17-
val iconStyle = model.style as IconStyle
17+
val iconStyle = model.style as BaseObservationStyle
1818
return if (iconStyle.uri == null && !model.allowEmptyIcon) {
1919
null
2020
} else if (iconStyle.uri != null) {
@@ -25,7 +25,7 @@ class MapIconLoader private constructor(
2525
}
2626
}
2727

28-
override fun handles(model: MapAnnotation<*>): Boolean = model.style is IconStyle
28+
override fun handles(model: MapAnnotation<*>): Boolean = model.style is BaseObservationStyle
2929

3030
class Factory : ModelLoaderFactory<MapAnnotation<*>, InputStream> {
3131
override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<MapAnnotation<*>, InputStream> {

mage/src/main/java/mil/nga/giat/mage/map/MapViewModel.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class MapViewModel @Inject constructor(
7474
eventLocalDataSource.getForm(formId)
7575
}
7676

77-
MapAnnotation.fromObservation(
77+
MapAnnotation.getAnnotationWithStyleFromObservation(
7878
event = event,
7979
observation = observation,
8080
formDefinition = formDefinition,
@@ -91,7 +91,7 @@ class MapViewModel @Inject constructor(
9191

9292
val locations = locationRepository.getLocations().transform { locations ->
9393
val states = locations.map { location ->
94-
MapAnnotation.fromUser(location.user, location)
94+
MapAnnotation.getAnnotationWithBaseStyleFromUser(location.user, location)
9595
}
9696

9797
emit(states)
@@ -103,7 +103,7 @@ class MapViewModel @Inject constructor(
103103
val annotations = layers.associateBy({ it.id }, { layer ->
104104
val features = layerRepository.getStaticFeatures(layer.id)
105105
val annotations = features.map { feature ->
106-
MapAnnotation.fromStaticFeature(feature, application)
106+
MapAnnotation.getAnnotationWithStyleFromStaticFeature(feature, application)
107107
}
108108
annotations
109109
})
@@ -142,7 +142,7 @@ class MapViewModel @Inject constructor(
142142
data class FeedState(val feed: Feed, val items: List<MapAnnotation<String>>)
143143
private fun toFeedItemState(feedWithItems: FeedWithItems): FeedState {
144144
val mapFeatures = feedWithItems.items.mapNotNull {
145-
MapAnnotation.fromFeedItem(ItemWithFeed(feedWithItems.feed, it), application)
145+
MapAnnotation.getAnnotationWithBaseStyleFromFeedItem(ItemWithFeed(feedWithItems.feed, it), application)
146146
}
147147
return FeedState(feedWithItems.feed, mapFeatures)
148148
}
@@ -194,7 +194,7 @@ class MapViewModel @Inject constructor(
194194
}
195195

196196
val event = eventLocalDataSource.currentEvent
197-
val iconFeature = MapAnnotation.fromObservation(
197+
val iconFeature = MapAnnotation.getAnnotationWithStyleFromObservation(
198198
event = event,
199199
observation = observation,
200200
formDefinition = formDefinition,

mage/src/main/java/mil/nga/giat/mage/map/annotation/AnnotationStyle.kt

Lines changed: 0 additions & 52 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mil.nga.giat.mage.map.annotation
2+
3+
import android.net.Uri
4+
5+
//for Point observation image icons
6+
open class BaseObservationStyle(val uri: Uri? = null)

mage/src/main/java/mil/nga/giat/mage/map/annotation/IconStyle.kt

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)