Skip to content

Commit

Permalink
hotfix_19634 - rudimentary trackTabs sorter
Browse files Browse the repository at this point in the history
  • Loading branch information
sonora committed May 15, 2024
1 parent bebcb40 commit a6e896f
Showing 1 changed file with 35 additions and 2 deletions.
37 changes: 35 additions & 2 deletions OsmAnd/src/net/osmand/plus/configmap/tracks/TrackTabsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -99,12 +101,43 @@ private void updateTrackTabs(@NonNull Map<String, TrackTab> 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<TrackTab> sortTabOrder(Map<String, TrackTab> folderTabs) {
List<TrackTab> sortedTabs = new ArrayList<>(folderTabs.values());
Map<String, String> 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<TrackTab>() {
@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();
Expand Down

0 comments on commit a6e896f

Please sign in to comment.