/* 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 "downloadlist.h" #include "downloadlistsortproxy.h" #include #include #include #include #include #include #include namespace Ui { class DownloadListWidget; } class DownloadProgressDelegate : public QStyledItemDelegate { Q_OBJECT public: DownloadProgressDelegate(DownloadManager *manager, DownloadListSortProxy *sortProxy, QWidget *parent = 0) : QStyledItemDelegate(parent), m_Manager(manager), m_SortProxy(sortProxy) {} void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: DownloadManager *m_Manager; DownloadListSortProxy *m_SortProxy; }; class DownloadListHeader : public QHeaderView { Q_OBJECT public: explicit DownloadListHeader(Qt::Orientation orientation, QWidget *parent = nullptr) : QHeaderView(orientation, parent) {} void customResizeSections(); private: void mouseReleaseEvent(QMouseEvent *event) override; }; class DownloadListWidget : public QTreeView { Q_OBJECT public: explicit DownloadListWidget(QWidget *parent = 0); ~DownloadListWidget(); void setManager(DownloadManager *manager); void setSourceModel(DownloadList *sourceModel); void setMetaDisplay(bool metaDisplay); signals: void installDownload(int index); void queryInfo(int index); void queryInfoMd5(int index); void removeDownload(int index, bool deleteFile); void restoreDownload(int index); void cancelDownload(int index); void pauseDownload(int index); void resumeDownload(int index); void visitOnNexus(int index); void openFile(int index); void openInDownloadsFolder(int index); private slots: void onDoubleClick(const QModelIndex &index); void onCustomContextMenu(const QPoint &point); void onHeaderCustomContextMenu(const QPoint &point); void issueInstall(); void issueDelete(); void issueRemoveFromView(); void issueRestoreToView(); void issueRestoreToViewAll(); void issueVisitOnNexus(); void issueOpenFile(); void issueOpenInDownloadsFolder(); void issueCancel(); void issuePause(); void issueResume(); void issueDeleteAll(); void issueDeleteCompleted(); void issueDeleteUninstalled(); void issueRemoveFromViewAll(); void issueRemoveFromViewCompleted(); void issueRemoveFromViewUninstalled(); void issueQueryInfo(); void issueQueryInfoMd5(); private: DownloadManager *m_Manager; DownloadList *m_SourceModel = 0; int m_ContextRow; void resizeEvent(QResizeEvent *event); }; #endif // DOWNLOADLISTWIDGET_H