From 2b8c2ce423f01c790157af7f5624ea476978417d Mon Sep 17 00:00:00 2001 From: ElBread3 <92335081+ElBread3@users.noreply.github.com> Date: Sat, 5 Oct 2024 13:34:38 -0500 Subject: [PATCH] Fix list sorting for some categories (#1242) * fix list sorting for serial, firmware version, and game size * bad apple!! * qol --- src/qt_gui/game_grid_frame.cpp | 4 +++- src/qt_gui/game_list_frame.h | 21 +++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/qt_gui/game_grid_frame.cpp b/src/qt_gui/game_grid_frame.cpp index 0292828b0..b932e46c3 100644 --- a/src/qt_gui/game_grid_frame.cpp +++ b/src/qt_gui/game_grid_frame.cpp @@ -102,7 +102,9 @@ void GameGridFrame::PopulateGameGrid(QVector m_games_search, bool from name_label->setGraphicsEffect(shadowEffect); widget->setLayout(layout); - QString tooltipText = QString::fromStdString(m_games_[gameCounter].name); + QString tooltipText = QString::fromStdString(m_games_[gameCounter].name + " (" + + m_games_[gameCounter].version + ", " + + m_games_[gameCounter].region + ")"); widget->setToolTip(tooltipText); QString tooltipStyle = QString("QToolTip {" "background-color: #ffffff;" diff --git a/src/qt_gui/game_list_frame.h b/src/qt_gui/game_list_frame.h index af9ce9280..957ac7318 100644 --- a/src/qt_gui/game_list_frame.h +++ b/src/qt_gui/game_list_frame.h @@ -44,18 +44,27 @@ public: int icon_size; + static float parseAsFloat(const std::string& str, const int& offset) { + return std::stof(str.substr(0, str.size() - offset)); + } + + static float parseSizeMB(const std::string& size) { + float num = parseAsFloat(size, 3); + return (size[size.size() - 2] == 'G') ? num * 1024 : num; + } + static bool CompareStringsAscending(GameInfo a, GameInfo b, int columnIndex) { switch (columnIndex) { case 1: return a.name < b.name; case 2: - return a.serial < b.serial; + return a.serial.substr(4) < b.serial.substr(4); case 3: return a.region < b.region; case 4: - return a.fw < b.fw; + return parseAsFloat(a.fw, 0) < parseAsFloat(b.fw, 0); case 5: - return a.size < b.size; + return parseSizeMB(b.size) < parseSizeMB(a.size); case 6: return a.version < b.version; case 7: @@ -70,13 +79,13 @@ public: case 1: return a.name > b.name; case 2: - return a.serial > b.serial; + return a.serial.substr(4) > b.serial.substr(4); case 3: return a.region > b.region; case 4: - return a.fw > b.fw; + return parseAsFloat(a.fw, 0) > parseAsFloat(b.fw, 0); case 5: - return a.size > b.size; + return parseSizeMB(b.size) > parseSizeMB(a.size); case 6: return a.version > b.version; case 7: