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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#ifndef MAINWIZARD_HPP
#define MAINWIZARD_HPP
#include <QProcess>
#include <QWizard>
#ifndef Q_MOC_RUN
#include <components/files/configurationmanager.hpp>
#include <components/config/gamesettings.hpp>
#include <components/config/launchersettings.hpp>
#endif
namespace Process
{
class ProcessInvoker;
}
namespace Wizard
{
class MainWizard : public QWizard
{
Q_OBJECT
public:
struct Installation
{
bool hasMorrowind;
bool hasTribunal;
bool hasBloodmoon;
QString iniPath;
};
enum
{
Page_Intro,
Page_MethodSelection,
Page_LanguageSelection,
Page_ExistingInstallation,
Page_InstallationTarget,
Page_ComponentSelection,
Page_Installation,
Page_Import,
Page_Conclusion
};
MainWizard(Files::ConfigurationManager&& cfgMgr, QWidget* parent = nullptr);
~MainWizard() override;
bool findFiles(const QString& name, const QString& path);
void addInstallation(const QString& path);
void runSettingsImporter();
QMap<QString, Installation> mInstallations;
Files::ConfigurationManager mCfgMgr;
Process::ProcessInvoker* mImporterInvoker;
bool mError;
public slots:
void addLogText(const QString& text);
private:
void setupLog();
void setupGameSettings();
void setupLauncherSettings();
void setupInstallations();
void setupPages();
void writeSettings();
Config::GameSettings mGameSettings;
Config::LauncherSettings mLauncherSettings;
QString mLogError;
private slots:
void importerStarted();
void importerFinished(int exitCode, QProcess::ExitStatus exitStatus);
void accept() override;
void reject() override;
};
}
#endif // MAINWIZARD_HPP
|