-
Notifications
You must be signed in to change notification settings - Fork 451
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP-Collective Effort: Rework GUI to support GigaChannel #4090
Conversation
Tribler/Core/Modules/restapi/channels/channels_torrents_endpoint.py
Outdated
Show resolved
Hide resolved
retest this please |
1 similar comment
retest this please |
3f4d64f
to
45a844f
Compare
This comment has been minimized.
This comment has been minimized.
Tribler/Core/Modules/restapi/channels/channels_torrents_endpoint.py
Outdated
Show resolved
Hide resolved
659855b
to
8794bdf
Compare
d2e8761
to
f5c4d72
Compare
For anyone looking at/working on this PR, I am currently working on some major changes to the GUI code and polishing the GUI elements. @ichorid I reviewed/tested the PR. Overall, I think you did an amazing job on this PR! The pagination works very smoothly and it is a very nice QoL improvement. It really allows the user interface to scale. Although I was a bit worried about the manual drawing of GUI elements, it allows for a huge boost in performance. Also, the code is not hard to understand, and maintainable enough. Also, the way you wrote the code and use of comments indicates your design decisions and helped me to understand your thoughts 👍 That said, I think that code maintainability and structure, both in the core and GUI can even be more improved. I've been working on some changes yesterday and today and I already have a big list of changes I made and some feedback I have for you. Note that these changes are mostly related to code structure (i.e. use of subclassing/splitting different classes into separate files...) and I barely made any change to the functionality, which is overall good I think. I documented each change I made and elaborated why I made it. The biggest change, for now, is that I split the model/view/delegate logic into separate units that control table rows for displaying channels, and table rows for displaying torrents. You combined this logic but I argue that it is better to split them since these views are fundamentally different. It adds some code but I think it will benefit maintainability in the long term. One thing that is helping me, is to run the fake Tribler API instead of the 'real' Tribler core. An upcoming change from my side and something that we already discussed is that the RESTful API should really be RESTful (instead of having one Finally, it seems that some of the PR checks are only testing code located in the |
I'm glad you appreciated my humble contribution 😊 |
This patch replaces QT List-based view of the channels and their contents with a TableView-based widget that uses QT MVC idiom The provided TableModel is capable of loading data lazily from the REST endpoint. The search endpoint is modified to send the data in small pages and do sorts and searches. The TableView serves the model with a custom Delegate. In addition, data from the old Channels implementation can be served through (ugly) dual-stack adapters in the same table.
There is a LOT of bugs to fix and work to do to finish this thing:
Having said all that, there are only two positive sides about this PR:
UPDATE
This PR now includes lots of other changes and fixes related to GigaChannels. At the point of its merging, it will provide everything necessary for GigaChannels to become production-ready.
Things left to do (beside usual requirements like test coverage):
apsw
dependency and rewrite the upgrader so it usespony
orsqlite3
.