summaryrefslogtreecommitdiffstats
path: root/src/sdk/installerbasecommons.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-04-10 12:54:59 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-04-26 09:50:14 +0200
commit5135dcbf0ac23a52ceb2b4d1463eb2fd20b09346 (patch)
treef4515e2fbbdcdb3855f7b0cdf0a65b5995fbc555 /src/sdk/installerbasecommons.cpp
parent56e326946159407a13eda62e894e11be5a824a4c (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.cpp324
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);