Initial commit of mtgonline project
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
#include "oraclewizard.h"
|
||||
|
||||
#include "client/settings/cache_settings.h"
|
||||
#include "main.h"
|
||||
#include "oracleimporter.h"
|
||||
#include "pages.h"
|
||||
#include "pagetemplates.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QFileDialog>
|
||||
#include <QGridLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QNetworkReply>
|
||||
#include <QPushButton>
|
||||
#include <QScrollBar>
|
||||
#include <QtConcurrent>
|
||||
#include <QtGui>
|
||||
|
||||
OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent)
|
||||
{
|
||||
// define a dummy context that will be used where needed
|
||||
QString dummy = QT_TRANSLATE_NOOP("i18n", "English");
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
setWizardStyle(QWizard::ModernStyle);
|
||||
#endif
|
||||
|
||||
QString oracleSettingsFile = SettingsCache::instance().getSettingsPath() + "oracle.ini";
|
||||
settings = new QSettings(oracleSettingsFile, QSettings::IniFormat, this);
|
||||
|
||||
// We moved the oracle-specific settings from global.ini to a separate oracle.ini after 2.10
|
||||
if (!QFile::exists(oracleSettingsFile)) {
|
||||
migrateOracleSettings();
|
||||
}
|
||||
|
||||
connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &OracleWizard::updateLanguage);
|
||||
|
||||
importer = new OracleImporter(this);
|
||||
|
||||
nam = new QNetworkAccessManager(this);
|
||||
|
||||
QList<OracleWizardPage *> pages;
|
||||
|
||||
if (!isSpoilersOnly) {
|
||||
pages << new IntroPage << new LoadSetsPage << new SaveSetsPage << new LoadTokensPage << new OutroPage;
|
||||
} else {
|
||||
pages << new LoadSpoilersPage << new OutroPage;
|
||||
}
|
||||
|
||||
for (OracleWizardPage *page : pages) {
|
||||
addPage(page);
|
||||
|
||||
// Connect background auto-advance
|
||||
connect(page, &OracleWizardPage::readyToContinue, this, [this]() {
|
||||
if (backgroundMode) {
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
retranslateUi();
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrates the oracle-specific settings from global.ini to oracle.ini
|
||||
*/
|
||||
void OracleWizard::migrateOracleSettings()
|
||||
{
|
||||
QString filePath = SettingsCache::instance().getSettingsPath() + "global.ini";
|
||||
auto globalSettings = QSettings(filePath, QSettings::IniFormat, this);
|
||||
|
||||
auto tryMigrateValue = [this, &globalSettings](const QString &name) {
|
||||
QVariant variant = globalSettings.value(name);
|
||||
if (variant.isValid()) {
|
||||
settings->setValue(name, variant.toString());
|
||||
}
|
||||
};
|
||||
|
||||
tryMigrateValue("allsetsurl");
|
||||
tryMigrateValue("tokensurl");
|
||||
tryMigrateValue("spoilersurl");
|
||||
}
|
||||
|
||||
void OracleWizard::updateLanguage()
|
||||
{
|
||||
qApp->removeTranslator(translator);
|
||||
installNewTranslator();
|
||||
}
|
||||
|
||||
void OracleWizard::changeEvent(QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::LanguageChange) {
|
||||
retranslateUi();
|
||||
}
|
||||
|
||||
QDialog::changeEvent(event);
|
||||
}
|
||||
|
||||
void OracleWizard::retranslateUi()
|
||||
{
|
||||
setWindowTitle(tr("Oracle Importer"));
|
||||
for (int i = 0; i < pageIds().count(); i++) {
|
||||
dynamic_cast<OracleWizardPage *>(page(i))->retranslateUi();
|
||||
}
|
||||
}
|
||||
|
||||
void OracleWizard::accept()
|
||||
{
|
||||
QDialog::accept();
|
||||
}
|
||||
|
||||
void OracleWizard::enableButtons()
|
||||
{
|
||||
button(QWizard::NextButton)->setDisabled(false);
|
||||
button(QWizard::BackButton)->setDisabled(false);
|
||||
}
|
||||
|
||||
void OracleWizard::disableButtons()
|
||||
{
|
||||
button(QWizard::NextButton)->setDisabled(true);
|
||||
button(QWizard::BackButton)->setDisabled(true);
|
||||
}
|
||||
|
||||
bool OracleWizard::saveTokensToFile(const QString &fileName)
|
||||
{
|
||||
QFile file(fileName);
|
||||
if (!file.open(QIODevice::WriteOnly)) {
|
||||
qDebug() << "File open (w) failed for" << fileName;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (file.write(tokensData) == -1) {
|
||||
qDebug() << "File write (w) failed for" << fileName;
|
||||
return false;
|
||||
}
|
||||
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user