change the way favorites are saved to match #3119

This commit is contained in:
David Antunes 2025-06-21 15:45:25 +01:00
parent 7e708befe3
commit e67bffdbed
4 changed files with 33 additions and 12 deletions

View File

@ -241,7 +241,8 @@ bool GameGridFrame::IsValidCellSelected() {
void GameGridFrame::SetFavoriteIcon(QWidget* parentWidget, QVector<GameInfo> m_games_, void GameGridFrame::SetFavoriteIcon(QWidget* parentWidget, QVector<GameInfo> m_games_,
int gameCounter) { int gameCounter) {
QString serialStr = QString::fromStdString(m_games_[gameCounter].serial); QString serialStr = QString::fromStdString(m_games_[gameCounter].serial);
bool isFavorite = m_gui_settings->GetValue(gui::favorites, serialStr, false).toBool(); QList<QString> list = gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite = list.contains(serialStr);
QLabel* label = new QLabel(parentWidget); QLabel* label = new QLabel(parentWidget);
label->setPixmap(QPixmap(":images/favorite_icon.png") label->setPixmap(QPixmap(":images/favorite_icon.png")
@ -264,8 +265,9 @@ bool GameGridFrame::CompareWithFavorite(GameInfo a, GameInfo b) {
std::string serial_b = b.serial; std::string serial_b = b.serial;
QString serialStr_a = QString::fromStdString(a.serial); QString serialStr_a = QString::fromStdString(a.serial);
QString serialStr_b = QString::fromStdString(b.serial); QString serialStr_b = QString::fromStdString(b.serial);
bool isFavorite_a = m_gui_settings->GetValue(gui::favorites, serialStr_a, false).toBool(); QList<QString> list = gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite_b = m_gui_settings->GetValue(gui::favorites, serialStr_b, false).toBool(); bool isFavorite_a = list.contains(serialStr_a);
bool isFavorite_b = list.contains(serialStr_b);
if (isFavorite_a != isFavorite_b) { if (isFavorite_a != isFavorite_b) {
return isFavorite_a; return isFavorite_a;
} else { } else {

View File

@ -96,9 +96,16 @@ GameListFrame::GameListFrame(std::shared_ptr<gui_settings> gui_settings,
QUrl(url_issues + m_game_info->m_games[row].compatibility.issue_number)); QUrl(url_issues + m_game_info->m_games[row].compatibility.issue_number));
} else if (column == 10) { } else if (column == 10) {
last_favorite = m_game_info->m_games[row].serial; last_favorite = m_game_info->m_games[row].serial;
QString serialStr = QString::fromStdString(m_game_info->m_games[row].serial); QString serialStr = QString::fromStdString(last_favorite);
bool isFavorite = m_gui_settings->GetValue(gui::favorites, serialStr, false).toBool(); QList<QString> list =
m_gui_settings->SetValue(gui::favorites, serialStr, !isFavorite, true); gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite = list.contains(serialStr);
if (isFavorite) {
list.removeOne(serialStr);
} else {
list.append(serialStr);
}
m_gui_settings->SetValue(gui::favorites_list, gui_settings::List2Var(list));
PopulateGameList(false); PopulateGameList(false);
} }
}); });
@ -250,8 +257,9 @@ bool GameListFrame::CompareWithFavorite(GameInfo a, GameInfo b, int columnIndex,
std::string serial_b = b.serial; std::string serial_b = b.serial;
QString serialStr_a = QString::fromStdString(a.serial); QString serialStr_a = QString::fromStdString(a.serial);
QString serialStr_b = QString::fromStdString(b.serial); QString serialStr_b = QString::fromStdString(b.serial);
bool isFavorite_a = m_gui_settings->GetValue(gui::favorites, serialStr_a, false).toBool(); QList<QString> list = gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite_b = m_gui_settings->GetValue(gui::favorites, serialStr_b, false).toBool(); bool isFavorite_a = list.contains(serialStr_a);
bool isFavorite_b = list.contains(serialStr_b);
if (isFavorite_a != isFavorite_b) { if (isFavorite_a != isFavorite_b) {
return isFavorite_a; return isFavorite_a;
} else if (ascending) { } else if (ascending) {
@ -439,8 +447,10 @@ void GameListFrame::SetRegionFlag(int row, int column, QString itemStr) {
} }
void GameListFrame::SetFavoriteIcon(int row, int column) { void GameListFrame::SetFavoriteIcon(int row, int column) {
QString serialStr = QString::fromStdString(m_game_info->m_games[row].serial); QString serialStr = QString::fromStdString(m_game_info->m_games[row].serial);
bool isFavorite = m_gui_settings->GetValue(gui::favorites, serialStr, false).toBool(); QList<QString> list = gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite = list.contains(serialStr);
QTableWidgetItem* item = new QTableWidgetItem(); QTableWidgetItem* item = new QTableWidgetItem();
QImage scaledPixmap = QImage(":images/favorite_icon.png"); QImage scaledPixmap = QImage(":images/favorite_icon.png");

View File

@ -67,8 +67,8 @@ public:
menu.addMenu(openFolderMenu); menu.addMenu(openFolderMenu);
QString serialStr = QString::fromStdString(m_games[itemID].serial); QString serialStr = QString::fromStdString(m_games[itemID].serial);
bool isFavorite = m_gui_settings->GetValue(gui::favorites, serialStr, false).toBool(); QList<QString> list = gui_settings::Var2List(m_gui_settings->GetValue(gui::favorites_list));
bool isFavorite = list.contains(serialStr);
QAction* toggleFavorite; QAction* toggleFavorite;
if (isFavorite) { if (isFavorite) {
@ -316,7 +316,12 @@ public:
} }
if (selected == toggleFavorite) { if (selected == toggleFavorite) {
m_gui_settings->SetValue(gui::favorites, serialStr, !isFavorite, true); if (isFavorite) {
list.removeOne(serialStr);
} else {
list.append(serialStr);
}
m_gui_settings->SetValue(gui::favorites_list, gui_settings::List2Var(list));
changedFavorite = 1; changedFavorite = 1;
} }

View File

@ -42,6 +42,10 @@ const gui_value gl_backgroundMusicVolume = gui_value(game_list, "backgroundMusic
const gui_value gg_icon_size = gui_value(game_grid, "icon_size", 69); const gui_value gg_icon_size = gui_value(game_grid, "icon_size", 69);
const gui_value gg_slider_pos = gui_value(game_grid, "slider_pos", 0); const gui_value gg_slider_pos = gui_value(game_grid, "slider_pos", 0);
// favorites list
const gui_value favorites_list =
gui_value(favorites, "favoritesList", QVariant::fromValue(QList<QString>()));
} // namespace gui } // namespace gui
class gui_settings : public settings { class gui_settings : public settings {