summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/downloadlist.cpp101
-rw-r--r--src/downloadlist.h16
-rw-r--r--src/downloadlistview.cpp6
-rw-r--r--src/downloadlistview.h1
-rw-r--r--src/downloadstab.cpp4
5 files changed, 55 insertions, 73 deletions
diff --git a/src/downloadlist.cpp b/src/downloadlist.cpp
index 9f29f475..1f6dd4b2 100644
--- a/src/downloadlist.cpp
+++ b/src/downloadlist.cpp
@@ -17,9 +17,11 @@ You should have received a copy of the GNU General Public License
along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "organizercore.h"
#include "downloadlist.h"
#include "downloadmanager.h"
#include "modlistdropinfo.h"
+#include "settings.h"
#include <utility.h>
#include <log.h>
#include <QEvent>
@@ -29,16 +31,11 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
using namespace MOBase;
-DownloadList::DownloadList(DownloadManager *manager, QObject *parent)
- : QAbstractTableModel(parent), m_Manager(manager)
+DownloadList::DownloadList(OrganizerCore& core, QObject *parent)
+ : QAbstractTableModel(parent), m_manager(*core.downloadManager()), m_settings(core.settings())
{
- connect(m_Manager, SIGNAL(update(int)), this, SLOT(update(int)));
- connect(m_Manager, SIGNAL(aboutToUpdate()), this, SLOT(aboutToUpdate()));
-}
-
-void DownloadList::setMetaDisplay(bool metaDisplay)
-{
- m_MetaDisplay = metaDisplay;
+ connect(&m_manager, SIGNAL(update(int)), this, SLOT(update(int)));
+ connect(&m_manager, SIGNAL(aboutToUpdate()), this, SLOT(aboutToUpdate()));
}
@@ -46,7 +43,7 @@ int DownloadList::rowCount(const QModelIndex& parent) const
{
if (!parent.isValid()) {
// root item
- return m_Manager->numTotalDownloads() + m_Manager->numPendingDownloads();
+ return m_manager.numTotalDownloads() + m_manager.numPendingDownloads();
} else {
return 0;
}
@@ -105,10 +102,10 @@ QMimeData* DownloadList::mimeData(const QModelIndexList& indexes) const
QVariant DownloadList::data(const QModelIndex &index, int role) const
{
- bool pendingDownload = index.row() >= m_Manager->numTotalDownloads();
+ bool pendingDownload = index.row() >= m_manager.numTotalDownloads();
if (role == Qt::DisplayRole) {
if (pendingDownload) {
- std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(index.row() - m_Manager->numTotalDownloads());
+ std::tuple<QString, int, int> nexusids = m_manager.getPendingDownload(index.row() - m_manager.numTotalDownloads());
switch (index.column()) {
case COL_NAME: return tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids));
case COL_SIZE: return tr("Unknown");
@@ -116,41 +113,41 @@ QVariant DownloadList::data(const QModelIndex &index, int role) const
}
} else {
switch (index.column()) {
- case COL_NAME: return m_MetaDisplay ? m_Manager->getDisplayName(index.row()) : m_Manager->getFileName(index.row());
+ case COL_NAME: return m_settings.interface().metaDownloads() ? m_manager.getDisplayName(index.row()) : m_manager.getFileName(index.row());
case COL_MODNAME: {
- if (m_Manager->isInfoIncomplete(index.row())) {
+ if (m_manager.isInfoIncomplete(index.row())) {
return {};
} else {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(index.row());
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(index.row());
return info->modName;
}
}
case COL_VERSION: {
- if (m_Manager->isInfoIncomplete(index.row())) {
+ if (m_manager.isInfoIncomplete(index.row())) {
return {};
} else {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(index.row());
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(index.row());
return info->version.canonicalString();
}
}
case COL_ID: {
- if (m_Manager->isInfoIncomplete(index.row())) {
+ if (m_manager.isInfoIncomplete(index.row())) {
return {};
} else {
- return QString("%1").arg(m_Manager->getModID(index.row()));
+ return QString("%1").arg(m_manager.getModID(index.row()));
}
}
case COL_SOURCEGAME: {
- if (m_Manager->isInfoIncomplete(index.row())) {
+ if (m_manager.isInfoIncomplete(index.row())) {
return {};
} else {
- return QString("%1").arg(m_Manager->getDisplayGameName(index.row()));
+ return QString("%1").arg(m_manager.getDisplayGameName(index.row()));
}
}
- case COL_SIZE: return MOBase::localizedByteSize(m_Manager->getFileSize(index.row()));
- case COL_FILETIME: return m_Manager->getFileTime(index.row());
+ case COL_SIZE: return MOBase::localizedByteSize(m_manager.getFileSize(index.row()));
+ case COL_FILETIME: return m_manager.getFileTime(index.row());
case COL_STATUS:
- switch (m_Manager->getState(index.row())) {
+ switch (m_manager.getState(index.row())) {
// STATE_DOWNLOADING handled by DownloadProgressDelegate
case DownloadManager::STATE_STARTED: return tr("Started");
case DownloadManager::STATE_CANCELING: return tr("Canceling");
@@ -171,7 +168,7 @@ QVariant DownloadList::data(const QModelIndex &index, int role) const
if (pendingDownload) {
return QColor(Qt::darkBlue);
} else {
- DownloadManager::DownloadState state = m_Manager->getState(index.row());
+ DownloadManager::DownloadState state = m_manager.getState(index.row());
if (state == DownloadManager::STATE_READY)
return QColor(Qt::darkGreen);
else if (state == DownloadManager::STATE_UNINSTALLED)
@@ -183,18 +180,18 @@ QVariant DownloadList::data(const QModelIndex &index, int role) const
if (pendingDownload) {
return tr("Pending download");
} else {
- QString text = m_Manager->getFileName(index.row()) + "\n";
- if (m_Manager->isInfoIncomplete(index.row())) {
+ QString text = m_manager.getFileName(index.row()) + "\n";
+ if (m_manager.isInfoIncomplete(index.row())) {
text += tr("Information missing, please select \"Query Info\" from the context menu to re-retrieve.");
} else {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(index.row());
- return QString("%1 (ID %2) %3<br><span>%4</span>").arg(info->modName).arg(m_Manager->getModID(index.row())).arg(info->version.canonicalString()).arg(info->description.chopped(4096));
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(index.row());
+ return QString("%1 (ID %2) %3<br><span>%4</span>").arg(info->modName).arg(m_manager.getModID(index.row())).arg(info->version.canonicalString()).arg(info->description.chopped(4096));
}
return text;
}
} else if (role == Qt::DecorationRole && index.column() == COL_NAME) {
- if (!pendingDownload && m_Manager->getState(index.row()) >= DownloadManager::STATE_READY
- && m_Manager->isInfoIncomplete(index.row()))
+ if (!pendingDownload && m_manager.getState(index.row()) >= DownloadManager::STATE_READY
+ && m_manager.isInfoIncomplete(index.row()))
return QIcon(":/MO/gui/warning_16");
} else if (role == Qt::TextAlignmentRole) {
if (index.column() == COL_SIZE)
@@ -226,20 +223,20 @@ bool DownloadList::lessThanPredicate(const QModelIndex &left, const QModelIndex
{
int leftIndex = left.row();
int rightIndex = right.row();
- if ((leftIndex < m_Manager->numTotalDownloads())
- && (rightIndex < m_Manager->numTotalDownloads())) {
+ if ((leftIndex < m_manager.numTotalDownloads())
+ && (rightIndex < m_manager.numTotalDownloads())) {
if (left.column() == DownloadList::COL_NAME) {
- return m_Manager->getFileName(left.row()).compare(m_Manager->getFileName(right.row()), Qt::CaseInsensitive) < 0;
+ return m_manager.getFileName(left.row()).compare(m_manager.getFileName(right.row()), Qt::CaseInsensitive) < 0;
} else if (left.column() == DownloadList::COL_MODNAME) {
QString leftName, rightName;
- if (!m_Manager->isInfoIncomplete(left.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(left.row());
+ if (!m_manager.isInfoIncomplete(left.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(left.row());
leftName = info->modName;
}
- if (!m_Manager->isInfoIncomplete(right.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(right.row());
+ if (!m_manager.isInfoIncomplete(right.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(right.row());
rightName = info->modName;
}
@@ -247,13 +244,13 @@ bool DownloadList::lessThanPredicate(const QModelIndex &left, const QModelIndex
} else if (left.column() == DownloadList::COL_VERSION) {
MOBase::VersionInfo versionLeft, versionRight;
- if (!m_Manager->isInfoIncomplete(left.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(left.row());
+ if (!m_manager.isInfoIncomplete(left.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(left.row());
versionLeft = info->version;
}
- if (!m_Manager->isInfoIncomplete(right.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(right.row());
+ if (!m_manager.isInfoIncomplete(right.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(right.row());
versionRight = info->version;
}
@@ -261,30 +258,30 @@ bool DownloadList::lessThanPredicate(const QModelIndex &left, const QModelIndex
} else if (left.column() == DownloadList::COL_ID) {
int leftID=0, rightID=0;
- if (!m_Manager->isInfoIncomplete(left.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(left.row());
+ if (!m_manager.isInfoIncomplete(left.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(left.row());
leftID = info->modID;
}
- if (!m_Manager->isInfoIncomplete(right.row())) {
- const MOBase::ModRepositoryFileInfo *info = m_Manager->getFileInfo(right.row());
+ if (!m_manager.isInfoIncomplete(right.row())) {
+ const MOBase::ModRepositoryFileInfo *info = m_manager.getFileInfo(right.row());
rightID = info->modID;
}
return leftID < rightID;
} else if (left.column() == DownloadList::COL_STATUS) {
- DownloadManager::DownloadState leftState = m_Manager->getState(left.row());
- DownloadManager::DownloadState rightState = m_Manager->getState(right.row());
+ DownloadManager::DownloadState leftState = m_manager.getState(left.row());
+ DownloadManager::DownloadState rightState = m_manager.getState(right.row());
if (leftState == rightState)
- return m_Manager->getFileTime(left.row()) < m_Manager->getFileTime(right.row());
+ return m_manager.getFileTime(left.row()) < m_manager.getFileTime(right.row());
else
return leftState > rightState;
} else if (left.column() == DownloadList::COL_SIZE) {
- return m_Manager->getFileSize(left.row()) < m_Manager->getFileSize(right.row());
+ return m_manager.getFileSize(left.row()) < m_manager.getFileSize(right.row());
} else if (left.column() == DownloadList::COL_FILETIME) {
- return m_Manager->getFileTime(left.row()) < m_Manager->getFileTime(right.row());
+ return m_manager.getFileTime(left.row()) < m_manager.getFileTime(right.row());
} else if (left.column() == DownloadList::COL_SOURCEGAME) {
- return m_Manager->getDisplayGameName(left.row()) < m_Manager->getDisplayGameName(right.row());
+ return m_manager.getDisplayGameName(left.row()) < m_manager.getDisplayGameName(right.row());
} else {
return leftIndex < rightIndex;
}
diff --git a/src/downloadlist.h b/src/downloadlist.h
index 65d03ab9..cec8b6b0 100644
--- a/src/downloadlist.h
+++ b/src/downloadlist.h
@@ -22,7 +22,9 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QAbstractTableModel>
+class OrganizerCore;
class DownloadManager;
+class Settings;
/**
@@ -51,15 +53,7 @@ public:
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);
+ explicit DownloadList(OrganizerCore& core, QObject *parent = 0);
/**
* @brief retrieve the number of rows to display. Invoked by Qt
@@ -103,8 +97,8 @@ public slots:
private:
- DownloadManager *m_Manager;
- bool m_MetaDisplay;
+ DownloadManager& m_manager;
+ Settings& m_settings;
};
#endif // DOWNLOADLIST_H
diff --git a/src/downloadlistview.cpp b/src/downloadlistview.cpp
index a1f544a8..239933bd 100644
--- a/src/downloadlistview.cpp
+++ b/src/downloadlistview.cpp
@@ -159,12 +159,6 @@ void DownloadListView::setSourceModel(DownloadList *sourceModel)
m_SourceModel = sourceModel;
}
-void DownloadListView::setMetaDisplay(bool metaDisplay)
-{
- if (m_SourceModel != nullptr)
- m_SourceModel->setMetaDisplay(metaDisplay);
-}
-
void DownloadListView::onDoubleClick(const QModelIndex &index)
{
QModelIndex sourceIndex = qobject_cast<QSortFilterProxyModel*>(model())->mapToSource(index);
diff --git a/src/downloadlistview.h b/src/downloadlistview.h
index 050c869f..247a71cc 100644
--- a/src/downloadlistview.h
+++ b/src/downloadlistview.h
@@ -74,7 +74,6 @@ public:
void setManager(DownloadManager *manager);
void setSourceModel(DownloadList *sourceModel);
- void setMetaDisplay(bool metaDisplay);
signals:
void installDownload(int index);
diff --git a/src/downloadstab.cpp b/src/downloadstab.cpp
index ab7a1c9a..8a6573bd 100644
--- a/src/downloadstab.cpp
+++ b/src/downloadstab.cpp
@@ -9,8 +9,7 @@ DownloadsTab::DownloadsTab(OrganizerCore& core, Ui::MainWindow* mwui)
mwui->btnRefreshDownloads, mwui->downloadView, mwui->showHiddenBox,
mwui->downloadFilterEdit}
{
- DownloadList *sourceModel = new DownloadList(
- m_core.downloadManager(), ui.list);
+ DownloadList *sourceModel = new DownloadList(m_core, ui.list);
ui.list->setModel(sourceModel);
ui.list->setManager(m_core.downloadManager());
@@ -56,7 +55,6 @@ void DownloadsTab::update()
ui.list->setStyleSheet("DownloadListView::item { padding: 16px 4px; }");
}
- ui.list->setMetaDisplay(m_core.settings().interface().metaDownloads());
ui.list->style()->unpolish(ui.list);
ui.list->style()->polish(ui.list);
qobject_cast<DownloadListHeader*>(ui.list->header())->customResizeSections();