/* 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 DOWNLOADLIST_H #define DOWNLOADLIST_H #include class DownloadManager; /** * @brief model of the list of active and completed downloads **/ class DownloadList : public QAbstractTableModel { Q_OBJECT public: enum EColumn { COL_NAME = 0, COL_STATUS, COL_SIZE, COL_FILETIME, COL_MODNAME, COL_VERSION, COL_ID, COL_SOURCEGAME, // number of columns COL_COUNT }; public: /** * @brief constructor * * @param manager the download manager processing downloads * @param parent parent object Defaults to 0. **/ explicit DownloadList(DownloadManager *manager, QObject *parent = 0); void setMetaDisplay(bool metaDisplay); /** * @brief retrieve the number of rows to display. Invoked by Qt * * @param parent not relevant for this implementation * @return number of rows to display **/ virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent) const; QModelIndex index(int row, int column, const QModelIndex &parent) const; QModelIndex parent(const QModelIndex &child) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; /** * @brief retrieve the data to display in a specific row. Invoked by Qt * * @param index location to look up * @param role ... Defaults to Qt::DisplayRole. * @return this implementation only returns the row, the QItemDelegate implementation is expected to fetch its information from the DownloadManager **/ virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; public slots: /** * @brief used to inform the model that data has changed * * @param row the row that changed. This can be negative to update the whole view **/ void update(int row); void aboutToUpdate(); private: DownloadManager *m_Manager; bool m_MetaDisplay; }; #endif // DOWNLOADLIST_H