diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/CachedOsmandIndexes.java b/OsmAnd-java/src/main/java/net/osmand/binary/CachedOsmandIndexes.java index ec936a3cb43..ec37a606765 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/CachedOsmandIndexes.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/CachedOsmandIndexes.java @@ -41,7 +41,7 @@ public class CachedOsmandIndexes { private boolean hasChanged = false; public static final String INDEXES_DEFAULT_FILENAME = "indexes.cache"; - public static final int VERSION = 4;// synchronize with binaryRead.cpp CACHE_VERSION + public static final int VERSION = 5;// synchronize with binaryRead.cpp CACHE_VERSION public FileIndex addToCache(BinaryMapIndexReader reader, File f) { hasChanged = true; diff --git a/OsmAnd/src/net/osmand/plus/configmap/tracks/TrackTabsHelper.java b/OsmAnd/src/net/osmand/plus/configmap/tracks/TrackTabsHelper.java index 995c2f919b1..6599b6cfbbc 100644 --- a/OsmAnd/src/net/osmand/plus/configmap/tracks/TrackTabsHelper.java +++ b/OsmAnd/src/net/osmand/plus/configmap/tracks/TrackTabsHelper.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import net.osmand.IndexConstants; import net.osmand.data.LatLon; import net.osmand.gpx.GPXFile; import net.osmand.plus.OsmandApplication; @@ -26,6 +27,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -99,12 +101,43 @@ private void updateTrackTabs(@NonNull Map folderTabs) { trackTabs.clear(); trackTabs.put(TrackTabType.ON_MAP.name(), getTracksOnMapTab()); trackTabs.put(TrackTabType.ALL.name(), getAllTracksTab()); - trackTabs.putAll(getAllSmartFoldersTabs()); - trackTabs.putAll(folderTabs); + for (TrackTab tab : sortTabOrder(getAllSmartFoldersTabs())) { + trackTabs.put(tab.getTypeName(), tab); + } + for (TrackTab tab : sortTabOrder(folderTabs)) { + trackTabs.put(tab.getTypeName(), tab); + } loadTabsSortModes(); sortTrackTabs(); } + private List sortTabOrder(Map folderTabs) { + List sortedTabs = new ArrayList<>(folderTabs.values()); + Map tabsSortModes = settings.getTrackSortModes(); + TracksSortMode rootSortModeTemp = TracksSortMode.getDefaultSortMode(); + String trackRootDir = app.getAppPath(IndexConstants.GPX_INDEX_DIR).getName(); + if (tabsSortModes.containsKey(trackRootDir)) { + rootSortModeTemp = TracksSortMode.getByValue(tabsSortModes.get(trackRootDir)); + } + final TracksSortMode rootSortMode = rootSortModeTemp; + //LatLon latLon = app.getMapViewTrackingUtilities().getDefaultLocation(); + //Collections.sort(sortedTabs, new TracksComparator(rootSortMode, latLon)); + // PRELIMINARY: Should ultimately use TracksComparator for trackTabs, similar to trackFolders: + Collections.sort(sortedTabs, new Comparator() { + @Override + public int compare(TrackTab tab1, TrackTab tab2) { + switch (rootSortMode) { + case NAME_ASCENDING: + return tab1.getTypeName().compareTo(tab2.getTypeName()); + case NAME_DESCENDING: + return -tab1.getTypeName().compareTo(tab2.getTypeName()); + } + return tab1.getTypeName().compareTo(tab2.getTypeName()); + } + }); + return sortedTabs; + } + private void updateSelectTrackTabs(@NonNull TrackFolder folder) { processVisibleTracks(); processRecentlyVisibleTracks();