summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-10-16 19:34:56 +0200
committerTannin <devnull@localhost>2013-10-16 19:34:56 +0200
commit0b84cc3d45e15d2edec6a083b5139e6d7528b53d (patch)
tree2ec5067022aab265cd2af1cfeac38f34b88a3778 /src
parent1bf3cc585e28516f4ff6c9edf720fa9d290f47c2 (diff)
parenteae275cc843883d04892767c10b1dba2d7b11613 (diff)
Merge
Diffstat (limited to 'src')
-rw-r--r--src/downloadmanager.cpp17
-rw-r--r--src/downloadmanager.h2
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/mainwindow.h22
-rw-r--r--src/nexusinterface.cpp4
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;