diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-04-10 12:54:59 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-04-26 09:50:14 +0200 |
commit | 5135dcbf0ac23a52ceb2b4d1463eb2fd20b09346 (patch) | |
tree | f4515e2fbbdcdb3855f7b0cdf0a65b5995fbc555 /src/sdk/installerbasecommons.cpp | |
parent | 56e326946159407a13eda62e894e11be5a824a4c (diff) |
Merge IntroductionPage and IntroductionPageImpl.
Change-Id: Ib8a08779979ccde42dab8a1bd83b27a24f318de0
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/sdk/installerbasecommons.cpp')
-rw-r--r-- | src/sdk/installerbasecommons.cpp | 324 |
1 files changed, 3 insertions, 321 deletions
diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index 8bf6ca449..f34024c17 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -40,331 +40,12 @@ **************************************************************************/ #include "installerbasecommons.h" -#include <component.h> -#include <messageboxhandler.h> -#include <packagemanagercore.h> #include <packagemanagerpagefactory.h> -#include <settings.h> - #include <productkeycheck.h> -#include <QtCore/QDir> -#include <QtCore/QFileInfo> -#include <QtCore/QTimer> - -#include <QLabel> -#include <QProgressBar> -#include <QRadioButton> -#include <QStackedWidget> -#include <QVBoxLayout> - using namespace QInstaller; -// -- IntroductionPageImpl - -IntroductionPageImpl::IntroductionPageImpl(QInstaller::PackageManagerCore *core) - : QInstaller::IntroductionPage(core) - , m_updatesFetched(false) - , m_allPackagesFetched(false) -{ - QWidget *widget = new QWidget(this); - QVBoxLayout *layout = new QVBoxLayout(widget); - - m_packageManager = new QRadioButton(tr("Package manager"), this); - m_packageManager->setObjectName(QLatin1String("PackageManagerRadioButton")); - layout->addWidget(m_packageManager); - m_packageManager->setChecked(core->isPackageManager()); - connect(m_packageManager, SIGNAL(toggled(bool)), this, SLOT(setPackageManager(bool))); - - m_updateComponents = new QRadioButton(tr("Update components"), this); - m_updateComponents->setObjectName(QLatin1String("UpdaterRadioButton")); - layout->addWidget(m_updateComponents); - m_updateComponents->setChecked(core->isUpdater()); - connect(m_updateComponents, SIGNAL(toggled(bool)), this, SLOT(setUpdater(bool))); - - m_removeAllComponents = new QRadioButton(tr("Remove all components"), this); - m_removeAllComponents->setObjectName(QLatin1String("UninstallerRadioButton")); - layout->addWidget(m_removeAllComponents); - m_removeAllComponents->setChecked(core->isUninstaller()); - connect(m_removeAllComponents, SIGNAL(toggled(bool)), this, SLOT(setUninstaller(bool))); - connect(m_removeAllComponents, SIGNAL(toggled(bool)), core, SLOT(setCompleteUninstallation(bool))); - - layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); - - m_label = new QLabel(this); - m_label->setWordWrap(true); - m_label->setText(tr("Retrieving information from remote installation sources...")); - layout->addWidget(m_label); - - m_progressBar = new QProgressBar(this); - m_progressBar->setRange(0, 0); - layout->addWidget(m_progressBar); - - layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); - - m_errorLabel = new QLabel(this); - m_errorLabel->setWordWrap(true); - layout->addWidget(m_errorLabel); - - widget->setLayout(layout); - setWidget(widget); - - core->setCompleteUninstallation(core->isUninstaller()); - - connect(core, SIGNAL(metaJobProgress(int)), this, SLOT(onProgressChanged(int))); - connect(core, SIGNAL(metaJobInfoMessage(QString)), this, SLOT(setMessage(QString))); - connect(core, SIGNAL(coreNetworkSettingsChanged()), this, SLOT(onCoreNetworkSettingsChanged())); - - m_updateComponents->setEnabled(ProductKeyCheck::instance()->hasValidKey()); -} - -int IntroductionPageImpl::nextId() const -{ - if (packageManagerCore()->isUninstaller()) - return PackageManagerCore::ReadyForInstallation; - - if (packageManagerCore()->isUpdater() || packageManagerCore()->isPackageManager()) - return PackageManagerCore::ComponentSelection; - - return QInstaller::IntroductionPage::nextId(); -} - -bool IntroductionPageImpl::validatePage() -{ - PackageManagerCore *core = packageManagerCore(); - if (core->isUninstaller()) - return true; - - setComplete(false); - if (!validRepositoriesAvailable()) { - setErrorMessage(QLatin1String("<font color=\"red\">") + tr("At least one valid and enabled " - "repository required for this action to succeed.") + QLatin1String("</font>")); - return isComplete(); - } - - gui()->setSettingsButtonEnabled(false); - const bool maintanence = core->isUpdater() || core->isPackageManager(); - if (maintanence) { - showAll(); - setMaintenanceToolsEnabled(false); - } else { - showMetaInfoUdate(); - } - - // fetch updater packages - if (core->isUpdater()) { - if (!m_updatesFetched) { - m_updatesFetched = core->fetchRemotePackagesTree(); - if (!m_updatesFetched) - setErrorMessage(core->error()); - } - - callControlScript(QLatin1String("UpdaterSelectedCallback")); - - if (m_updatesFetched) { - if (core->updaterComponents().count() <= 0) - setErrorMessage(QLatin1String("<b>") + tr("No updates available.") + QLatin1String("</b>")); - else - setComplete(true); - } - } - - // fetch common packages - if (core->isInstaller() || core->isPackageManager()) { - bool localPackagesTreeFetched = false; - if (!m_allPackagesFetched) { - // first try to fetch the server side packages tree - m_allPackagesFetched = core->fetchRemotePackagesTree(); - if (!m_allPackagesFetched) { - QString error = core->error(); - if (core->isPackageManager() && core->status() != PackageManagerCore::ForceUpdate) { - // if that fails and we're in maintenance mode, try to fetch local installed tree - localPackagesTreeFetched = core->fetchLocalPackagesTree(); - if (localPackagesTreeFetched) { - // if that succeeded, adjust error message - error = QLatin1String("<font color=\"red\">") + error + tr(" Only local package " - "management available.") + QLatin1String("</font>"); - } - } - setErrorMessage(error); - } - } - - callControlScript(QLatin1String("PackageManagerSelectedCallback")); - - if (m_allPackagesFetched | localPackagesTreeFetched) - setComplete(true); - } - - if (maintanence) { - showMaintenanceTools(); - setMaintenanceToolsEnabled(true); - } else { - hideAll(); - } - gui()->setSettingsButtonEnabled(true); - - return isComplete(); -} - -void IntroductionPageImpl::showAll() -{ - showWidgets(true); -} - -void IntroductionPageImpl::hideAll() -{ - showWidgets(false); -} - -void IntroductionPageImpl::showMetaInfoUdate() -{ - showWidgets(false); - m_label->setVisible(true); - m_progressBar->setVisible(true); -} - -void IntroductionPageImpl::showMaintenanceTools() -{ - showWidgets(true); - m_label->setVisible(false); - m_progressBar->setVisible(false); -} - -void IntroductionPageImpl::setMaintenanceToolsEnabled(bool enable) -{ - m_packageManager->setEnabled(enable); - m_updateComponents->setEnabled(enable && ProductKeyCheck::instance()->hasValidKey()); - m_removeAllComponents->setEnabled(enable); -} - -// -- public slots - -void IntroductionPageImpl::setMessage(const QString &msg) -{ - m_label->setText(msg); -} - -void IntroductionPageImpl::onProgressChanged(int progress) -{ - m_progressBar->setRange(0, 100); - m_progressBar->setValue(progress); -} - -void IntroductionPageImpl::setErrorMessage(const QString &error) -{ - QPalette palette; - const PackageManagerCore::Status s = packageManagerCore()->status(); - if (s == PackageManagerCore::Failure || s == PackageManagerCore::Failure) { - palette.setColor(QPalette::WindowText, Qt::red); - } else { - palette.setColor(QPalette::WindowText, palette.color(QPalette::WindowText)); - } - - m_errorLabel->setText(error); - m_errorLabel->setPalette(palette); -} - -void IntroductionPageImpl::callControlScript(const QString &callback) -{ - // Initialize the gui. Needs to be done after check repositories as only then the ui can handle - // hide of pages depending on the components. - gui()->init(); - gui()->callControlScriptMethod(callback); -} - -bool IntroductionPageImpl::validRepositoriesAvailable() const -{ - const PackageManagerCore *const core = packageManagerCore(); - bool valid = (core->isInstaller() && core->isOfflineOnly()) || core->isUninstaller(); - - if (!valid) { - foreach (const Repository &repo, core->settings().repositories()) { - if (repo.isEnabled() && repo.isValid()) { - valid = true; - break; - } - } - } - return valid; -} - -// -- private slots - -void IntroductionPageImpl::setUpdater(bool value) -{ - if (value) { - entering(); - gui()->showSettingsButton(true); - packageManagerCore()->setUpdater(); - emit packageManagerCoreTypeChanged(); - } -} - -void IntroductionPageImpl::setUninstaller(bool value) -{ - if (value) { - entering(); - gui()->showSettingsButton(false); - packageManagerCore()->setUninstaller(); - emit packageManagerCoreTypeChanged(); - } -} - -void IntroductionPageImpl::setPackageManager(bool value) -{ - if (value) { - entering(); - gui()->showSettingsButton(true); - packageManagerCore()->setPackageManager(); - emit packageManagerCoreTypeChanged(); - } -} - -void IntroductionPageImpl::onCoreNetworkSettingsChanged() -{ - m_updatesFetched = false; - m_allPackagesFetched = false; -} - -// -- private - -void IntroductionPageImpl::entering() -{ - setComplete(true); - showWidgets(false); - setMessage(QString()); - setErrorMessage(QString()); - setButtonText(QWizard::CancelButton, tr("Quit")); - - m_progressBar->setValue(0); - m_progressBar->setRange(0, 0); - PackageManagerCore *core = packageManagerCore(); - if (core->isUninstaller() ||core->isUpdater() || core->isPackageManager()) { - showMaintenanceTools(); - setMaintenanceToolsEnabled(true); - } - setSettingsButtonRequested((!core->isOfflineOnly()) && (!core->isUninstaller())); -} - -void IntroductionPageImpl::leaving() -{ - m_progressBar->setValue(0); - m_progressBar->setRange(0, 0); - setButtonText(QWizard::CancelButton, gui()->defaultButtonText(QWizard::CancelButton)); -} - -void IntroductionPageImpl::showWidgets(bool show) -{ - m_label->setVisible(show); - m_progressBar->setVisible(show); - m_packageManager->setVisible(show); - m_updateComponents->setVisible(show); - m_removeAllComponents->setVisible(show); -} - - // -- InstallerGui InstallerGui::InstallerGui(PackageManagerCore *core) @@ -377,7 +58,8 @@ InstallerGui::InstallerGui(PackageManagerCore *core) "constructed.").arg(id))); setPage(id, page); } - setPage(PackageManagerCore::Introduction, new IntroductionPageImpl(core)); + + setPage(PackageManagerCore::Introduction, new IntroductionPage(core)); setPage(PackageManagerCore::TargetDirectory, new TargetDirectoryPage(core)); setPage(PackageManagerCore::ComponentSelection, new ComponentSelectionPage(core)); setPage(PackageManagerCore::LicenseCheck, new LicenseAgreementPage(core)); @@ -407,7 +89,7 @@ MaintenanceGui::MaintenanceGui(PackageManagerCore *core) setPage(id, page); } - IntroductionPageImpl *intro = new IntroductionPageImpl(core); + IntroductionPage *intro = new IntroductionPage(core); connect(intro, SIGNAL(packageManagerCoreTypeChanged()), this, SLOT(updateRestartPage())); setPage(PackageManagerCore::Introduction, intro); |