GameList: Add ability to favourite games#14216
GameList: Add ability to favourite games#14216Vishrut2403 wants to merge 10 commits intoPCSX2:masterfrom
Conversation
There was a problem hiding this comment.
Thank you for submitting a contribution to PCSX2
As this is your first pull request, please be aware of the contributing guidelines.
Additionally, as per recent changes in GitHub Actions, your pull request will need to be approved by a maintainer before GitHub Actions can run against it. You can find more information about this change here.
Please be patient until this happens. In the meantime if you'd like to confirm the builds are passing, you have the option of opening a PR on your own fork, just make sure your fork's master branch is up to date!
|
Any reason for a separate ini instead of adding it to the custom attributes one? |
I kept favourites in a separate .ini because they represent user-specific state, whereas custom_attributes_ini is used for per-game metadata. custom_attributes_ini is treated as static metadata, so introducing favourites there would mix it with changing user preferences. |
|
Hello! Is there a standard English spelling for files and folders in PCSX2? I ask because you suggested creating a "favourites.ini" file, not "favorites.ini". I'm not sure if the spelling variations can be mixed up in the graphical interface either. Anyway, just a small detail I noticed! Thank you for your contribution! |
cced973 to
289587d
Compare
I think I should stick to American English, updated all spellings to "favorite" throughout and pushed the changes. |
static metadata such as custom titles and regions? |
Yes, and also now I figured that custom titles and regions are also user preferences, I'm happy to move favorites into custom_attributes_ini if that is the preferred approach. |
|
That is indeed the preferred approach, yes. |
Thanks, I'll make the changes now. |
|
Done, moved favorites into custom_attributes_ini and pushed the changes. |
I'd say both for consistency |
Sounds good, I'll implement both |
fec3d7f to
4f65a68
Compare
e908fbe to
b3e1bb7
Compare
There was a problem hiding this comment.
Found some issues.
A thought on the design: If all the favorites are going to sort to the top anyway, is a whole new (visible) column even necessary? Could you get away with adding a unicode star to the title column instead?
Maybe someone else could weigh in on what they think would be best.
As a user, this suggestion makes a lot of sense to me. Implementation-wise, it may be possible to just return the "star" icon as the |
Using a star in the title column does simplify the UI and avoids introducing an extra visible column. From an implementation perspective, returning a star via DecorationRole for Column_Title should work cleanly. This ends up being a tradeoff between a cleaner UI and ensuring the favorite state is always visible. I’m fine going with the star approach if we’re okay with that behavior, otherwise, the separate column guarantees persistent visibility. |
|
The only practical scenario I see where the Title column isn't visible is if the File Title column is being used instead. So you could also display the favorite state there. |
Going with the star-in-title approach for now. I’ll surface the favorite state via DecorationRole on the Title column, and also in the File Title column so the indicator remains visible. |
…for favorite badge
… in title columns
b3e1bb7 to
194352a
Compare
Will that be the final approach in this feature? I'd rather have the option to star my favorite games and keep them where they are in the list. But I understand if that may add more complexity to the current implementation... |




Description of Changes
Adds the ability to favourite games in the game list. Favourited games are persisted to a
favourites.inifile in the settings directory and sorted to the top of the game list regardless of the active sort column.is_favouritefield toGameList::EntryGetFavouritesFile(),IsGameFavourited()andSetGameFavourite()functions toGameListcustom_attributes_iniGameListModel::lessThan()#14107
Rationale behind Changes
Searching for a specific game manually takes time, especially with large libraries. Favouriting allows users to pin frequently played games to the top of the list without scrolling or searching.
The implementation is kept flexible so it can be extended to a full groups system in the future (#11666), with "Favourites" acting as a special case of a group.
Suggested Testing Steps
Did you use AI to help find, test, or implement this issue or feature?
Yes. I did use Claude to understand the codebase and existing patterns such as how
custom_attributes_iniandPlayedTimeMapare structured, and to guide the implementation. All code was reviewed and tested manually.