From 9b45b9fe8131177e53555b54cbed95951b9914bd Mon Sep 17 00:00:00 2001 From: WerWolv Date: Wed, 11 May 2022 21:35:17 +0200 Subject: [PATCH] Sort overlay list according to their file name --- libs/libtesla | 2 +- source/main.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/libs/libtesla b/libs/libtesla index 640629f..0c8fca5 160000 --- a/libs/libtesla +++ b/libs/libtesla @@ -1 +1 @@ -Subproject commit 640629f49f9e8997ef0769b21b26f4fc177c736f +Subproject commit 0c8fca579fbdf2fe8c312d31a3d092b0e064ef5d diff --git a/source/main.cpp b/source/main.cpp index 9d2c2ec..1de861a 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -92,7 +92,8 @@ static void rebuildUI() { renderer->drawString("Place your .ovl files in /switch/.overlays", false, 82, 410, 15, renderer->a(tsl::style::color::ColorDescription)); }); - u16 entries = 0; + std::vector overlayFiles; + fsdevMountSdmc(); for (const auto &entry : std::filesystem::directory_iterator("sdmc:/switch/.overlays")) { if (entry.path().filename() == "ovlmenu.ovl") @@ -101,13 +102,21 @@ static void rebuildUI() { if (entry.path().extension() != ".ovl") continue; + overlayFiles.push_back(entry); + } + + std::sort(overlayFiles.begin(), overlayFiles.end(), [](const auto &left, const auto &right) { + return left.path().filename() < right.path().filename(); + }); + + for (const auto &entry : overlayFiles) { auto [result, name, version] = getOverlayInfo(entry.path()); if (result != ResultSuccess) continue; auto *listEntry = new tsl::elm::ListItem(name); listEntry->setValue(version, true); - listEntry->setClickListener([entry, entries](s64 key) { + listEntry->setClickListener([entry](s64 key) { if (key & HidNpadButton_A) { tsl::setNextOverlay(entry.path()); @@ -119,12 +128,11 @@ static void rebuildUI() { }); overlayList->addItem(listEntry); - entries++; } rootFrame->setHeader(header); - if (entries == 0) { + if (overlayFiles.empty()) { rootFrame->setContent(noOverlaysError); delete overlayList; } else {