customisable sort order for file lists in menus

This commit is contained in:
ac-stef
2015-04-12 18:09:36 +02:00
parent 5e8c64d8b7
commit f511889731
4 changed files with 20 additions and 4 deletions
+9 -2
View File
@@ -1257,14 +1257,21 @@ void gmenu::conprintmenu()
loopv(items) { conoutf("%03d: %s%s%s", 1+i, items[i]->gettext(), items[i]->getaction()?"|\t|":"", items[i]->getaction()?items[i]->getaction():""); }
}
const char *menufilesortorders[] = { "normal", "reverse", "ignorecase", "ignorecase_reverse", "" };
int (*menufilesortcmp[])(const char **, const char **) = { stringsort, stringsortrev, stringsortignorecase, stringsortignorecaserev };
void gmenu::init()
{
if(dirlist && ((dirlist->dir != NULL) && (dirlist->ext != NULL)))
if(dirlist && dirlist->dir && dirlist->ext)
{
items.deletecontents();
vector<char *> files;
listfiles(dirlist->dir, dirlist->ext, files);
files.sort(stringsort);
defformatstring(sortorderalias)("menufilesort_%s", dirlist->ext);
int sortorderindex = 0;
const char *customsortorder = getalias(sortorderalias);
if(customsortorder) sortorderindex = getlistindex(customsortorder, menufilesortorders, true, 0);
files.sort(menufilesortcmp[sortorderindex]);
loopv(files)
{
char *f = files[i];