summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagergui.h
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@nokia.com>2012-03-15 14:53:47 +0100
committerKarsten Heimrich <karsten.heimrich@nokia.com>2012-03-19 16:14:04 +0100
commitbe3b47d0d504a3409ce66bd77bb8c0acff87c4f5 (patch)
tree09dfb02d484a4f395991972b828da71400fb761a /src/libs/installer/packagemanagergui.h
parent9fd62353cf7f973d78cd2093328ac15b5c4980b6 (diff)
Reorganize the tree, have better ifw.pri. Shadow build support.
Change-Id: I01fb12537f863ed0744979973c7e4153889cc5cb Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com>
Diffstat (limited to 'src/libs/installer/packagemanagergui.h')
-rw-r--r--src/libs/installer/packagemanagergui.h418
1 files changed, 418 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h
new file mode 100644
index 000000000..b3f1bdf88
--- /dev/null
+++ b/src/libs/installer/packagemanagergui.h
@@ -0,0 +1,418 @@
+/**************************************************************************
+**
+** This file is part of Installer Framework
+**
+** Copyright (c) 2010-2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef PACKAGEMANAGERGUI_H
+#define PACKAGEMANAGERGUI_H
+
+#include "packagemanagercore.h"
+
+#include <QtCore/QEvent>
+#include <QtCore/QMetaType>
+
+#include <QtGui/QWizard>
+#include <QtGui/QWizardPage>
+
+// FIXME: move to private classes
+QT_BEGIN_NAMESPACE
+class QAbstractButton;
+class QCheckBox;
+class QLabel;
+class QLineEdit;
+class QListWidget;
+class QListWidgetItem;
+class QRadioButton;
+class QTextBrowser;
+class QScriptEngine;
+QT_END_NAMESPACE
+
+namespace QInstaller {
+
+class PackageManagerCore;
+class PackageManagerPage;
+class PerformInstallationForm;
+
+
+// -- PackageManagerGui
+
+class INSTALLER_EXPORT PackageManagerGui : public QWizard
+{
+ Q_OBJECT
+
+public:
+ explicit PackageManagerGui(PackageManagerCore *core, QWidget *parent = 0);
+ virtual ~PackageManagerGui();
+ virtual void init() = 0;
+
+ void loadControlScript(const QString& scriptPath);
+ void callControlScriptMethod(const QString& methodName);
+
+ QScriptEngine *controlScriptEngine() const;
+
+ Q_INVOKABLE PackageManagerPage* page(int pageId) const;
+ Q_INVOKABLE QWidget* pageWidgetByObjectName(const QString& name) const;
+ Q_INVOKABLE QWidget* currentPageWidget() const;
+ Q_INVOKABLE QString defaultButtonText(int wizardButton) const;
+ Q_INVOKABLE void clickButton(int wizardButton, int delayInMs = 0);
+
+ Q_INVOKABLE void showSettingsButton(bool show);
+ Q_INVOKABLE void setSettingsButtonEnabled(bool enable);
+
+ void updateButtonLayout();
+
+Q_SIGNALS:
+ void interrupted();
+ void languageChanged();
+ void finishButtonClicked();
+ void gotRestarted();
+ void settingsButtonClicked();
+
+public Q_SLOTS:
+ void cancelButtonClicked();
+ void reject();
+ void rejectWithoutPrompt();
+ void showFinishedPage();
+ void setModified(bool value);
+
+protected Q_SLOTS:
+ void wizardPageInsertionRequested(QWidget *widget, QInstaller::PackageManagerCore::WizardPage page);
+ void wizardPageRemovalRequested(QWidget *widget);
+ void wizardWidgetInsertionRequested(QWidget *widget, QInstaller::PackageManagerCore::WizardPage page);
+ void wizardWidgetRemovalRequested(QWidget *widget);
+ void wizardPageVisibilityChangeRequested(bool visible, int page);
+ void slotCurrentPageChanged(int id);
+ void delayedControlScriptExecution(int id);
+
+ void setAutomatedPageSwitchEnabled(bool request);
+
+private Q_SLOTS:
+ void onLanguageChanged();
+ void customButtonClicked(int which);
+
+protected:
+ bool event(QEvent *event);
+ void showEvent(QShowEvent *event);
+ PackageManagerCore *packageManagerCore() const { return m_core; }
+
+private:
+ class Private;
+ Private *const d;
+ PackageManagerCore *m_core;
+};
+
+
+// -- PackageManagerPage
+
+class INSTALLER_EXPORT PackageManagerPage : public QWizardPage
+{
+ Q_OBJECT
+
+public:
+ explicit PackageManagerPage(PackageManagerCore *core);
+ virtual ~PackageManagerPage() {}
+
+ virtual QPixmap logoPixmap() const;
+ virtual QString productName() const;
+ virtual QPixmap watermarkPixmap() const;
+
+ virtual bool isComplete() const;
+ void setComplete(bool complete);
+
+ virtual bool isInterruptible() const { return false; }
+ PackageManagerGui* gui() const { return qobject_cast<PackageManagerGui*>(wizard()); }
+
+protected:
+ PackageManagerCore *packageManagerCore() const;
+ QVariantHash elementsForPage(const QString &pageName) const;
+
+ QString titleForPage(const QString &pageName, const QString &value = QString()) const;
+ QString subTitleForPage(const QString &pageName, const QString &value = QString()) const;
+
+ // Inserts widget into the same layout like a sibling identified
+ // by its name. Default position is just behind the sibling.
+ virtual void insertWidget(QWidget *widget, const QString &siblingName, int offset = 1);
+ virtual QWidget *findWidget(const QString &objectName) const;
+
+ virtual void setVisible(bool visible); // reimp
+ virtual int nextId() const; // reimp
+
+ virtual void entering() {} // called on entering
+ virtual void leaving() {} // called on leaving
+
+ bool isConstructing() const { return m_fresh; }
+
+private:
+ QString titleFromHash(const QVariantHash &hash, const QString &value = QString()) const;
+
+private:
+ bool m_fresh;
+ bool m_complete;
+
+ PackageManagerCore *m_core;
+};
+
+
+// -- IntroductionPage
+
+class INSTALLER_EXPORT IntroductionPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit IntroductionPage(PackageManagerCore *core);
+
+ void setWidget(QWidget *widget);
+ void setText(const QString &text);
+
+private:
+ QLabel *m_msgLabel;
+ QWidget *m_widget;
+};
+
+
+// -- LicenseAgreementPage
+
+class INSTALLER_EXPORT LicenseAgreementPage : public PackageManagerPage
+{
+ Q_OBJECT
+ class ClickForwarder;
+
+public:
+ explicit LicenseAgreementPage(PackageManagerCore *core);
+
+ void entering();
+ bool isComplete() const;
+
+private Q_SLOTS:
+ void openLicenseUrl(const QUrl &url);
+ void currentItemChanged(QListWidgetItem *current);
+
+private:
+ void addLicenseItem(const QHash<QString, QPair<QString, QString> > &hash);
+
+private:
+ QTextBrowser *m_textBrowser;
+ QListWidget *m_licenseListWidget;
+
+ QRadioButton *m_acceptRadioButton;
+ QRadioButton *m_rejectRadioButton;
+};
+
+
+// -- ComponentSelectionPage
+
+class INSTALLER_EXPORT ComponentSelectionPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit ComponentSelectionPage(PackageManagerCore *core);
+ ~ComponentSelectionPage();
+
+ bool isComplete() const;
+
+ Q_INVOKABLE void selectAll();
+ Q_INVOKABLE void deselectAll();
+ Q_INVOKABLE void selectDefault();
+ Q_INVOKABLE void selectComponent(const QString &id);
+ Q_INVOKABLE void deselectComponent(const QString &id);
+
+protected:
+ void entering();
+ void showEvent(QShowEvent *event);
+
+private Q_SLOTS:
+ void setModified(bool modified);
+
+private:
+ class Private;
+ Private *d;
+};
+
+
+// -- TargetDirectoryPage
+
+class INSTALLER_EXPORT TargetDirectoryPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit TargetDirectoryPage(PackageManagerCore *core);
+ QString targetDir() const;
+ void setTargetDir(const QString &dirName);
+
+ void initializePage();
+ bool validatePage();
+
+protected:
+ void entering();
+ void leaving();
+
+private Q_SLOTS:
+ void targetDirSelected();
+ void dirRequested();
+
+private:
+ QLineEdit *m_lineEdit;
+};
+
+
+// -- StartMenuDirectoryPage
+
+class INSTALLER_EXPORT StartMenuDirectoryPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit StartMenuDirectoryPage(PackageManagerCore *core);
+
+ QString startMenuDir() const;
+ void setStartMenuDir(const QString &startMenuDir);
+
+protected:
+ void leaving();
+
+private Q_SLOTS:
+ void currentItemChanged(QListWidgetItem* current);
+
+private:
+ QString startMenuPath;
+ QLineEdit *m_lineEdit;
+ QListWidget *m_listWidget;
+};
+
+
+// -- ReadyForInstallationPage
+
+class INSTALLER_EXPORT ReadyForInstallationPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit ReadyForInstallationPage(PackageManagerCore *core);
+
+ bool isComplete() const;
+
+private slots:
+ void toggleDetails();
+
+protected:
+ void entering();
+ void leaving();
+
+private:
+ void refreshTaskDetailsBrowser();
+
+private:
+ QLabel *m_msgLabel;
+ QPushButton *m_taskDetailsButton;
+ QTextBrowser* m_taskDetailsBrowser;
+};
+
+
+// -- PerformInstallationPage
+
+class INSTALLER_EXPORT PerformInstallationPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit PerformInstallationPage(PackageManagerCore *core);
+ ~PerformInstallationPage();
+ bool isAutoSwitching() const;
+
+protected:
+ void entering();
+ void leaving();
+ bool isInterruptible() const { return true; }
+
+public Q_SLOTS:
+ void setTitleMessage(const QString& title);
+
+Q_SIGNALS:
+ void installationRequested();
+ void setAutomatedPageSwitchEnabled(bool request);
+
+private Q_SLOTS:
+ void installationStarted();
+ void installationFinished();
+ void toggleDetailsWereChanged();
+
+private:
+ PerformInstallationForm *m_performInstallationForm;
+};
+
+
+// -- FinishedPage
+
+class INSTALLER_EXPORT FinishedPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit FinishedPage(PackageManagerCore *core);
+
+public Q_SLOTS:
+ void handleFinishClicked();
+
+protected:
+ void entering();
+ void leaving();
+
+private:
+ QLabel *m_msgLabel;
+ QCheckBox *m_runItCheckBox;
+ QAbstractButton *m_commitButton;
+};
+
+
+// -- RestartPage
+
+class INSTALLER_EXPORT RestartPage : public PackageManagerPage
+{
+ Q_OBJECT
+
+public:
+ explicit RestartPage(PackageManagerCore *core);
+
+ virtual int nextId() const;
+
+protected:
+ void entering();
+ void leaving();
+
+Q_SIGNALS:
+ void restart();
+};
+
+} //namespace QInstaller
+
+#endif // PACKAGEMANAGERGUI_H