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