GH-1793 rearrange setup wizard logic to only check if they are needed once

This commit is contained in:
Petr Mrázek 2017-01-21 18:18:53 +01:00
parent ceb5fc6d75
commit 782384f185
10 changed files with 70 additions and 88 deletions

View File

@ -18,6 +18,9 @@
#include "themes/CustomTheme.h"
#include "setupwizard/SetupWizard.h"
#include "setupwizard/LanguageWizardPage.h"
#include "setupwizard/JavaWizardPage.h"
#include "setupwizard/AnalyticsWizardPage.h"
#include <iostream>
#include <QDir>
@ -359,16 +362,78 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
initAnalytics();
if(SetupWizard::isRequired())
if(createSetupWizard())
{
m_setupWizard = new SetupWizard(nullptr);
connect(m_setupWizard, &QDialog::finished, this, &MultiMC::setupWizardFinished);
m_setupWizard->show();
return;
}
performMainStartupAction();
}
bool MultiMC::createSetupWizard()
{
bool javaRequired = [&]()
{
QString currentHostName = QHostInfo::localHostName();
QString oldHostName = settings()->get("LastHostname").toString();
if (currentHostName != oldHostName)
{
settings()->set("LastHostname", currentHostName);
return true;
}
QString currentJavaPath = settings()->get("JavaPath").toString();
QString actualPath = FS::ResolveExecutable(currentJavaPath);
if (actualPath.isNull())
{
return true;
}
return false;
}();
bool analyticsRequired = [&]()
{
if(BuildConfig.ANALYTICS_ID.isEmpty())
{
return false;
}
if (!settings()->get("Analytics").toBool())
{
return false;
}
if (settings()->get("AnalyticsSeen").toInt() < analytics()->version())
{
return true;
}
return false;
}();
bool languageRequired = [&]()
{
if (settings()->get("Language").toString().isEmpty())
return true;
return false;
}();
bool wizardRequired = javaRequired || analyticsRequired || languageRequired;
if(wizardRequired)
{
m_setupWizard = new SetupWizard(nullptr);
if (languageRequired)
{
m_setupWizard->addPage(new LanguageWizardPage(m_setupWizard));
}
if (javaRequired)
{
m_setupWizard->addPage(new JavaWizardPage(m_setupWizard));
}
if(analyticsRequired)
{
m_setupWizard->addPage(new AnalyticsWizardPage(m_setupWizard));
}
connect(m_setupWizard, &QDialog::finished, this, &MultiMC::setupWizardFinished);
m_setupWizard->show();
return true;
}
return false;
}
void MultiMC::setupWizardFinished(int status)
{
qDebug() << "Wizard result =" << status;

View File

@ -186,6 +186,7 @@ private:
void initMCEdit();
void initAnalytics();
void shutdownAnalytics();
bool createSetupWizard();
void performMainStartupAction();
// sets the fatal error message and m_status to Failed.

View File

@ -41,25 +41,6 @@ bool AnalyticsWizardPage::validatePage()
return true;
}
bool AnalyticsWizardPage::isRequired()
{
if(BuildConfig.ANALYTICS_ID.isEmpty())
{
return false;
}
auto settings = MMC->settings();
auto analytics = MMC->analytics();
if (!settings->get("Analytics").toBool())
{
return false;
}
if (settings->get("AnalyticsSeen").toInt() < analytics->version())
{
return true;
}
return false;
}
void AnalyticsWizardPage::retranslate()
{
setTitle(tr("Analytics"));

View File

@ -14,7 +14,6 @@ public:
virtual ~AnalyticsWizardPage();
bool validatePage() override;
static bool isRequired();
protected:
void retranslate() override;

View File

@ -197,24 +197,6 @@ bool JavaWizardPage::validatePage()
return true;
}
bool JavaWizardPage::isRequired()
{
QString currentHostName = QHostInfo::localHostName();
QString oldHostName = MMC->settings()->get("LastHostname").toString();
if (currentHostName != oldHostName)
{
MMC->settings()->set("LastHostname", currentHostName);
return true;
}
QString currentJavaPath = MMC->settings()->get("JavaPath").toString();
QString actualPath = FS::ResolveExecutable(currentJavaPath);
if (actualPath.isNull())
{
return true;
}
return false;
}
bool JavaWizardPage::wantsRefreshButton()
{
return true;

View File

@ -31,7 +31,6 @@ public:
void refresh() override;
void initializePage() override;
bool validatePage() override;
static bool isRequired();
enum class JavaStatus
{

View File

@ -47,14 +47,6 @@ bool LanguageWizardPage::validatePage()
return true;
}
bool LanguageWizardPage::isRequired()
{
auto settings = MMC->settings();
if (settings->get("Language").toString().isEmpty())
return true;
return false;
}
void LanguageWizardPage::retranslate()
{
setTitle(tr("Language"));

View File

@ -19,8 +19,6 @@ public:
bool validatePage() override;
static bool isRequired();
protected:
void retranslate() override;

View File

@ -11,13 +11,6 @@
#include <QAbstractButton>
enum Page
{
Language,
Java,
Analytics,
};
SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent)
{
setObjectName(QStringLiteral("SetupWizard"));
@ -29,19 +22,6 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent)
retranslate();
connect(this, &QWizard::currentIdChanged, this, &SetupWizard::pageChanged);
if (LanguageWizardPage::isRequired())
{
setPage(Page::Language, new LanguageWizardPage(this));
}
if (JavaWizardPage::isRequired())
{
setPage(Page::Java, new JavaWizardPage(this));
}
if(AnalyticsWizardPage::isRequired())
{
setPage(Page::Analytics, new AnalyticsWizardPage(this));
}
}
void SetupWizard::retranslate()
@ -106,15 +86,3 @@ void SetupWizard::changeEvent(QEvent *event)
SetupWizard::~SetupWizard()
{
}
bool SetupWizard::isRequired()
{
if (LanguageWizardPage::isRequired())
return true;
if (JavaWizardPage::isRequired())
return true;
if (AnalyticsWizardPage::isRequired())
return true;
return false;
}

View File

@ -39,9 +39,6 @@ public: /* con/destructors */
private slots:
void pageChanged(int id);
public: /* methods */
static bool isRequired();
private: /* methods */
void retranslate();
};