1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#pragma once
#include <QCoreApplication>
#include <QProgressDialog>
#include <QStack>
#include <uibase/iplugininstaller.h>
#include "implementations/CodeProgress.h"
#include "QObject_unique_ptr.h"
// define this here as it's going to be used a lot by things using this class' message box wrappers.
template<class T>
T& unused_out(T&& t) { return t; }
class OMODFrameworkWrapper : public QObject
{
Q_OBJECT
public:
using EInstallResult = MOBase::IPluginInstaller::EInstallResult;
OMODFrameworkWrapper(MOBase::IOrganizer* organizer, QWidget* parentWidget = nullptr);
EInstallResult installInAnotherThread(MOBase::GuessedValue<QString>& modName, QString gameName, const QString& archiveName, const QString& version, int nexusID);
EInstallResult install(MOBase::GuessedValue<QString>& modName, QString gameName, const QString& archiveName, const QString& version, int nexusID);
void setParentWidget(QWidget* parentWidget);
void onInstallationEnd(EInstallResult status, MOBase::IModInterface* mod);
protected:
void initFrameworkSettings();
void refreshFrameworkSettings();
void pushTempPath(const QString& tempPath);
void popTempPath();
signals:
void pickModName(bool& successOut, MOBase::GuessedValue<QString>& modName);
void createMod(MOBase::IModInterface*& modInterfaceOut, MOBase::GuessedValue<QString>& modName);
void displayReadme(const QString& modName, const QString& readme);
void showWaitDialog(QString message);
void hideWaitDialog();
protected slots:
void pickModNameSlot(bool& successOut, MOBase::GuessedValue<QString>& modName);
void createModSlot(MOBase::IModInterface*& modInterfaceOut, MOBase::GuessedValue<QString>& modName);
void displayReadmeSlot(const QString& modName, const QString& readme);
void showWaitDialogSlot(QString message);
void hideWaitDialogSlot();
private:
__declspec(noinline) void constructorHelper();
MOBase::IOrganizer* mMoInfo;
QWidget* mParentWidget;
QStack<QString> mTempPathStack;
QObject_unique_ptr<QProgressDialog> mWaitDialog;
};
|