Do SD sort order in CardReader

This commit is contained in:
Scott Lahteine 2020-04-25 18:39:47 -05:00
parent fc98383659
commit 967c1d8534
4 changed files with 5 additions and 16 deletions

View file

@ -1039,13 +1039,7 @@ namespace ExtUI {
bool FileList::seek(const uint16_t pos, const bool skip_range_check) {
#if ENABLED(SDSUPPORT)
if (!skip_range_check && (pos + 1) > count()) return false;
const uint16_t nr =
#if ENABLED(SDCARD_RATHERRECENTFIRST) && DISABLED(SDCARD_SORT_ALPHA)
count() - 1 -
#endif
pos;
card.getfilename_sorted(nr);
card.getfilename_sorted(SD_ORDER(pos, count()));
return card.filename[0] != '\0';
#else
UNUSED(pos);

View file

@ -140,14 +140,7 @@ void menu_media() {
if (ui.should_draw()) for (uint16_t i = 0; i < fileCnt; i++) {
if (_menuLineNr == _thisItemNr) {
const uint16_t nr =
#if ENABLED(SDCARD_RATHERRECENTFIRST) && DISABLED(SDCARD_SORT_ALPHA)
fileCnt - 1 -
#endif
i;
card.getfilename_sorted(nr);
card.getfilename_sorted(SD_ORDER(i, fileCnt));
if (card.flag.filenameIsDir)
MENU_ITEM(sdfolder, MSG_MEDIA_MENU, card);
else

View file

@ -924,7 +924,7 @@ void CardReader::cdroot() {
// Init sort order.
for (uint16_t i = 0; i < fileCnt; i++) {
sort_order[i] = TERN(SDCARD_RATHERRECENTFIRST, fileCnt - 1 - i, i);
sort_order[i] = SD_ORDER(i, fileCnt);
// If using RAM then read all filenames now.
#if ENABLED(SDSORT_USES_RAM)
selectFileByIndex(i);

View file

@ -29,6 +29,8 @@
#define SD_RESORT 1
#endif
#define SD_ORDER(N,C) (TERN(SDCARD_RATHERRECENTFIRST, C - 1 - (N), N))
#define MAX_DIR_DEPTH 10 // Maximum folder depth
#define MAXDIRNAMELENGTH 8 // DOS folder name size
#define MAXPATHNAMELENGTH (1 + (MAXDIRNAMELENGTH + 1) * (MAX_DIR_DEPTH) + 1 + FILENAME_LENGTH) // "/" + N * ("ADIRNAME/") + "filename.ext"