3 This file is part of Minitube.
4 Copyright 2009, Flavio Tordini <flavio.tordini@gmail.com>
6 Minitube is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 Minitube is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with Minitube. If not, see <http://www.gnu.org/licenses/>.
21 #include "downloadmodel.h"
22 #include "downloadmanager.h"
23 #include "downloaditem.h"
25 #include "playlistmodel.h"
27 DownloadModel::DownloadModel(DownloadManager *downloadManager, QObject *parent) :
28 QAbstractListModel(parent),
29 downloadManager(downloadManager) {
31 playIconHovered = false;
32 playIconPressed = false;
35 int DownloadModel::rowCount(const QModelIndex &/*parent*/) const {
36 return downloadManager->getItems().size();
39 QVariant DownloadModel::data(const QModelIndex &index, int role) const {
41 int row = index.row();
42 if (row < 0 || row >= rowCount()) return QVariant();
44 QList<DownloadItem*> items = downloadManager->getItems();
45 if (items.isEmpty()) return QVariant();
51 return QVariant::fromValue(QPointer<Video>(items.at(row)->getVideo()));
52 case DownloadItemRole:
53 return QVariant::fromValue(QPointer<DownloadItem>(items.at(row)));
57 return hoveredRow == index.row();
58 case DownloadButtonHoveredRole:
59 return playIconHovered;
60 case DownloadButtonPressedRole:
61 return playIconPressed;
67 void DownloadModel::sendReset() {
72 void DownloadModel::setHoveredRow(int row) {
73 int oldRow = hoveredRow;
75 emit dataChanged( createIndex( oldRow, 0 ), createIndex( oldRow, columnCount() - 1 ) );
76 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
79 void DownloadModel::clearHover() {
80 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
84 void DownloadModel::enterPlayIconHover() {
85 if (playIconHovered) return;
86 playIconHovered = true;
90 void DownloadModel::exitPlayIconHover() {
91 if (!playIconHovered) return;
92 playIconHovered = false;
94 setHoveredRow(hoveredRow);
97 void DownloadModel::enterPlayIconPressed() {
98 if (playIconPressed) return;
99 playIconPressed = true;
103 void DownloadModel::exitPlayIconPressed() {
104 if (!playIconPressed) return;
105 playIconPressed = false;
109 void DownloadModel::updatePlayIcon() {
110 emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );