1 #include "downloadview.h"
2 #include "downloadmodel.h"
3 #include "downloadmanager.h"
4 #include "downloadlistview.h"
5 #include "downloaditem.h"
6 #include "downloadsettings.h"
8 #include "playlist/PrettyItemDelegate.h"
9 #include "thlibrary/thblackbar.h"
11 DownloadView::DownloadView(QWidget *parent) : QWidget(parent) {
13 QBoxLayout *layout = new QVBoxLayout(this);
15 layout->setSpacing(0);
17 bar = new THBlackBar(this);
18 QAction *action = new QAction(tr("Downloads"), this);
19 bar->addAction(action);
20 layout->addWidget(bar);
22 listView = new DownloadListView(this);
24 listView->setAlternatingRowColors(true);
27 QPalette p = listView->palette();
28 p.setColor(QPalette::Base, palette().color(QPalette::Window));
29 listView->setPalette(p);
31 PrettyItemDelegate *delegate = new PrettyItemDelegate(this, true);
32 listView->setItemDelegate(delegate);
33 listView->setSelectionMode(QAbstractItemView::NoSelection);
36 listView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
37 listView->setFrameShape(QFrame::NoFrame);
38 listView->setAttribute(Qt::WA_MacShowFocusRect, false);
39 listView->setMinimumSize(320,240);
40 listView->setUniformItemSizes(true);
42 listModel = DownloadManager::instance()->getModel();
43 listView->setModel(listModel);
44 connect(listView, SIGNAL(downloadButtonPushed(QModelIndex)), SLOT(buttonPushed(QModelIndex)));
45 connect(listView, SIGNAL(entered(const QModelIndex &)), SLOT(itemEntered(const QModelIndex &)));
47 layout->addWidget(listView);
49 updateTimer = new QTimer(this);
50 updateTimer->setInterval(1000);
51 connect(updateTimer, SIGNAL(timeout()), listModel, SLOT(sendReset()));
53 downloadSettings = new DownloadSettings(this);
54 layout->addWidget(downloadSettings);
57 void DownloadView::appear() {
58 listView->setEnabled(true);
59 listModel->sendReset();
60 listView->setMouseTracking(true);
64 void DownloadView::disappear() {
65 listView->setEnabled(false);
66 listView->setMouseTracking(false);
69 void DownloadView::itemEntered(const QModelIndex &index) {
70 listModel->setHoveredRow(index.row());
73 void DownloadView::buttonPushed(QModelIndex index) {
74 const DownloadItemPointer downloadItemPointer = index.data(DownloadItemRole).value<DownloadItemPointer>();
75 DownloadItem *downloadItem = downloadItemPointer.data();
77 switch (downloadItem->status()) {
84 downloadItem->tryAgain();
87 downloadItem->openFolder();