This commit is contained in:
DanielSvoboda 2025-01-30 14:51:05 -03:00
parent 06ec10497d
commit f312674c88
2 changed files with 47 additions and 63 deletions

View File

@ -1,8 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <algorithm> // std::transform
#include <cctype> // std::tolower
#include <QToolTip> #include <QToolTip>
#include "common/config.h" #include "common/config.h"
#include "common/logging/log.h" #include "common/logging/log.h"
@ -71,7 +69,7 @@ GameListFrame::GameListFrame(std::shared_ptr<GameInfoClass> game_info_get,
ListSortedAsc = true; ListSortedAsc = true;
} }
this->clearContents(); this->clearContents();
PopulateGameList(); PopulateGameList(false);
}); });
connect(this, &QTableWidget::customContextMenuRequested, this, [=, this](const QPoint& pos) { connect(this, &QTableWidget::customContextMenuRequested, this, [=, this](const QPoint& pos) {
@ -105,34 +103,23 @@ void GameListFrame::PlayBackgroundMusic(QTableWidgetItem* item) {
BackgroundMusicPlayer::getInstance().playMusic(snd0path); BackgroundMusicPlayer::getInstance().playMusic(snd0path);
} }
void GameListFrame::PopulateGameList() { void GameListFrame::PopulateGameList(bool isInitialPopulation) {
// Do not show status column if it is not enabled // Do not show status column if it is not enabled
this->setColumnHidden(2, !Config::getCompatibilityEnabled()); this->setColumnHidden(2, !Config::getCompatibilityEnabled());
this->setColumnHidden(6, !Config::GetLoadGameSizeEnabled()); this->setColumnHidden(6, !Config::GetLoadGameSizeEnabled());
// Update the row count in the table based on the number of games
this->setRowCount(m_game_info->m_games.size()); this->setRowCount(m_game_info->m_games.size());
ResizeIcons(icon_size); ResizeIcons(icon_size);
// Populate the columns with data for each game if (isInitialPopulation) {
for (int i = 0; i < m_game_info->m_games.size(); i++) { std::sort(m_game_info->m_games.begin(), m_game_info->m_games.end(),
FillRowData(i); [this](const GameInfo& a, const GameInfo& b) {
} return CompareStringsAscending(a, b, 1); // Column 1 = Nome
});
std::sort(
m_game_info->m_games.begin(), m_game_info->m_games.end(),
[this](const GameInfo& a, const GameInfo& b) { return CompareStringsAscending(a, b, 1); });
ResizeIcons(icon_size); ResizeIcons(icon_size);
// Update the table with the sorted data , Refill the row after sorting
for (int i = 0; i < m_game_info->m_games.size(); i++) {
FillRowData(i);
} }
}
void GameListFrame::FillRowData(int i) { for (int i = 0; i < m_game_info->m_games.size(); i++) {
// Fill columns with game data
SetTableItem(i, 1, QString::fromStdString(m_game_info->m_games[i].name)); SetTableItem(i, 1, QString::fromStdString(m_game_info->m_games[i].name));
SetTableItem(i, 3, QString::fromStdString(m_game_info->m_games[i].serial)); SetTableItem(i, 3, QString::fromStdString(m_game_info->m_games[i].serial));
SetRegionFlag(i, 4, QString::fromStdString(m_game_info->m_games[i].region)); SetRegionFlag(i, 4, QString::fromStdString(m_game_info->m_games[i].region));
@ -140,12 +127,10 @@ void GameListFrame::FillRowData(int i) {
SetTableItem(i, 6, QString::fromStdString(m_game_info->m_games[i].size)); SetTableItem(i, 6, QString::fromStdString(m_game_info->m_games[i].size));
SetTableItem(i, 7, QString::fromStdString(m_game_info->m_games[i].version)); SetTableItem(i, 7, QString::fromStdString(m_game_info->m_games[i].version));
// Fill compatibility column
m_game_info->m_games[i].compatibility = m_game_info->m_games[i].compatibility =
m_compat_info->GetCompatibilityInfo(m_game_info->m_games[i].serial); m_compat_info->GetCompatibilityInfo(m_game_info->m_games[i].serial);
SetCompatibilityItem(i, 2, m_game_info->m_games[i].compatibility); SetCompatibilityItem(i, 2, m_game_info->m_games[i].compatibility);
// Fill playtime column
QString playTime = GetPlayTime(m_game_info->m_games[i].serial); QString playTime = GetPlayTime(m_game_info->m_games[i].serial);
if (playTime.isEmpty()) { if (playTime.isEmpty()) {
m_game_info->m_games[i].play_time = "0:00:00"; m_game_info->m_games[i].play_time = "0:00:00";
@ -173,10 +158,10 @@ void GameListFrame::FillRowData(int i) {
} }
} }
// Fill path column
QString path; QString path;
Common::FS::PathToQString(path, m_game_info->m_games[i].path); Common::FS::PathToQString(path, m_game_info->m_games[i].path);
SetTableItem(i, 9, path); SetTableItem(i, 9, path);
}
} }
void GameListFrame::SetListBackgroundImage(QTableWidgetItem* item) { void GameListFrame::SetListBackgroundImage(QTableWidgetItem* item) {

View File

@ -46,8 +46,7 @@ private:
bool ListSortedAsc = true; bool ListSortedAsc = true;
public: public:
void PopulateGameList(); void PopulateGameList(bool isInitialPopulation = true);
void FillRowData(int i);
void ResizeIcons(int iconSize); void ResizeIcons(int iconSize);
QImage backgroundImage; QImage backgroundImage;