Skip to content

Commit 37fa3f7

Browse files
committed
GPX fixes
1 parent 98032d9 commit 37fa3f7

File tree

3 files changed

+33
-24
lines changed

3 files changed

+33
-24
lines changed

app/src/main/java/org/nitri/opentopo/GpxDetailFragment.kt

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -147,30 +147,28 @@ class GpxDetailFragment : Fragment(), WayPointListAdapter.OnItemClickListener,
147147
mDistance = 0.0
148148
mElevation = false
149149
var prevTrackPoint: TrackPoint? = null
150-
if (track.trackSegments != null) {
151-
for (segment in track.trackSegments) {
152-
if (segment.trackPoints != null) {
153-
mMaxElevation = segment.trackPoints[0].elevation
154-
mMinElevation = mMaxElevation
155-
for (trackPoint in segment.trackPoints) {
156-
if (prevTrackPoint != null) {
157-
mDistance += Util.distance(prevTrackPoint, trackPoint)
158-
}
159-
val builder = DistancePoint.Builder()
160-
builder.setDistance(mDistance)
161-
if (trackPoint.elevation != null) {
162-
val elevation = trackPoint.elevation
163-
if (elevation < mMinElevation) mMinElevation = elevation
164-
if (elevation > mMaxElevation) mMaxElevation = elevation
165-
builder.setElevation(elevation)
166-
mElevation = true
167-
mTrackDistanceLine.add(builder.build())
168-
}
169-
prevTrackPoint = trackPoint
150+
track.trackSegments?.forEach { segment ->
151+
segment.trackPoints?.let { points ->
152+
mMaxElevation = points.first().elevation ?: 0.0
153+
mMinElevation = mMaxElevation
154+
points.forEach { trackPoint ->
155+
prevTrackPoint?.let { prevPoint ->
156+
mDistance += Util.distance(prevPoint, trackPoint)
170157
}
158+
val builder = DistancePoint.Builder()
159+
builder.setDistance(mDistance)
160+
trackPoint.elevation?.also { elevation ->
161+
if (elevation < mMinElevation) mMinElevation = elevation
162+
if (elevation > mMaxElevation) mMaxElevation = elevation
163+
builder.setElevation(elevation)
164+
mElevation = true
165+
mTrackDistanceLine.add(builder.build())
166+
}
167+
prevTrackPoint = trackPoint
171168
}
172169
}
173170
}
171+
174172
}
175173

176174
private fun buildWayPointList() {

app/src/main/java/org/nitri/opentopo/MainActivity.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,11 @@ class MainActivity : AppCompatActivity(), MapFragment.OnFragmentInteractionListe
328328
return gpxViewModel.gpx
329329
}
330330

331+
override fun clearGpx() {
332+
gpxViewModel.gpx = null
333+
mGpxUriString = null
334+
}
335+
331336
override fun showNearbyPlace(nearbyItem: NearbyItem?) {
332337
selectedNearbyPlace = nearbyItem
333338
supportFragmentManager.popBackStack()

app/src/main/java/org/nitri/opentopo/MapFragment.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -492,12 +492,13 @@ class MapFragment() : Fragment(), LocationListener, PopupMenu.OnMenuItemClickLis
492492
builder.setTitle(getString(R.string.gpx))
493493
.setMessage(getString(R.string.discard_current_gpx))
494494
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
495-
if (mOverlayHelper != null) {
496-
mOverlayHelper!!.clearGpx()
495+
mOverlayHelper?.let {
496+
it.clearGpx()
497497
if (activity != null) (activity as AppCompatActivity?)!!.supportInvalidateOptionsMenu()
498498
}
499-
if (mListener != null) {
500-
mListener!!.selectGpx()
499+
mListener?.let {
500+
it.clearGpx()
501+
it.selectGpx()
501502
}
502503
dialog.dismiss()
503504
}
@@ -805,6 +806,11 @@ class MapFragment() : Fragment(), LocationListener, PopupMenu.OnMenuItemClickLis
805806
*/
806807
fun getGpx(): Gpx?
807808

809+
/**
810+
* Clear GOX so it won't ne restored on config change
811+
*/
812+
fun clearGpx()
813+
808814
/**
809815
* Present GPX details
810816
*/

0 commit comments

Comments
 (0)