Author: Adam Pioterek <adam.pioterek@protonmail.ch>
lowFloor and tickets infos from VM on favourite
%!v(PANIC=String method: strings: negative Repeat count)
diff --git a/app/src/main/java/ml/adamsprogs/bimba/datasources/VmService.kt b/app/src/main/java/ml/adamsprogs/bimba/datasources/VmService.kt index 3169b7e37c91bba5d727db03e85f8a23e3677185..856ad8efe316e522ee30732c26d9e02a85f0545f 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/datasources/VmService.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/datasources/VmService.kt @@ -113,6 +113,7 @@ downloadVM(it.key) } } + @Synchronized private suspend fun downloadVM(stopCode: String) { if (!NetworkStateReceiver.isNetworkAvailable()) { vms[stopCode] = emptySet() @@ -148,13 +149,13 @@ departures[thisPlateId] = HashSet() val departureDay = (it["departure"].asString).split("T")[0].split("-")[2] val departureTime = calendarFromIso(it["departure"].asString).secondsAfterMidnight() var ticketMachine = Departure.TICKET_MACHINE_NONE - if (it.has("ticketMachine")) { - if (it["ticketMachine"].asBoolean) - ticketMachine = Departure.TICKET_MACHINE_AUTOMAT - } if (it.has("driversTicketMachine")) { if (it["driversTicketMachine"].asBoolean) ticketMachine = Departure.TICKET_MACHINE_DRIVER + } + if (it.has("ticketMachine")) { + if (it["ticketMachine"].asBoolean) + ticketMachine = Departure.TICKET_MACHINE_AUTOMAT } val lowFloor = if (it.has("lowFloorBus")) it["lowFloorBus"].asBoolean else false val departure = Departure(thisLine, listOf(-1), departureTime, lowFloor, diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/adapters/FavouritesAdapter.kt b/app/src/main/java/ml/adamsprogs/bimba/models/adapters/FavouritesAdapter.kt index 3762d36f92937345fefd52ea89c97aa608d52b2e..1f1a1a174e5e1b149d16121b6347234d207b8a85 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/adapters/FavouritesAdapter.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/adapters/FavouritesAdapter.kt @@ -16,6 +16,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import ml.adamsprogs.bimba.R import ml.adamsprogs.bimba.collections.FavouriteStorage +import ml.adamsprogs.bimba.models.Departure import ml.adamsprogs.bimba.models.Favourite import java.util.* @@ -89,10 +90,19 @@ } holder.timeTextView.text = nextDepartureText holder.lineTextView.text = nextDepartureLineText if (nextDeparture != null) { - if (nextDeparture.vm) + if (nextDeparture.vm || nextDeparture.onStop) holder.typeIcon.setImageDrawable(ResourcesCompat.getDrawable(appContext.resources, R.drawable.ic_departure_vm, appContext.theme)) else holder.typeIcon.setImageDrawable(ResourcesCompat.getDrawable(appContext.resources, R.drawable.ic_departure_timetable, appContext.theme)) + if (nextDeparture.lowFloor) + holder.floorIcon.visibility = View.VISIBLE + if (nextDeparture.ticketMachine != Departure.TICKET_MACHINE_NONE) { + holder.ticketIcon.visibility = View.VISIBLE + if (nextDeparture.ticketMachine == Departure.TICKET_MACHINE_DRIVER) + holder.ticketIcon.setImageDrawable(ResourcesCompat.getDrawable(appContext.resources, R.drawable.ic_ticket, appContext.theme)) + if (nextDeparture.ticketMachine == Departure.TICKET_MACHINE_AUTOMAT) + holder.ticketIcon.setImageDrawable(ResourcesCompat.getDrawable(appContext.resources, R.drawable.ic_ticket_machine, appContext.theme)) + } } } } @@ -128,6 +138,8 @@ val timeTextView: TextView = itemView.findViewById(R.id.favourite_time) val lineTextView: TextView = itemView.findViewById(R.id.favourite_line) val moreButton: ImageView = itemView.findViewById(R.id.favourite_more_button) val typeIcon: ImageView = itemView.findViewById(R.id.departureTypeIcon) + val floorIcon: ImageView = itemView.findViewById(R.id.departureFloorIcon) + val ticketIcon: ImageView = itemView.findViewById(R.id.ticketMachineIcon) init { itemView.setOnClickListener(this) diff --git a/app/src/main/res/drawable/ic_ticket_machine.xml b/app/src/main/res/drawable/ic_ticket_machine.xml index eda4f0ebdc6e496fca3819318a2b8ca3464feffa..7172345b1a4d243339f0ce2c04574f476254b29e 100644 --- a/app/src/main/res/drawable/ic_ticket_machine.xml +++ b/app/src/main/res/drawable/ic_ticket_machine.xml @@ -4,7 +4,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path - android:pathData="M5,4h14v16h-14z" + android:pathData="M3.25,2l17.5,0l0,20l-17.5,0z" android:strokeAlpha="1" android:strokeLineJoin="round" android:strokeWidth="0.93728513" @@ -13,18 +13,18 @@ android:strokeColor="#00000000" android:fillAlpha="1" android:strokeLineCap="round"/> <path - android:pathData="m13.3687,6.4594c-1.0892,0 -1.9738,0.8846 -1.9738,1.9738 0,1.0892 0.8846,1.9738 1.9738,1.9738 0.2029,0 0.3956,-0.039 0.5798,-0.096v-0.7889c-0.0899,0.051 -0.1893,0.092 -0.3017,0.113v0.3775h-0.5259v-0.3809c-0.3374,-0.071 -0.6239,-0.2879 -0.6456,-0.6709h0.386c0.0197,0.2073 0.1614,0.3675 0.5225,0.3675 0.3868,0 0.4736,-0.193 0.4736,-0.3135 0,-0.1637 -0.0859,-0.3168 -0.5259,-0.4214 -0.4894,-0.1189 -0.8242,-0.3202 -0.8242,-0.7248 0,-0.3393 0.2742,-0.5606 0.6135,-0.6338v-0.3809h0.5259v0.386c0.1238,0.03 0.2192,0.087 0.3017,0.1534v-0.8378c-0.1843,-0.057 -0.3769,-0.096 -0.5798,-0.096zM13.3839,7.5398c-0.296,0 -0.472,0.1342 -0.472,0.3236 0,0.1658 0.1273,0.2732 0.5259,0.3759 0.1803,0.046 0.3611,0.1123 0.5107,0.2107v-0.5411h-0.1264c-0.0098,-0.2189 -0.1265,-0.3691 -0.4382,-0.3691z" + android:pathData="m13.7109,5.0742c-1.3615,0 -2.4673,1.1057 -2.4673,2.4672 0,1.3615 1.1057,2.4672 2.4673,2.4672 0.2537,0 0.4944,-0.0488 0.7248,-0.12l0,-0.9861c-0.1124,0.0637 -0.2367,0.115 -0.3771,0.1412l0,0.4719l-0.6574,0l0,-0.4761c-0.4218,-0.0888 -0.7798,-0.3599 -0.807,-0.8386l0.4825,0c0.0247,0.2591 0.2018,0.4594 0.6532,0.4594 0.4834,0 0.5921,-0.2413 0.5921,-0.3919 0,-0.2046 -0.1073,-0.396 -0.6574,-0.5268 -0.6117,-0.1486 -1.0303,-0.4002 -1.0303,-0.906 0,-0.4241 0.3427,-0.7007 0.7669,-0.7923l0,-0.4761l0.6574,0l0,0.4825c0.1547,0.0375 0.274,0.1088 0.3771,0.1918l0,-1.0473c-0.2304,-0.0712 -0.4711,-0.12 -0.7248,-0.12zM13.7298,6.4247c-0.37,0 -0.59,0.1678 -0.59,0.4045 0,0.2072 0.1591,0.3415 0.6574,0.4699 0.2254,0.0575 0.4514,0.1404 0.6384,0.2634l0,-0.6764l-0.158,0c-0.0123,-0.2736 -0.1581,-0.4614 -0.5478,-0.4614z" android:strokeWidth="0.19732159" android:fillColor="#000000"/> <path - android:pathData="M13.9132,5.4797h0.8348v5.9176h-0.8348z" + android:pathData="M14.3915,3.8496l1.0435,0l0,7.397l-1.0435,0z" android:strokeAlpha="1" android:strokeWidth="0" android:fillColor="#000000" android:strokeColor="#000000" android:fillAlpha="1"/> <path - android:pathData="M7.6166,13.6294h8.7667v1.6582h-8.7667z" + android:pathData="M6.5208,14.0367l10.9584,0l0,2.0727l-10.9584,0z" android:strokeAlpha="1" android:strokeLineJoin="round" android:strokeWidth="0.88379633" @@ -33,7 +33,7 @@ android:strokeColor="#00000000" android:fillAlpha="1" android:strokeLineCap="round"/> <path - android:pathData="M5,4V20H19V4ZM6,5H18V19H6Z" + android:pathData="M3.25,2L3.25,22L20.75,22L20.75,2ZM4.5,3.25L19.5,3.25L19.5,20.75L4.5,20.75Z" android:strokeAlpha="1" android:strokeLineJoin="round" android:strokeWidth="1.00509846" @@ -42,7 +42,7 @@ android:strokeColor="#00000000" android:fillAlpha="1" android:strokeLineCap="round"/> <group> - <clip-path android:pathData="M0,0h24v24L0,24z M 0,0"/> + <clip-path android:pathData="M-3,-3l30,0l0,30L-3,27z M 0,0"/> <path android:fillColor="#FF000000" android:pathData="m 9.8554688,14.806641 v 3.580078 c 0,0.294849 0.2422602,0.537109 0.5371092,0.537109 h 1.072266 c 0,-0.294849 0.240307,-0.537109 0.535156,-0.537109 0.294849,0 0.535156,0.24226 0.535156,0.537109 h 1.072266 c 0.29753,0 0.537109,-0.24226 0.537109,-0.537109 v -3.580078 z m 0.6699222,1.167968 H 11.0625 v 0.535157 h -0.537109 z m 1.207031,0 h 0.535156 v 0.535157 h -0.535156 z m 1.205078,0 h 0.537109 v 0.535157 H 12.9375 Z" diff --git a/app/src/main/res/layout/row_favourite.xml b/app/src/main/res/layout/row_favourite.xml index 9d517fa29196b630844733f97b029388999f784f..755603b55160822dfd2e436e7d0c124f4db38493 100644 --- a/app/src/main/res/layout/row_favourite.xml +++ b/app/src/main/res/layout/row_favourite.xml @@ -48,8 +48,8 @@android:id="@+id/favourite_line" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" android:layout_marginStart="16dp" + android:layout_marginBottom="16dp" android:text="" android:textAppearance="@style/TextAppearance.AppCompat.Subhead" app:layout_constraintBottom_toBottomOf="parent" @@ -62,11 +62,34 @@ android:id="@+id/departureTypeIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" android:layout_marginEnd="16dp" + android:layout_marginBottom="16dp" android:contentDescription="@string/departure_type_icon_description" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> + + <ImageView + android:id="@+id/departureFloorIcon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_marginBottom="16dp" + android:contentDescription="@string/departure_floor" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/departureTypeIcon" + app:srcCompat="@drawable/ic_low_floor" /> + + <ImageView + android:id="@+id/ticketMachineIcon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_marginBottom="16dp" + android:contentDescription="@string/ticket_machine_icon" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/departureFloorIcon" /> <ImageView android:id="@+id/favourite_more_button"