]> git.sur5r.net Git - minitube/blob - src/downloadview.cpp
Imported Upstream version 1.2
[minitube] / src / downloadview.cpp
1 #include "downloadview.h"
2 #include "downloadmodel.h"
3 #include "downloadmanager.h"
4 #include "downloadlistview.h"
5 #include "downloaditem.h"
6 #include "downloadsettings.h"
7 #include "ListModel.h"
8 #include "playlist/PrettyItemDelegate.h"
9 #include "thlibrary/thblackbar.h"
10
11 DownloadView::DownloadView(QWidget *parent) : QWidget(parent) {
12
13     QBoxLayout *layout = new QVBoxLayout(this);
14     layout->setMargin(0);
15     layout->setSpacing(0);
16
17     bar = new THBlackBar(this);
18     QAction *action = new QAction(tr("Downloads"), this);
19     bar->addAction(action);
20     layout->addWidget(bar);
21
22     listView = new DownloadListView(this);
23 #ifdef APP_MAC
24     listView->setAlternatingRowColors(true);
25 #endif
26     /*
27     QPalette p = listView->palette();
28     p.setColor(QPalette::Base, palette().color(QPalette::Window));
29     listView->setPalette(p);
30     */
31     PrettyItemDelegate *delegate = new PrettyItemDelegate(this, true);
32     listView->setItemDelegate(delegate);
33     listView->setSelectionMode(QAbstractItemView::NoSelection);
34
35     // cosmetics
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);
41
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 &)));
46
47     layout->addWidget(listView);
48
49     updateTimer = new QTimer(this);
50     updateTimer->setInterval(1000);
51     connect(updateTimer, SIGNAL(timeout()), listModel, SLOT(sendReset()));
52
53     downloadSettings = new DownloadSettings(this);
54     layout->addWidget(downloadSettings);
55 }
56
57 void DownloadView::appear() {
58     listView->setEnabled(true);
59     listModel->sendReset();
60     listView->setMouseTracking(true);
61     updateTimer->start();
62 }
63
64 void DownloadView::disappear() {
65     listView->setEnabled(false);
66     listView->setMouseTracking(false);
67 }
68
69 void DownloadView::itemEntered(const QModelIndex &index) {
70     listModel->setHoveredRow(index.row());
71 }
72
73 void DownloadView::buttonPushed(QModelIndex index) {
74     const DownloadItemPointer downloadItemPointer = index.data(DownloadItemRole).value<DownloadItemPointer>();
75     DownloadItem *downloadItem = downloadItemPointer.data();
76
77     switch (downloadItem->status()) {
78     case Downloading:
79     case Starting:
80         downloadItem->stop();
81         break;
82     case Idle:
83     case Failed:
84         downloadItem->tryAgain();
85         break;
86     case Finished:
87         downloadItem->openFolder();
88     }
89
90 }