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.
This commit is contained in:
parent
cf749dbeda
commit
8196b36ad9
@ -54,7 +54,7 @@ void CardReader::lsDive(const char *prepend,SdFile parent)
|
|||||||
dir_t p;
|
dir_t p;
|
||||||
uint8_t cnt=0;
|
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
|
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_FREE) break;
|
||||||
if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue;
|
if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue;
|
||||||
if (longFilename[0] != '\0' &&
|
if (diveFilename[0] != '\0' &&
|
||||||
(longFilename[0] == '.' || longFilename[0] == '_')) continue;
|
(diveFilename[0] == '.' || diveFilename[0] == '_')) continue;
|
||||||
if ( p.name[0] == '.')
|
if ( p.name[0] == '.')
|
||||||
{
|
{
|
||||||
if ( p.name[1] != '.')
|
if ( p.name[1] != '.')
|
||||||
|
@ -46,7 +46,11 @@ public:
|
|||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
void presort();
|
void presort();
|
||||||
void flush_presort();
|
void flush_presort();
|
||||||
|
<<<<<<< HEAD
|
||||||
void getfilename_sorted(const uint16_t nr);
|
void getfilename_sorted(const uint16_t nr);
|
||||||
|
=======
|
||||||
|
void getfilename_sorted(const uint8_t nr);
|
||||||
|
>>>>>>> SD Card Alpha Sorting
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -60,22 +64,37 @@ public:
|
|||||||
public:
|
public:
|
||||||
bool saving;
|
bool saving;
|
||||||
bool logging;
|
bool logging;
|
||||||
|
<<<<<<< HEAD
|
||||||
bool sdprinting;
|
bool sdprinting;
|
||||||
bool cardOK;
|
bool cardOK;
|
||||||
char filename[FILENAME_LENGTH];
|
char filename[FILENAME_LENGTH];
|
||||||
char longFilename[LONG_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;
|
bool filenameIsDir;
|
||||||
int lastnr; //last number of the autostart;
|
int lastnr; //last number of the autostart;
|
||||||
private:
|
private:
|
||||||
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
||||||
uint16_t workDirDepth;
|
uint16_t workDirDepth;
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
|
<<<<<<< HEAD
|
||||||
uint16_t sort_count;
|
uint16_t sort_count;
|
||||||
uint8_t *sort_order;
|
uint8_t *sort_order;
|
||||||
#if SORT_USES_MORE_RAM
|
#if SORT_USES_MORE_RAM
|
||||||
char **sortshort;
|
char **sortshort;
|
||||||
char **sortnames;
|
char **sortnames;
|
||||||
uint8_t *isDir;
|
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
|
||||||
#endif
|
#endif
|
||||||
Sd2Card card;
|
Sd2Card card;
|
||||||
|
Loading…
Reference in New Issue
Block a user