Browse Source

Do SD sort order in CardReader

vanilla_fb_2.0.x
Scott Lahteine 5 years ago
parent
commit
967c1d8534
  1. 8
      Marlin/src/lcd/extui/ui_api.cpp
  2. 9
      Marlin/src/lcd/menu/menu_media.cpp
  3. 2
      Marlin/src/sd/cardreader.cpp
  4. 2
      Marlin/src/sd/cardreader.h

8
Marlin/src/lcd/extui/ui_api.cpp

@ -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);

9
Marlin/src/lcd/menu/menu_media.cpp

@ -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

2
Marlin/src/sd/cardreader.cpp

@ -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);

2
Marlin/src/sd/cardreader.h

@ -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"

Loading…
Cancel
Save