diff options
| author | Tannin <devnull@localhost> | 2013-10-16 19:34:56 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-10-16 19:34:56 +0200 |
| commit | 0b84cc3d45e15d2edec6a083b5139e6d7528b53d (patch) | |
| tree | 2ec5067022aab265cd2af1cfeac38f34b88a3778 /src | |
| parent | 1bf3cc585e28516f4ff6c9edf720fa9d290f47c2 (diff) | |
| parent | eae275cc843883d04892767c10b1dba2d7b11613 (diff) | |
Merge
Diffstat (limited to 'src')
| -rw-r--r-- | src/downloadmanager.cpp | 17 | ||||
| -rw-r--r-- | src/downloadmanager.h | 2 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 4 | ||||
| -rw-r--r-- | src/mainwindow.h | 22 | ||||
| -rw-r--r-- | src/nexusinterface.cpp | 4 |
5 files changed, 42 insertions, 7 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index eca5600a..779b052c 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -376,6 +376,15 @@ void DownloadManager::startDownload(QNetworkReply *reply, DownloadInfo *newDownl void DownloadManager::addNXMDownload(const QString &url) { NXMUrl nxmInfo(url); + + QString managedGame = ToQString(MOShared::GameInfo::instance().getGameShortName()); + + if (nxmInfo.game().compare(managedGame, Qt::CaseInsensitive) != 0) { + QMessageBox::information(NULL, tr("Wrong Game"), tr("The download link is for a mod for \"%1\" but this instance of MO " + "has been set up for \"%2\".").arg(nxmInfo.game()).arg(managedGame), QMessageBox::Ok); + return; + } + m_RequestIDs.insert(m_NexusInterface->requestFileInfo(nxmInfo.getModId(), nxmInfo.getFileId(), this, QVariant())); } @@ -990,7 +999,7 @@ void DownloadManager::nxmFilesAvailable(int, QVariant userData, QVariant resultD } -void DownloadManager::nxmFileInfoAvailable(int modID, int fileID, QVariant, QVariant resultData, int requestID) +void DownloadManager::nxmFileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID) { std::set<int>::iterator idIter = m_RequestIDs.find(requestID); if (idIter == m_RequestIDs.end()) { @@ -1007,7 +1016,11 @@ void DownloadManager::nxmFileInfoAvailable(int modID, int fileID, QVariant, QVar info.m_Version = result["version"].toString(); info.m_FileName = result["uri"].toString(); - m_RequestIDs.insert(m_NexusInterface->requestDownloadURL(modID, fileID, this, qVariantFromValue(info))); + if (userData.isValid()) { + m_RequestIDs.insert(m_NexusInterface->requestDownloadURL(modID, fileID, this, qVariantFromValue(info), userData.toString())); + } else { + m_RequestIDs.insert(m_NexusInterface->requestDownloadURL(modID, fileID, this, qVariantFromValue(info))); + } } diff --git a/src/downloadmanager.h b/src/downloadmanager.h index a42ac073..e82ea064 100644 --- a/src/downloadmanager.h +++ b/src/downloadmanager.h @@ -125,7 +125,7 @@ private: private: static unsigned int s_NextDownloadID; private: - DownloadInfo() : m_TotalSize(0), m_ReQueried(false) {} + DownloadInfo() : m_TotalSize(0), m_ReQueried(false), m_Hidden(false) {} }; public: diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 1b6fd047..b7a0fc2f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -111,6 +111,8 @@ using namespace MOBase; using namespace MOShared; + + static bool isOnline() { QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces(); @@ -146,7 +148,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget m_Updater(NexusInterface::instance(), this), m_CategoryFactory(CategoryFactory::instance()), m_CurrentProfile(NULL), m_AskForNexusPW(false), m_LoginAttempted(false), m_ArchivesInit(false), m_ContextItem(NULL), m_ContextAction(NULL), m_CurrentSaveView(NULL), - m_GameInfo(new GameInfoImpl()) + m_GameInfo(new GameInfoImpl()), m_AboutToRun() { ui->setupUi(this); this->setWindowTitle(ToQString(GameInfo::instance().getGameName()) + " Mod Organizer v" + m_Updater.getVersion().displayString()); diff --git a/src/mainwindow.h b/src/mainwindow.h index 8a34d16a..dc8d20c8 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -66,6 +66,28 @@ class MainWindow : public QMainWindow, public MOBase::IOrganizer, public MOBase: Q_OBJECT Q_INTERFACES(MOBase::IPluginDiagnose) +private: + + struct SignalCombinerAnd + { + typedef bool result_type; + template<typename InputIterator> + bool operator()(InputIterator first, InputIterator last) const + { + while (first != last) { + if (!(*first)) { + return false; + } + ++first; + } + return true; + } + }; + +public: + + typedef boost::signals2::signal<bool (const QString&), SignalCombinerAnd> SignalAboutToRunApplication; + public: struct SignalCombinerAnd diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index bee0bb44..936ff400 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -397,7 +397,7 @@ void NexusInterface::nextRequest() QNetworkRequest request(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/xml"); #pragma message("automatically insert the correct version number") - request.setRawHeader("User-Agent", QString("Mod Organizer v0.99.0 (compatible to Nexus Client v%1)").arg(m_NMMVersion).toUtf8()); + request.setRawHeader("User-Agent", QString("Mod Organizer v1.0.5 (compatible to Nexus Client v%1)").arg(m_NMMVersion).toUtf8()); info.m_Reply = m_AccessManager->get(request); @@ -414,8 +414,6 @@ void NexusInterface::downloadRequestedNXM(const QString &url) emit requestNXMDownload(url); } -#include <QDebug> - void NexusInterface::requestFinished(std::list<NXMRequestInfo>::iterator iter) { QNetworkReply *reply = iter->m_Reply; |
