summaryrefslogtreecommitdiff
path: root/src/nexusinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/nexusinterface.cpp')
-rw-r--r--src/nexusinterface.cpp37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 9eb1540a..1364d7e1 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -23,9 +23,11 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "nxmaccessmanager.h"
#include "selectiondialog.h"
#include "bbcode.h"
+#include "settings.h"
#include <utility.h>
#include "shared/util.h"
#include <log.h>
+#include <moassert.h>
#include <QApplication>
#include <QNetworkCookieJar>
@@ -50,7 +52,7 @@ void throttledWarning(const APIUserAccount& user)
NexusBridge::NexusBridge(PluginContainer *pluginContainer, const QString &subModule)
- : m_Interface(NexusInterface::instance(pluginContainer))
+ : m_Interface(&NexusInterface::instance())
, m_SubModule(subModule)
{
}
@@ -234,31 +236,42 @@ APILimits NexusInterface::parseLimits(
}
-NexusInterface::NexusInterface(PluginContainer *pluginContainer)
- : m_PluginContainer(pluginContainer)
+static NexusInterface* g_instance = nullptr;
+
+NexusInterface::NexusInterface(Settings* s)
+ : m_PluginContainer(nullptr)
{
+ MO_ASSERT(!g_instance);
+ g_instance = this;
+
m_User.limits(defaultAPILimits());
m_MOVersion = createVersionInfo();
- m_AccessManager = new NXMAccessManager(this, m_MOVersion.displayString(3));
+ m_AccessManager = new NXMAccessManager(
+ this, s, m_MOVersion.displayString(3));
+
m_DiskCache = new QNetworkDiskCache(this);
+
connect(m_AccessManager, SIGNAL(requestNXMDownload(QString)), this, SLOT(downloadRequestedNXM(QString)));
}
-NXMAccessManager *NexusInterface::getAccessManager()
+NexusInterface::~NexusInterface()
{
- return m_AccessManager;
+ cleanup();
+
+ MO_ASSERT(g_instance == this);
+ g_instance = nullptr;
}
-NexusInterface::~NexusInterface()
+NXMAccessManager *NexusInterface::getAccessManager()
{
- cleanup();
+ return m_AccessManager;
}
-NexusInterface *NexusInterface::instance(PluginContainer *pluginContainer)
+NexusInterface& NexusInterface::instance()
{
- static NexusInterface s_Instance(pluginContainer);
- return &s_Instance;
+ MO_ASSERT(g_instance);
+ return *g_instance;
}
void NexusInterface::setCacheDirectory(const QString &directory)
@@ -284,7 +297,7 @@ void NexusInterface::interpretNexusFileName(const QString &fileName, QString &mo
static const QRegularExpression complex(R"(^([a-zA-Z0-9_'"\-.() ]*?)([-_ ][VvRr]+[0-9]+(?:(?:[\.][0-9]+){0,2}|(?:[_][0-9]+){0,2}|(?:[-.][0-9]+){0,2})?[ab]?)??-([1-9][0-9]+)?-.*?\.(zip|rar|7z))");
//complex regex explanation:
//group 1: modname.
- //group 2: optional version,
+ //group 2: optional version,
// assumed to start with v (empty most of the time).
//group 3: NexusId,
// assumed wrapped in "-", will miss single digit IDs for better accuracy.