SD Card Alpha Sorting

First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.
2.0.x
Scott Lahteine 10 years ago
parent cf749dbeda
commit 8196b36ad9

@ -54,7 +54,7 @@ void CardReader::lsDive(const char *prepend,SdFile parent)
dir_t p;
uint8_t cnt=0;
while (parent.readDir(p, longFilename) > 0)
while (parent.readDir(p, diveFilename) > 0)
{
if( DIR_IS_SUBDIR(&p) && lsAction!=LS_Count && lsAction!=LS_GetFilename) // hence LS_SerialPrint
{
@ -91,8 +91,8 @@ void CardReader::lsDive(const char *prepend,SdFile parent)
{
if (p.name[0] == DIR_NAME_FREE) break;
if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue;
if (longFilename[0] != '\0' &&
(longFilename[0] == '.' || longFilename[0] == '_')) continue;
if (diveFilename[0] != '\0' &&
(diveFilename[0] == '.' || diveFilename[0] == '_')) continue;
if ( p.name[0] == '.')
{
if ( p.name[1] != '.')

@ -46,7 +46,11 @@ public:
#ifdef SDCARD_SORT_ALPHA
void presort();
void flush_presort();
<<<<<<< HEAD
void getfilename_sorted(const uint16_t nr);
=======
void getfilename_sorted(const uint8_t nr);
>>>>>>> SD Card Alpha Sorting
#endif
@ -60,22 +64,37 @@ public:
public:
bool saving;
bool logging;
<<<<<<< HEAD
bool sdprinting;
bool cardOK;
char filename[FILENAME_LENGTH];
char longFilename[LONG_FILENAME_LENGTH];
=======
bool sdprinting ;
bool cardOK;
char filename[FILENAME_LENGTH];
char diveFilename[LONG_FILENAME_LENGTH];
>>>>>>> SD Card Alpha Sorting
bool filenameIsDir;
int lastnr; //last number of the autostart;
private:
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
uint16_t workDirDepth;
#ifdef SDCARD_SORT_ALPHA
<<<<<<< HEAD
uint16_t sort_count;
uint8_t *sort_order;
#if SORT_USES_MORE_RAM
char **sortshort;
char **sortnames;
uint8_t *isDir;
=======
#if SORT_USES_MORE_RAM
uint16_t sort_count;
char **sortnames;
#else
uint8_t sort_order[SORT_LIMIT];
>>>>>>> SD Card Alpha Sorting
#endif
#endif
Sd2Card card;

Loading…
Cancel
Save