**Overview**
- proper model `QAbstractListModel` for downloads
- support for multiple GUIs (like download manager window, popup from toolbar, webpage, ..)
- support for various types of downloads (qtwebengine downlods, qnetworkreply downloads, download history)
- possible to add new download type + observe all changes (new/changed/removed download)
- all of this also accessible for plugins (c++, python, qml)
**Implementation**
```
DownloadManager - change to QObject (instead of QWidget as it is now)
signals:
void downloadAdded(DownloadItem *item);
void downloadRemoved(DownloadItem *item);
// DownloadItem - base class for all download types
enum Flags {
CanPause,
ActiveDownload, // inactive download = eg. download from history
};
```
**Other**
- Drop support for keeping downloads running after all browser windows are closed - instead just show message box that the download will be stopped if last browser window is closed
All of this is just a draft, final implementation can differ