Add virtual torrent grouping feature#23551
Add virtual torrent grouping feature#23551AlfEspadero wants to merge 7 commits intoqbittorrent:masterfrom
Conversation
- Added TorrentGroup and TorrentGroupManager classes to manage torrent groups. - Enhanced TransferListWidget to support grouping of torrents, including creation, renaming, and deletion of groups. - Integrated group management into the UI, allowing users to add torrents to groups and remove them. - Implemented TransferListGroupModel to provide a hierarchical view of torrents grouped by their respective categories. - Added context menu actions for group operations in the TransferListWidget. - Ensured persistence of group states and settings through loading and saving mechanisms. - Updated UI elements to reflect group states and provide visual differentiation between groups and individual torrents.
Implement a lightweight grouping concept for UI aggregation, allowing users to group torrents (e.g. by Season). This feature introduces: - TorrentGroupManager for managing group definitions and membership. - TransferListGroupModel as a proxy model to display groups in the transfer list. - UI integration in TransferListWidget to support group expansion and rendering. Groups are stored in the configuration and persist across sessions.
|
@qbittorrent/bug-handlers |
|
looks promising! when is the ETA? |
|
closed/re-opened to trigger ci |
If approved, qBittorrent 5.2+ |
I can help you test if needed |
|
windows is the bane of my existence |
|
I think that might fix the windows CI crash, i should've said it in the commit |
So why did some related things get into the core? |
I found this to be the simplest way of going about it as I didn't really know where to lay the foundation for the groups |
I actually agree, I only used those two icons because they were already in the project so I didn't have to make new ones. |
Even without going into details (which I have not yet been able to go into), the following looks quite obvious:
|
I have briefly reviewed the code of this PR. It seems that you haven't familiarized yourself with the basics of Qt Model/View architecture enough, since you've taken such a strange way. IMO, it would be natural to turn the |
|
@Chocobo1 |
Nothing really as I'm not the target audience of this PR. I only hope the result isn't something that is complex and confusing to the users. |


Description
This PR introduces a "Virtual Torrent Grouping" feature to the main transfer list. It allows users to visually group multiple torrents together under a single collapsible header in the GUI, without affecting their underlying save paths, categories, or tags.
Closes #19935
Motivation
Currently, users managing large numbers of related torrents (e.g., episodes of a TV season, albums in a discography) find their transfer list cluttered. While Categories and Tags provide filtering, they do not offer a way to condense these items in the main view. This feature provides a lightweight, visual-only organization method to keep the transfer list tidy.
Implementation Details
Core Logic: Added TorrentGroup and TorrentGroupManager in base to manage group associations and state.
GUI Model: Implemented TransferListGroupModel in gui. This acts as an intermediary model to handle the tree-like structure required for collapsible groups within the existing list framework.
Widget Update: Refactored TransferListWidget to support the new grouping mode and context menu actions for creating/managing groups.
UI Changes
Verification
Tested on Linux.
Verified that grouping/ungrouping persists correctly.
Verified that sorting and filtering still work as expected when groups are active.
Screenshots
Note to reviewers
I am a freshly graduated student and this is my first major contribution to the qBittorrent codebase. I have done my best to follow the coding guidelines and style, but I am happy to make any necessary adjustments based on your feedback.