X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcoreconfigwizard.cpp;h=333ad017628f2a731da609b6c7ce45799f12058b;hp=18133f07bd8760467409946713d4c8aa02810a82;hb=9188f1a4880dc7f4c26612a265c1d874f6df5a8c;hpb=cfbd4daee17dbb3c4052d938bf33edd08711d728 diff --git a/src/qtui/coreconfigwizard.cpp b/src/qtui/coreconfigwizard.cpp index 18133f07..333ad017 100644 --- a/src/qtui/coreconfigwizard.cpp +++ b/src/qtui/coreconfigwizard.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,21 +18,35 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include +#include "coreconfigwizard.h" + #include +#include +#include #include -#include #include -#include "coreconfigwizard.h" -#include "coreconnection.h" - #include "client.h" +#include "coreconnection.h" +#include "icon.h" +#include "util.h" namespace { +QGroupBox* createDescriptionBox(const QString& description) +{ + auto box = new QGroupBox; + auto layout = new QVBoxLayout(box); + auto label = new QLabel(description, box); + label->setWordWrap(true); + layout->addWidget(label); + layout->setAlignment(label, Qt::AlignTop); + box->setTitle(QCoreApplication::translate("CoreConfigWizard", "Description")); + return box; +} + template -void createFieldWidgets(QGroupBox *fieldBox, const std::vector &fieldInfos) +QGroupBox* createFieldBox(const QString& title, const std::vector& fieldInfos) { // Create a config UI based on the field types sent from the backend // We make some assumptions here (like integer range and password field names) that may not @@ -40,76 +54,78 @@ void createFieldWidgets(QGroupBox *fieldBox, const std::vector &field // provide specialized config widgets for those (which may be a good idea anyway, e.g. if we // think about client-side translations...) - QFormLayout *formLayout = new QFormLayout; - for (auto &&fieldInfo : fieldInfos) { - QWidget *widget {nullptr}; + auto* fieldBox = new QGroupBox; + fieldBox->setTitle(title); + auto* formLayout = new QFormLayout; + fieldBox->setLayout(formLayout); + + for (auto&& fieldInfo : fieldInfos) { + QWidget* widget{nullptr}; switch (std::get<2>(fieldInfo).type()) { - case QVariant::Int: - widget = new QSpinBox(fieldBox); - // Here we assume that int fields are always in 16 bit range, like ports - static_cast(widget)->setMinimum(0); - static_cast(widget)->setMaximum(65535); - static_cast(widget)->setValue(std::get<2>(fieldInfo).toInt()); - break; - case QVariant::String: - widget = new QLineEdit(std::get<2>(fieldInfo).toString(), fieldBox); - // Here we assume that fields named something with "password" are actual password inputs - if (std::get<0>(fieldInfo).toLower().contains("password")) - static_cast(widget)->setEchoMode(QLineEdit::Password); - break; - default: - qWarning() << "Unsupported type for backend property" << std::get<0>(fieldInfo); + case QVariant::Int: + widget = new QSpinBox(fieldBox); + // Here we assume that int fields are always in 16 bit range, like ports + static_cast(widget)->setMinimum(0); + static_cast(widget)->setMaximum(65535); + static_cast(widget)->setValue(std::get<2>(fieldInfo).toInt()); + break; + case QVariant::String: + widget = new QLineEdit(std::get<2>(fieldInfo).toString(), fieldBox); + // Here we assume that fields named something with "password" are actual password inputs + if (std::get<0>(fieldInfo).toLower().contains("password")) + static_cast(widget)->setEchoMode(QLineEdit::Password); + break; + default: + qWarning() << "Unsupported type for backend property" << std::get<0>(fieldInfo); } if (widget) { widget->setObjectName(std::get<0>(fieldInfo)); formLayout->addRow(std::get<1>(fieldInfo) + ":", widget); } } - fieldBox->setLayout(formLayout); + return fieldBox; } - template -QVariantMap propertiesFromFieldWidgets(QGroupBox *fieldBox, const std::vector &fieldInfos) +QVariantMap propertiesFromFieldWidgets(QGroupBox* fieldBox, const std::vector& fieldInfos) { QVariantMap properties; if (!fieldBox) return properties; - for (auto &&fieldInfo : fieldInfos) { + for (auto&& fieldInfo : fieldInfos) { QString key = std::get<0>(fieldInfo); QVariant value; switch (std::get<2>(fieldInfo).type()) { - case QVariant::Int: { - QSpinBox *spinBox = fieldBox->findChild(key); - if (spinBox) - value = spinBox->value(); - else - qWarning() << "Could not find child widget for field" << key; - break; - } - case QVariant::String: { - QLineEdit *lineEdit = fieldBox->findChild(key); - if (lineEdit) - value = lineEdit->text(); - else - qWarning() << "Could not find child widget for field" << key; - break; - } - default: - qWarning() << "Unsupported type for backend property" << key; + case QVariant::Int: { + auto* spinBox = fieldBox->findChild(key); + if (spinBox) + value = spinBox->value(); + else + qWarning() << "Could not find child widget for field" << key; + break; + } + case QVariant::String: { + auto* lineEdit = fieldBox->findChild(key); + if (lineEdit) + value = lineEdit->text(); + else + qWarning() << "Could not find child widget for field" << key; + break; + } + default: + qWarning() << "Unsupported type for backend property" << key; } properties[key] = std::move(value); } return properties; } -} // anon +} // namespace - -CoreConfigWizard::CoreConfigWizard(CoreConnection *connection, const QVariantList &backendInfos, const QVariantList &authInfos, QWidget *parent) - : QWizard(parent), - _connection{connection} +CoreConfigWizard::CoreConfigWizard(CoreConnection* connection, const QVariantList& backendInfos, const QVariantList& authInfos, QWidget* parent) + : QWizard(parent) + , _connection{connection} { setModal(true); setAttribute(Qt::WA_DeleteOnClose); @@ -119,17 +135,13 @@ CoreConfigWizard::CoreConfigWizard(CoreConnection *connection, const QVariantLis setPage(AuthenticationSelectionPage, new CoreConfigWizardPages::AuthenticationSelectionPage(authInfos, this)); setPage(StorageSelectionPage, new CoreConfigWizardPages::StorageSelectionPage(backendInfos, this)); syncPage = new CoreConfigWizardPages::SyncPage(this); - connect(syncPage, SIGNAL(setupCore(const QString &, const QVariantMap &, const QString &, const QVariantMap &)), - SLOT(prepareCoreSetup(const QString &, const QVariantMap &, const QString &, const QVariantMap &))); + connect(syncPage, &CoreConfigWizardPages::SyncPage::setupCore, this, &CoreConfigWizard::prepareCoreSetup); setPage(SyncPage, syncPage); syncRelayPage = new CoreConfigWizardPages::SyncRelayPage(this); - connect(syncRelayPage, SIGNAL(startOver()), this, SLOT(startOver())); + connect(syncRelayPage, &CoreConfigWizardPages::SyncRelayPage::startOver, this, &CoreConfigWizard::startOver); setPage(SyncRelayPage, syncRelayPage); - //setPage(Page_StorageDetails, new StorageDetailsPage()); - //setPage(Page_Conclusion, new ConclusionPage(storageProviders)); setStartId(IntroPage); - //setStartId(StorageSelectionPage); #ifndef Q_OS_MAC setWizardStyle(ModernStyle); @@ -141,102 +153,108 @@ CoreConfigWizard::CoreConfigWizard(CoreConnection *connection, const QVariantLis setOption(HaveFinishButtonOnEarlyPages, false); setOption(NoCancelButton, true); setOption(IndependentPages, true); - //setOption(ExtendedWatermarkPixmap, true); setModal(true); - setWindowTitle(tr("Core Configuration Wizard")); - setPixmap(QWizard::LogoPixmap, QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png")).pixmap(48)); + setWindowTitle(CoreConfigWizard::tr("Core Configuration Wizard")); + setPixmap(QWizard::LogoPixmap, icon::get("quassel").pixmap(48)); - connect(connection, SIGNAL(coreSetupSuccess()), SLOT(coreSetupSuccess())); - connect(connection, SIGNAL(coreSetupFailed(QString)), SLOT(coreSetupFailed(QString))); - //connect(connection, SIGNAL(loginSuccess()), SLOT(loginSuccess())); - connect(connection, SIGNAL(synchronized()), SLOT(syncFinished())); - connect(this, SIGNAL(rejected()), connection, SLOT(disconnectFromCore())); -} + connect(connection, &CoreConnection::coreSetupSuccess, this, &CoreConfigWizard::coreSetupSuccess); + connect(connection, &CoreConnection::coreSetupFailed, this, &CoreConfigWizard::coreSetupFailed); + connect(connection, &CoreConnection::synchronized, this, &CoreConfigWizard::syncFinished); + connect(this, &QDialog::rejected, connection, selectOverload<>(&CoreConnection::disconnectFromCore)); + // Resize all pages to the size hint of the largest one, so the wizard is large enough + QSize maxSize; + for (int id : pageIds()) { + auto p = page(id); + p->adjustSize(); + maxSize = maxSize.expandedTo(p->sizeHint()); + } + for (int id : pageIds()) { + page(id)->setFixedSize(maxSize); + } +} -void CoreConfigWizard::prepareCoreSetup(const QString &backend, const QVariantMap &properties, const QString &authenticator, const QVariantMap &authProperties) +void CoreConfigWizard::prepareCoreSetup(const QString& backend, + const QVariantMap& properties, + const QString& authenticator, + const QVariantMap& authProperties) { // Prevent the user from changing any settings he already specified... - foreach(int idx, visitedPages()) - page(idx)->setEnabled(false); + for (auto&& idx : visitedPages()) + page(idx)->setEnabled(false); // FIXME? We need to be able to set up older cores that don't have auth backend support. // So if the core doesn't support that feature, don't pass those parameters. - if (!(Client::coreFeatures() & Quassel::Authenticators)) { - coreConnection()->setupCore(Protocol::SetupData(field("adminUser.user").toString(), field("adminUser.password").toString(), backend, properties)); + if (!Client::isCoreFeatureEnabled(Quassel::Feature::Authenticators)) { + coreConnection()->setupCore( + Protocol::SetupData(field("adminUser.user").toString(), field("adminUser.password").toString(), backend, properties)); } else { - coreConnection()->setupCore(Protocol::SetupData(field("adminUser.user").toString(), field("adminUser.password").toString(), backend, properties, authenticator, authProperties)); + coreConnection()->setupCore(Protocol::SetupData(field("adminUser.user").toString(), + field("adminUser.password").toString(), + backend, + properties, + authenticator, + authProperties)); } } - void CoreConfigWizard::coreSetupSuccess() { syncPage->setStatus(tr("Your core has been successfully configured. Logging you in...")); syncPage->setError(false); syncRelayPage->setMode(CoreConfigWizardPages::SyncRelayPage::Success); - coreConnection()->loginToCore(field("adminUser.user").toString(), field("adminUser.password").toString(), field("adminUser.rememberPasswd").toBool()); + coreConnection()->loginToCore(field("adminUser.user").toString(), + field("adminUser.password").toString(), + field("adminUser.rememberPasswd").toBool()); } - -void CoreConfigWizard::coreSetupFailed(const QString &error) +void CoreConfigWizard::coreSetupFailed(const QString& error) { syncPage->setStatus(tr("Core configuration failed:
%1
Press Next to start over.").arg(error)); syncPage->setError(true); syncRelayPage->setMode(CoreConfigWizardPages::SyncRelayPage::Error); - //foreach(int idx, visitedPages()) page(idx)->setEnabled(true); - //setStartId(SyncPage); - //restart(); + // foreach(int idx, visitedPages()) page(idx)->setEnabled(true); + // setStartId(SyncPage); + // restart(); } - void CoreConfigWizard::startOver() { - foreach(int idx, visitedPages()) page(idx)->setEnabled(true); + foreach (int idx, visitedPages()) + page(idx)->setEnabled(true); setStartId(CoreConfigWizard::AdminUserPage); restart(); } - -void CoreConfigWizard::loginSuccess() -{ - syncPage->setStatus(tr("Your are now logged into your freshly configured Quassel Core!
" - "Please remember to configure your identities and networks now.")); - syncPage->setComplete(true); - syncPage->setFinalPage(true); -} - - void CoreConfigWizard::syncFinished() { accept(); } - namespace CoreConfigWizardPages { /*** Intro Page ***/ -IntroPage::IntroPage(QWidget *parent) : QWizardPage(parent) +IntroPage::IntroPage(QWidget* parent) + : QWizardPage(parent) { ui.setupUi(this); setTitle(tr("Introduction")); - //setSubTitle(tr("foobar")); - //setPixmap(QWizard::WatermarkPixmap, QPixmap(":icons/quassel-icon.png")); + // setSubTitle(tr("foobar")); + // setPixmap(QWizard::WatermarkPixmap, QPixmap(":icons/quassel-icon.png")); } - int IntroPage::nextId() const { return CoreConfigWizard::AdminUserPage; } - /*** Admin User Page ***/ -AdminUserPage::AdminUserPage(QWidget *parent) : QWizardPage(parent) +AdminUserPage::AdminUserPage(QWidget* parent) + : QWizardPage(parent) { ui.setupUi(this); setTitle(tr("Create Admin User")); @@ -248,11 +266,10 @@ AdminUserPage::AdminUserPage(QWidget *parent) : QWizardPage(parent) registerField("adminUser.rememberPasswd", ui.rememberPasswd); } - int AdminUserPage::nextId() const { // If the core doesn't support auth backends, skip that page! - if (!(Client::coreFeatures() & Quassel::Authenticators)) { + if (!Client::isCoreFeatureEnabled(Quassel::Feature::Authenticators)) { return CoreConfigWizard::StorageSelectionPage; } else { @@ -260,7 +277,6 @@ int AdminUserPage::nextId() const } } - bool AdminUserPage::isComplete() const { bool ok = !ui.user->text().isEmpty() && !ui.password->text().isEmpty() && ui.password->text() == ui.password2->text(); @@ -269,7 +285,7 @@ bool AdminUserPage::isComplete() const /*** Authentication Selection Page ***/ -AuthenticationSelectionPage::AuthenticationSelectionPage(const QVariantList &authInfos, QWidget *parent) +AuthenticationSelectionPage::AuthenticationSelectionPage(const QVariantList& authInfos, QWidget* parent) : QWizardPage(parent) { ui.setupUi(this); @@ -279,75 +295,70 @@ AuthenticationSelectionPage::AuthenticationSelectionPage(const QVariantList &aut registerField("authentication.backend", ui.backendList); - for (auto &&authInfo : authInfos) { + for (auto&& authInfo : authInfos) { auto props = authInfo.toMap(); // Extract field infos to avoid having to reparse the list std::vector fields; - const auto &list = props["SetupData"].toList(); + const auto& list = props["SetupData"].toList(); for (int i = 0; i + 2 < list.size(); i += 3) { - fields.emplace_back(std::make_tuple(list[i].toString(), list[i+1].toString(), list[i+2])); + fields.emplace_back(std::make_tuple(list[i].toString(), list[i + 1].toString(), list[i + 2])); } props.remove("SetupData"); - _authProperties.emplace_back(props); + _authProperties.emplace_back(std::move(props)); _authFields.emplace_back(std::move(fields)); - // Create entry in authenticator selector - ui.backendList->addItem(props["DisplayName"].toString(), props["BackendId"].toString()); + // Create widgets + ui.backendList->addItem(_authProperties.back()["DisplayName"].toString(), _authProperties.back()["BackendId"].toString()); + ui.descriptionStack->addWidget(createDescriptionBox(_authProperties.back()["Description"].toString())); + ui.authSettingsStack->addWidget(createFieldBox(tr("Authentication Settings"), _authFields.back())); } + // Do some trickery to make the page large enough + setSizePolicy({QSizePolicy::Fixed, QSizePolicy::Fixed}); + + QSizePolicy sp{QSizePolicy::MinimumExpanding, QSizePolicy::Fixed}; + sp.setRetainSizeWhenHidden(true); + ui.descriptionStack->setSizePolicy(sp); + ui.authSettingsStack->setSizePolicy(sp); + + ui.descriptionStack->adjustSize(); + ui.authSettingsStack->adjustSize(); + ui.backendList->setCurrentIndex(0); } - int AuthenticationSelectionPage::nextId() const { return CoreConfigWizard::StorageSelectionPage; } - QString AuthenticationSelectionPage::displayName() const { return ui.backendList->currentText(); } - QString AuthenticationSelectionPage::authenticator() const { -#if QT_VERSION >= 0x050200 return ui.backendList->currentData().toString(); -#else - return ui.backendList->itemData(ui.backendList->currentIndex()).toString(); -#endif } - QVariantMap AuthenticationSelectionPage::authProperties() const { - return propertiesFromFieldWidgets(_fieldBox, _authFields[ui.backendList->currentIndex()]); + return propertiesFromFieldWidgets(qobject_cast(ui.authSettingsStack->currentWidget()), + _authFields[ui.backendList->currentIndex()]); } - void AuthenticationSelectionPage::on_backendList_currentIndexChanged(int index) { - ui.description->setText(_authProperties[index]["Description"].toString()); - - if (_fieldBox) { - layout()->removeWidget(_fieldBox); - _fieldBox->deleteLater(); - _fieldBox = nullptr; - } - if (!_authFields[index].empty()) { - _fieldBox = new QGroupBox(this); - _fieldBox->setTitle(tr("Authentication Settings")); - createFieldWidgets(_fieldBox, _authFields[index]); - static_cast(layout())->insertWidget(layout()->indexOf(ui.descriptionBox) + 1, _fieldBox); - } + ui.descriptionStack->setCurrentIndex(index); + ui.authSettingsStack->setCurrentIndex(index); + ui.authSettingsStack->setVisible(!_authFields[index].empty()); } /*** Storage Selection Page ***/ -StorageSelectionPage::StorageSelectionPage(const QVariantList &backendInfos, QWidget *parent) +StorageSelectionPage::StorageSelectionPage(const QVariantList& backendInfos, QWidget* parent) : QWizardPage(parent) { ui.setupUi(this); @@ -358,17 +369,17 @@ StorageSelectionPage::StorageSelectionPage(const QVariantList &backendInfos, QWi registerField("storage.backend", ui.backendList); - int defaultIndex {0}; // Legacy cores send backend infos in arbitrary order + int defaultIndex{0}; // Legacy cores send backend infos in arbitrary order - for (auto &&backendInfo : backendInfos) { + for (auto&& backendInfo : backendInfos) { auto props = backendInfo.toMap(); // Extract field infos to avoid having to reparse the list std::vector fields; // Legacy cores (prior to 0.13) didn't send SetupData for storage backends; deal with this if (!props.contains("SetupData")) { - const auto &defaultValues = props["SetupDefaults"].toMap(); - for (auto &&key : props["SetupKeys"].toStringList()) { + const auto& defaultValues = props["SetupDefaults"].toMap(); + for (auto&& key : props["SetupKeys"].toStringList()) { fields.emplace_back(std::make_tuple(key, key, defaultValues.value(key, QString{}))); } if (props.value("IsDefault", false).toBool()) { @@ -376,9 +387,9 @@ StorageSelectionPage::StorageSelectionPage(const QVariantList &backendInfos, QWi } } else { - const auto &list = props["SetupData"].toList(); + const auto& list = props["SetupData"].toList(); for (int i = 0; i + 2 < list.size(); i += 3) { - fields.emplace_back(std::make_tuple(list[i].toString(), list[i+1].toString(), list[i+2])); + fields.emplace_back(std::make_tuple(list[i].toString(), list[i + 1].toString(), list[i + 2])); } props.remove("SetupData"); } @@ -387,73 +398,67 @@ StorageSelectionPage::StorageSelectionPage(const QVariantList &backendInfos, QWi // Legacy cores (prior to 0.13) don't send the BackendId property if (!props.contains("BackendId")) props["BackendId"] = props["DisplayName"]; - _backendProperties.emplace_back(props); + _backendProperties.emplace_back(std::move(props)); _backendFields.emplace_back(std::move(fields)); - // Create entry in backend selector - ui.backendList->addItem(props["DisplayName"].toString(), props["BackendId"].toString()); + // Create widgets + ui.backendList->addItem(_backendProperties.back()["DisplayName"].toString(), _backendProperties.back()["BackendId"].toString()); + ui.descriptionStack->addWidget(createDescriptionBox(_backendProperties.back()["Description"].toString())); + ui.storageSettingsStack->addWidget(createFieldBox(tr("Storage Settings"), _backendFields.back())); } + // Do some trickery to make the page large enough + setSizePolicy({QSizePolicy::Fixed, QSizePolicy::Fixed}); + + QSizePolicy sp{QSizePolicy::MinimumExpanding, QSizePolicy::Fixed}; + sp.setRetainSizeWhenHidden(true); + ui.descriptionStack->setSizePolicy(sp); + ui.storageSettingsStack->setSizePolicy(sp); + + ui.descriptionStack->adjustSize(); + ui.storageSettingsStack->adjustSize(); + ui.backendList->setCurrentIndex(defaultIndex); } - int StorageSelectionPage::nextId() const { return CoreConfigWizard::SyncPage; } - QString StorageSelectionPage::displayName() const { return ui.backendList->currentText(); } - QString StorageSelectionPage::backend() const { -#if QT_VERSION >= 0x050200 return ui.backendList->currentData().toString(); -#else - return ui.backendList->itemData(ui.backendList->currentIndex()).toString(); -#endif } - QVariantMap StorageSelectionPage::backendProperties() const { - return propertiesFromFieldWidgets(_fieldBox, _backendFields[ui.backendList->currentIndex()]); + return propertiesFromFieldWidgets(qobject_cast(ui.storageSettingsStack->currentWidget()), + _backendFields[ui.backendList->currentIndex()]); } - void StorageSelectionPage::on_backendList_currentIndexChanged(int index) { - ui.description->setText(_backendProperties[index]["Description"].toString()); - - if (_fieldBox) { - layout()->removeWidget(_fieldBox); - _fieldBox->deleteLater(); - _fieldBox = nullptr; - } - if (!_backendFields[index].empty()) { - _fieldBox = new QGroupBox(this); - _fieldBox->setTitle(tr("Storage Settings")); - createFieldWidgets(_fieldBox, _backendFields[index]); - static_cast(layout())->insertWidget(layout()->indexOf(ui.descriptionBox) + 1, _fieldBox); - } + ui.descriptionStack->setCurrentIndex(index); + ui.storageSettingsStack->setCurrentIndex(index); + ui.storageSettingsStack->setVisible(!_backendFields[index].empty()); } - /*** Sync Page ***/ -SyncPage::SyncPage(QWidget *parent) : QWizardPage(parent) +SyncPage::SyncPage(QWidget* parent) + : QWizardPage(parent) { ui.setupUi(this); setTitle(tr("Storing Your Settings")); setSubTitle(tr("Your settings are now being stored in the core, and you will be logged in automatically.")); } - void SyncPage::initializePage() { _complete = false; @@ -461,13 +466,13 @@ void SyncPage::initializePage() emit completeChanged(); // Fill in sync info about the storage layer. - StorageSelectionPage *storagePage = qobject_cast(wizard()->page(CoreConfigWizard::StorageSelectionPage)); + auto* storagePage = qobject_cast(wizard()->page(CoreConfigWizard::StorageSelectionPage)); QString backend = storagePage->backend(); QVariantMap backendProperties = storagePage->backendProperties(); ui.backend->setText(storagePage->displayName()); // Fill in sync info about the authentication layer. - AuthenticationSelectionPage *authPage = qobject_cast(wizard()->page(CoreConfigWizard::AuthenticationSelectionPage)); + auto* authPage = qobject_cast(wizard()->page(CoreConfigWizard::AuthenticationSelectionPage)); QString authenticator = authPage->authenticator(); QVariantMap authProperties = authPage->authProperties(); ui.authenticator->setText(authPage->displayName()); @@ -477,7 +482,6 @@ void SyncPage::initializePage() emit setupCore(backend, backendProperties, authenticator, authProperties); } - int SyncPage::nextId() const { if (!_hasError) @@ -485,19 +489,16 @@ int SyncPage::nextId() const return CoreConfigWizard::SyncRelayPage; } - bool SyncPage::isComplete() const { return _complete || _hasError; } - -void SyncPage::setStatus(const QString &status) +void SyncPage::setStatus(const QString& status) { ui.status->setText(status); } - void SyncPage::setError(bool e) { _hasError = e; @@ -505,22 +506,20 @@ void SyncPage::setError(bool e) emit completeChanged(); } - void SyncPage::setComplete(bool c) { _complete = c; completeChanged(); } - /*** Sync Relay Page ***/ -SyncRelayPage::SyncRelayPage(QWidget *parent) : QWizardPage(parent) +SyncRelayPage::SyncRelayPage(QWidget* parent) + : QWizardPage(parent) { mode = Success; } - void SyncRelayPage::setMode(Mode m) { mode = m; @@ -531,4 +530,4 @@ int SyncRelayPage::nextId() const emit startOver(); return 0; } -}; /* namespace CoreConfigWizardPages */ +} /* namespace CoreConfigWizardPages */