GSoC 2019: Plugin Manager (Week 9)

Posted 4 years ago

This week's work involves a lot of bug fixing, refining and code cleaning. Some notable work includes:

  1. I made DownloadUtils cancellable by adding a slot function cancel() that can abort the download process. This is useful when for example, we're closing Resource Manager and the threads that are loading metadata haven't finished, especially when the Internet is slow and we don't want that thread to keep occupied in the thread pool.
    Here it's important to distinguish threads for different purposes and make different treatments:
    For plugins' downloading/installing/checking for update process, I don't cancel them and let them continue to run when Resource Manager closes.
    For the metadata loading process, whose work is meaningless when Resource Manager closes, I just abort them.

  2. Improvements on Plugin Manager's UI. Shortcut configuration has no meaning for plugin packages, so I disabled the button for them. Besides, I replaced the widget that displays plugin description from QTextBrowser to QWebEngineView, so images from plugin pages can be downloaded and displayed. However, QWebEngineView uses a little more memory than QTextBrowser and there might be some controversy on this. Anyway, I implemented that quickly and it's easy to revert.

What to do next

I plan to lock features to implement in the last period. I removed some ideas I proposed in the beginning that seemed not so exciting and useful. So as shown in the PR page, if existing features are stable enough, here're some items I'd like to work on:
- add "OK" or "Cancel" buttons in the installed plugin page of Resource Manager. This should be fast.
- explore the possibility of 2.x plugins. There're a huge number of 2.x plugins in the plugin repository yet not usable, because of compatibility issues. And we may offer an option of downloading and converting them. We've thought of something like automatic conversion by replacing keywords in code... Anyway, this one is more of an experimental project.

Invitation to review the code or try it out directly!

Since I've cleaned the code, I think the code is ready for review( or to be considered to be merged after a few small refinements I mentioned above:)).
Also, for non-developers, I invite anyone interested to have a real look at the work product! For Windows users, there's a development build downloadable at https://ci.appveyor.com/api/buildjobs/8yh3cye9gs3hxfam/artifacts/MuseSc…