Author: Adam Evyčędo <git@apiote.xyz>
fix zooming map in journeys
%!v(PANIC=String method: strings: negative Repeat count)
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
index c1cdf7f3c39aeea223a67d41f4b38c91beb0cbb4..fb52def6bb38a8631036e1729babea88ab80fae2 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
@@ -43,6 +43,8 @@ if (!isNetworkAvailable(context)) {
throw TrafficResponseException(0, "", Error(0, R.string.error_offline, R.drawable.error_net))
}
+ // FIXME arrive-by shows wierd results
+
return withContext(Dispatchers.IO) {
Log.d("Journeys", "from: ${from.planString()}")
Log.d("Journeys", "to: ${to.planString()}")
@@ -68,7 +70,6 @@ arriveBy = params.timeReference == TimeReference.ARRIVE_BY,
requireBikeTransport = params.bicycle,
pedestrianProfile = if (params.wheelchairAccessible) PedestrianProfile.WHEELCHAIR else PedestrianProfile.FOOT,
)
- Log.d("Journeys", "${response.itineraries}")
response.itineraries.map {
val legs: List<Leg> = it.legs.map {
Leg(
@@ -84,11 +85,11 @@ Position(0.0, 0.0),
0u,
Mps(0),
LineStub(
- it.routeShortName ?: "", // TODO is it nullable, yes e.g. for transit
+ it.routeShortName ?: "",
LineType.fromTransitous2(it.mode),
Colour.fromHex(it.routeColor)
),
- it.headsign ?: "", // TODO is it nullable, yes e.g. for transit
+ it.headsign ?: "",
CongestionLevel.UNKNOWN,
OccupancyStatus.UNKNOWN
),
@@ -109,11 +110,11 @@ Position(0.0, 0.0),
0u,
Mps(0),
LineStub(
- it.routeShortName ?: "", // TODO is it nullable, yes e.g. for transit
+ it.routeShortName ?: "",
LineType.fromTransitous2(it.mode),
Colour.fromHex(it.routeColor)
),
- it.headsign ?: "", // TODO is it nullable, yes e.g. for transit
+ it.headsign ?: "",
CongestionLevel.UNKNOWN,
OccupancyStatus.UNKNOWN
),
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
index d7e64de917032eb11d4c946d965e372a76665f3a..934696370d4ff426935ed59438aa16de969fa377 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
@@ -4,6 +4,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later
package xyz.apiote.bimba.czwek.journeys
+import android.annotation.SuppressLint
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
@@ -48,6 +49,7 @@ journey.legs.map { it.start.vehicle.Line.name }.filter { it.isNotBlank() }.joinToString()
holder.legs.removeAllViews()
journey.legs.forEach {
+ @SuppressLint("InflateParams")
val legView = inflater.inflate(R.layout.journey_leg, null, false)
val legOrigin = legView.findViewById<TextView>(R.id.leg_origin)
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
index 27cd5f4eb45f1a1ed247833cd99ea4445c40cbf0..11bc9208d74abe424f25c39fa4ff5c4945ae2445 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
@@ -21,6 +21,7 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.doOnPreDraw
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider
@@ -44,10 +45,10 @@ import xyz.apiote.bimba.czwek.repo.Position
import kotlin.math.max
import kotlin.math.min
-// FIXME rotating breaks
class JourneysActivity : AppCompatActivity() {
private lateinit var binding: ActivityJourneysBinding
+ private lateinit var journeysViewModel: JourneysViewModel
companion object {
const val ORIGIN_PARAM = "origin"
@@ -87,7 +88,7 @@ enableEdgeToEdge()
super.onCreate(savedInstanceState)
binding = ActivityJourneysBinding.inflate(layoutInflater)
setContentView(binding.root)
- val journeysViewModel = ViewModelProvider(this)[JourneysViewModel::class.java]
+ journeysViewModel = ViewModelProvider(this)[JourneysViewModel::class.java]
ViewCompat.setOnApplyWindowInsetsListener(binding.journeys) { v, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
@@ -120,7 +121,6 @@ val destination = getDestination()
val params = getJourneyParams()
journeysViewModel.journeys.observe(this) {
- zoomMap(dpToPixelI(100f))
binding.journeysProgress.visibility = View.GONE
if (it.isEmpty()) {
binding.emptyText.visibility = View.VISIBLE
@@ -129,6 +129,7 @@ } else {
showMarkers(origin.position(), destination.position())
binding.journeys.visibility = View.VISIBLE
+
binding.journeys.adapter = JourneysAdapter(layoutInflater, this, it) { journey, hide ->
binding.map.overlays.removeAll { true }
@@ -188,9 +189,15 @@ }
ssb?.expand()
}
- override fun onStart() {
- super.onStart()
- zoomMap()
+ override fun onResume() {
+ super.onResume()
+ binding.map.doOnPreDraw {
+ zoomMap(dpToPixelI(100f))
+ val origin = getOrigin()
+ val destination = getDestination()
+ showMarkers(origin.position(), destination.position())
+ binding.map.invalidate()
+ }
}
fun zoomMap(margin: Int = 0, box: BoundingBox? = null) {
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysViewModel.kt b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysViewModel.kt
index 40857260ab38b817daed4199d8050bc667de02ef..96704b235dde8897e9c7faaed5abb640620020c2 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysViewModel.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysViewModel.kt
@@ -20,6 +20,7 @@
private val _journeys = MutableLiveData<List<Journey>>()
val journeys: LiveData<List<Journey>> = _journeys
+ // FIXME when not in foreground, throws java.net.SocketException: Software caused connection abort
fun getJourneys(context: Context, origin: Place, destination: Place, params: JourneyParams) {
viewModelScope.launch {
Log.i("Journeys", "getting journeys")
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/search/Query.kt b/app/src/main/java/xyz/apiote/bimba/czwek/search/Query.kt
index a6bd5c4d80c1ce968668bceebd1018783204dd7e..9689087311b225976332852aed41ea5cd2e5bf2a 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/search/Query.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/search/Query.kt
@@ -53,7 +53,6 @@ } else if (seemsCoordinatesDegrees(raw)) {
val coords = raw.split(", ", ",", " ")
try {
position = Position(Location.convert(coords[0]), Location.convert(coords[1]))
- // TODO check coordinates valid; TEST
mode = Mode.POSITION
} catch (e: Exception) {
Log.i("Query", "while parsing degrees: $e")
@@ -70,7 +69,6 @@ coords[0] = coords[0].replace(Regex("[NS]"), "")
coords[1] = coords[1].replace(Regex("[EW]"), "")
position =
Position(Location.convert(coords[0]) * northSouth, Location.convert(coords[1]) * eastWest)
- // TODO check coordinates valid; TEST
mode = Mode.POSITION
} catch (e: Exception) {
Log.i("Query", "while parsing deg min sec: $e")
diff --git a/app/src/main/res/layout-land/activity_journeys.xml b/app/src/main/res/layout-land/activity_journeys.xml
index fae2b3a37167b5d4e3ab54a5d2deb158436d577a..56817e15e5b87abec07b36f669d67786832b9e14 100644
--- a/app/src/main/res/layout-land/activity_journeys.xml
+++ b/app/src/main/res/layout-land/activity_journeys.xml
@@ -12,6 +12,7 @@ tools:context=".journeys.JourneysActivity">
<org.osmdroid.views.MapView
android:id="@+id/map"
+ android:layout_marginStart="350dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />