diff --git a/res/drawable-xxxhdpi/bus_stop_background.xml b/res/drawable/bus_stop_background.xml
rename from res/drawable-xxxhdpi/bus_stop_background.xml
rename to res/drawable/bus_stop_background.xml
diff --git a/res/drawable-xxxhdpi/bus_stop_background.xml b/res/drawable/bus_stop_background_pattern.xml
rename from res/drawable-xxxhdpi/bus_stop_background.xml
rename to res/drawable/bus_stop_background_pattern.xml
--- a/res/drawable-xxxhdpi/bus_stop_background.xml
+++ b/res/drawable/bus_stop_background_pattern.xml
@@ -1,8 +1,8 @@
-
+
\ No newline at end of file
diff --git a/res/layout/bus_stop_line_elmt.xml b/res/layout/bus_stop_line_elmt.xml
--- a/res/layout/bus_stop_line_elmt.xml
+++ b/res/layout/bus_stop_line_elmt.xml
@@ -10,7 +10,7 @@
android:layout_height="60dp"
android:layout_centerVertical="true"
- android:background="@drawable/bus_stop_background"
+ android:background="@drawable/bus_stop_background_pattern"
android:gravity="center"
android:textColor="@color/grey_100"
android:textSize="20sp"
@@ -22,22 +22,22 @@
+ android:layout_marginLeft="26dp"
+ android:layout_marginStart="26dp"/>
+ android:layout_marginLeft="26dp"
+ android:layout_marginStart="26dp"/>
#2060DD
#FFFFFF
#000000
+ @color/blue_700
\ No newline at end of file
diff --git a/src/it/reyboz/bustorino/backend/utils.java b/src/it/reyboz/bustorino/backend/utils.java
--- a/src/it/reyboz/bustorino/backend/utils.java
+++ b/src/it/reyboz/bustorino/backend/utils.java
@@ -1,3 +1,20 @@
+/*
+ BusTO (backend components)
+ Copyright (C) 2019 Fabio Mazza
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
package it.reyboz.bustorino.backend;
import android.content.Context;
@@ -146,13 +163,26 @@
sb.append(subs);
continue;
}
- sb.append(Character.toUpperCase(subs.charAt(0)));
+ //SPLIT ON ', check if contains "D'"
+ if(subs.toLowerCase(Locale.ROOT).startsWith("d'")){
+ sb.append("D'");
+ subs = subs.substring(2);
+ }
+ int index = 0;
+ char c = subs.charAt(index);
+ if(subs.length() > 1 && c=='('){
+ sb.append(c);
+ index += 1;
+ c = subs.charAt(index);
+ }
+ sb.append(Character.toUpperCase(c));
if (lowercaseRest)
- sb.append(subs.substring(1).toLowerCase(Locale.ROOT));
+ sb.append(subs.substring(index+1).toLowerCase(Locale.ROOT));
else
- sb.append(subs.substring(1));
+ sb.append(subs.substring(index+1));
}
+ if(addPoint && allsubs.length == 1) sb.append('.');
sb.append(" ");
/*sb.append(Character.toUpperCase(arr[i].charAt(0)));
if (lowercaseRest)
diff --git a/src/it/reyboz/bustorino/fragments/LinesFragment.kt b/src/it/reyboz/bustorino/fragments/LinesFragment.kt
--- a/src/it/reyboz/bustorino/fragments/LinesFragment.kt
+++ b/src/it/reyboz/bustorino/fragments/LinesFragment.kt
@@ -36,6 +36,7 @@
import it.reyboz.bustorino.data.gtfs.MatoPatternWithStops
import it.reyboz.bustorino.data.gtfs.PatternStop
import it.reyboz.bustorino.util.LinesNameSorter
+import it.reyboz.bustorino.util.PatternWithStopsSorter
class LinesFragment : ScreenBaseFragment() {
@@ -45,6 +46,8 @@
}
const val DEBUG_TAG="BusTO-LinesFragment"
const val FRAGMENT_TAG="LinesFragment"
+
+ val patternStopsComparator = PatternWithStopsSorter()
}
@@ -93,16 +96,6 @@
routeDescriptionTextView = rootView.findViewById(R.id.routeDescriptionTextView)
stopsRecyclerView = rootView.findViewById(R.id.patternStopsRecyclerView)
- /*
- Stop busStop = (Stop) parent.getItemAtPosition(position);
-
- if(mListener!=null){
- mListener.requestArrivalsForStopID(busStop.ID);
- }
-
- });
-
- */
val llManager = LinearLayoutManager(context)
llManager.orientation = LinearLayoutManager.VERTICAL
@@ -122,8 +115,13 @@
val selRoute = currentRoutes.get(pos)
routeDescriptionTextView.text = selRoute.longName
-
+ val oldRoute = viewModel.getRouteIDQueried()
+ val resetSpinner = (oldRoute != null) && (oldRoute.trim() != selRoute.gtfsId.trim())
+ Log.d(DEBUG_TAG, "Selected route: ${selRoute.gtfsId}, reset spinner: $resetSpinner")
+ //launch query for this gtfsID
viewModel.setRouteIDQuery(selRoute.gtfsId)
+ //reset spinner position
+ if(resetSpinner) patternsSpinner.setSelection(0)
}
@@ -135,7 +133,7 @@
patternsSpinner.onItemSelectedListener = object : OnItemSelectedListener{
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, position: Int, p3: Long) {
val patternWithStops = currentPatterns.get(position)
-
+ //
setPatternAndReqStops(patternWithStops)
}
@@ -173,7 +171,8 @@
viewModel.patternsWithStopsByRouteLiveData.observe(this){
patterns ->
run {
- currentPatterns = patterns.sortedBy { p->"${p.pattern.directionId} - ${p.pattern.headsign}" }
+ currentPatterns = patterns.sortedBy { p-> p.pattern.code }
+ //patterns. //sortedBy {-1*it.stopsIndices.size}// "${p.pattern.directionId} - ${p.pattern.headsign}" }
patternsAdapter?.let {
it.clear()
it.addAll(currentPatterns.map { p->"${p.pattern.directionId} - ${p.pattern.headsign}" })
@@ -181,7 +180,8 @@
}
val pos = patternsSpinner.selectedItemPosition
- if(pos!= INVALID_POSITION){
+ //might be possible that the selectedItem is different (larger than list size)
+ if(pos!= INVALID_POSITION && pos >= 0 && (pos < currentPatterns.size)){
setPatternAndReqStops(currentPatterns[pos])
}
diff --git a/src/it/reyboz/bustorino/fragments/LinesViewModel.kt b/src/it/reyboz/bustorino/fragments/LinesViewModel.kt
--- a/src/it/reyboz/bustorino/fragments/LinesViewModel.kt
+++ b/src/it/reyboz/bustorino/fragments/LinesViewModel.kt
@@ -46,6 +46,10 @@
routeIDToSearch.value = routeID
}
+ fun getRouteIDQueried(): String?{
+ return routeIDToSearch.value
+ }
+
fun requestStopsForGTFSIDs(gtfsIDs: List){
oldRepo.requestStopsWithGtfsIDs(gtfsIDs) {
if (it.isSuccess) {
diff --git a/src/it/reyboz/bustorino/util/PatternWithStopsSorter.kt b/src/it/reyboz/bustorino/util/PatternWithStopsSorter.kt
new file mode 100644
--- /dev/null
+++ b/src/it/reyboz/bustorino/util/PatternWithStopsSorter.kt
@@ -0,0 +1,21 @@
+package it.reyboz.bustorino.util
+
+import it.reyboz.bustorino.data.gtfs.MatoPatternWithStops
+
+/**
+ * Sorter for the patterns, which takes into account direction and length of pattern
+ */
+class PatternWithStopsSorter: Comparator {
+ override fun compare(p0: MatoPatternWithStops?, p1: MatoPatternWithStops?): Int {
+ if (p0 != null && p1!=null) {
+ if(p0.pattern.directionId != p1.pattern.directionId){
+ return p0.pattern.directionId - p1.pattern.directionId
+ }
+ val g = -1*(p0.stopsIndices.size - p1.stopsIndices.size)
+ if(g!=0)
+ return g;
+ else return p0.pattern.code.compareTo(p1.pattern.code)
+ }
+ else return 0;
+ }
+}
\ No newline at end of file