1 #include "downloadmodel.h"
2 #include "downloadmanager.h"
3 #include "downloaditem.h"
7 DownloadModel::DownloadModel(DownloadManager *downloadManager, QObject *parent) :
8 QAbstractListModel(parent),
9 downloadManager(downloadManager) {
11 playIconHovered = false;
12 playIconPressed = false;
15 int DownloadModel::rowCount(const QModelIndex &/*parent*/) const {
16 return downloadManager->getItems().size();
19 QVariant DownloadModel::data(const QModelIndex &index, int role) const {
21 int row = index.row();
22 if (row < 0 || row >= rowCount()) return QVariant();
24 QList<DownloadItem*> items = downloadManager->getItems();
25 if (items.isEmpty()) return QVariant();
31 return QVariant::fromValue(QPointer<Video>(items.at(row)->getVideo()));
32 case DownloadItemRole:
33 return QVariant::fromValue(QPointer<DownloadItem>(items.at(row)));
37 return hoveredRow == index.row();
38 case DownloadButtonHoveredRole:
39 return playIconHovered;
40 case DownloadButtonPressedRole:
41 return playIconPressed;
47 void DownloadModel::sendReset() {
51 void DownloadModel::setHoveredRow(int row) {
52 int oldRow = hoveredRow;
54 emit dataChanged( createIndex( oldRow, 0 ), createIndex( oldRow, columnCount() - 1 ) );
55 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
58 void DownloadModel::clearHover() {
59 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
63 void DownloadModel::enterPlayIconHover() {
64 if (playIconHovered) return;
65 playIconHovered = true;
69 void DownloadModel::exitPlayIconHover() {
70 if (!playIconHovered) return;
71 playIconHovered = false;
73 setHoveredRow(hoveredRow);
76 void DownloadModel::enterPlayIconPressed() {
77 if (playIconPressed) return;
78 playIconPressed = true;
82 void DownloadModel::exitPlayIconPressed() {
83 if (!playIconPressed) return;
84 playIconPressed = false;
88 void DownloadModel::updatePlayIcon() {
89 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );