/* Copyright (C) 2012 Sebastian Herbord. All rights reserved. This file is part of Mod Organizer. Mod Organizer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Mod Organizer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ #ifndef DOWNLOADLISTWIDGET_H #define DOWNLOADLISTWIDGET_H #include "downloadmanager.h" #include #include #include #include #include namespace Ui { class DownloadListWidget; } class DownloadListWidget : public QWidget { Q_OBJECT public: explicit DownloadListWidget(QWidget* parent = 0); ~DownloadListWidget(); private: Ui::DownloadListWidget* ui; }; class DownloadManager; class DownloadListWidgetDelegate : public QItemDelegate { Q_OBJECT public: DownloadListWidgetDelegate(DownloadManager* manager, bool metaDisplay, QTreeView* view, QObject* parent = 0); ~DownloadListWidgetDelegate(); virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; void paintPendingDownload(int downloadIndex) const; void paintRegularDownload(int downloadIndex) const; signals: void installDownload(int index); void queryInfo(int index); void removeDownload(int index, bool deleteFile); void restoreDownload(int index); void cancelDownload(int index); void pauseDownload(int index); void resumeDownload(int index); protected: bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index); private: void drawCache(QPainter* painter, const QStyleOptionViewItem& option, const QPixmap& cache) const; private slots: void issueInstall(); void issueDelete(); void issueRemoveFromView(); void issueRestoreToView(); void issueCancel(); void issuePause(); void issueResume(); void issueDeleteAll(); void issueDeleteCompleted(); void issueRemoveFromViewAll(); void issueRemoveFromViewCompleted(); void issueQueryInfo(); void stateChanged(int row, DownloadManager::DownloadState); void resetCache(int); private: DownloadListWidget* m_ItemWidget; DownloadManager* m_Manager; bool m_MetaDisplay; QLabel* m_NameLabel; QLabel* m_SizeLabel; QProgressBar* m_Progress; QLabel* m_InstallLabel; int m_ContextRow; QTreeView* m_View; mutable QMap m_Cache; }; #endif // DOWNLOADLISTWIDGET_H