|
@@ -1547,8 +1547,9 @@ millis_t shift_ms; // = 0
|
1547
|
1547
|
inline void Init_Shift_Name() {
|
1548
|
1548
|
const bool is_subdir = !card.flag.workDirIsRoot;
|
1549
|
1549
|
const int8_t filenum = select_file.now - 1 - is_subdir; // Skip "Back" and ".."
|
1550
|
|
- if (WITHIN(filenum, 0, card.get_num_Files() - 1)) {
|
1551
|
|
- card.getfilename_sorted(filenum);
|
|
1550
|
+ const uint16_t fileCnt = card.get_num_Files();
|
|
1551
|
+ if (WITHIN(filenum, 0, fileCnt - 1)) {
|
|
1552
|
+ card.getfilename_sorted(SD_ORDER(filenum, fileCnt));
|
1552
|
1553
|
char * const name = card.longest_filename();
|
1553
|
1554
|
make_name_without_ext(shift_name, name, 100);
|
1554
|
1555
|
}
|
|
@@ -1561,8 +1562,8 @@ inline void Init_SDItem_Shift() {
|
1561
|
1562
|
}
|
1562
|
1563
|
|
1563
|
1564
|
/**
|
1564
|
|
-* Display an SD item, adding a CDUP for subfolders.
|
1565
|
|
-*/
|
|
1565
|
+ * Display an SD item, adding a CDUP for subfolders.
|
|
1566
|
+ */
|
1566
|
1567
|
inline void Draw_SDItem(const uint16_t item, int16_t row=-1) {
|
1567
|
1568
|
if (row < 0) row = item + 1 + MROWS - index_file;
|
1568
|
1569
|
const bool is_subdir = !card.flag.workDirIsRoot;
|
|
@@ -1617,7 +1618,7 @@ inline void Redraw_SD_List() {
|
1617
|
1618
|
|
1618
|
1619
|
// As many files as will fit
|
1619
|
1620
|
LOOP_L_N(i, _MIN(nr_sd_menu_items(), MROWS))
|
1620
|
|
- Draw_SDItem(i, i + 1);
|
|
1621
|
+ Draw_SDItem(i, i + 1);
|
1621
|
1622
|
|
1622
|
1623
|
Init_SDItem_Shift();
|
1623
|
1624
|
}
|
|
@@ -1898,7 +1899,7 @@ void HMI_SelectFile(void) {
|
1898
|
1899
|
}
|
1899
|
1900
|
else {
|
1900
|
1901
|
const uint16_t filenum = select_file.now - 1 - hasUpDir;
|
1901
|
|
- card.getfilename_sorted(filenum);
|
|
1902
|
+ card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files()));
|
1902
|
1903
|
|
1903
|
1904
|
// Enter that folder!
|
1904
|
1905
|
if (card.flag.filenameIsDir) {
|
|
@@ -3415,10 +3416,11 @@ void EachMomentUpdate(void) {
|
3415
|
3416
|
DWIN_Draw_Rectangle(0, c2, 144, 305, 247, 346);
|
3416
|
3417
|
};
|
3417
|
3418
|
|
3418
|
|
- LOOP_L_N(i, card.get_num_Files()) {
|
|
3419
|
+ const uint16_t fileCnt = card.get_num_Files();
|
|
3420
|
+ for (uint16_t i = 0; i < fileCnt; i++) {
|
3419
|
3421
|
// TODO: Resume print via M1000 then update the UI
|
3420
|
3422
|
// with the active filename which can come from CardReader.
|
3421
|
|
- card.getfilename_sorted(i);
|
|
3423
|
+ card.getfilename_sorted(SD_ORDER(i, fileCnt));
|
3422
|
3424
|
if (!strcmp(card.filename, &recovery.info.sd_filename[1])) { // Resume print before power failure while have the same file
|
3423
|
3425
|
recovery_flag = 1;
|
3424
|
3426
|
HMI_flag.select_flag = 1;
|