diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-09-10 11:54:44 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-09-11 11:11:45 +0200 |
commit | 520a9f300fb0c14a704bb2cad3fb555a47a1ddbc (patch) | |
tree | f158ec390b4dc722b40a7a86e43ec022a5d77a83 /src | |
parent | dbd94d02756d48f2412be1c02e59ba4f13b572c7 (diff) |
Implement progress indicator on taskbar on Windows.
Task-number: QTIFW-15
Change-Id: Ia11c185f25dff2f1614425ec5ff78e79b2fa2a77
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/installer.pro | 1 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 28 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.h | 5 | ||||
-rw-r--r-- | src/libs/installer/performinstallationform.cpp | 16 | ||||
-rw-r--r-- | src/libs/installer/performinstallationform.h | 5 |
5 files changed, 53 insertions, 2 deletions
diff --git a/src/libs/installer/installer.pro b/src/libs/installer/installer.pro index 0f8ec3bcb..97fa4904a 100644 --- a/src/libs/installer/installer.pro +++ b/src/libs/installer/installer.pro @@ -35,6 +35,7 @@ QT += \ concurrent \ widgets \ core-private +win32:QT += winextras HEADERS += packagemanagercore.h \ packagemanagercore_p.h \ diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index e389c2866..cf4367d6f 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -55,6 +55,8 @@ #include "kdsysinfo.h" +#include <QApplication> + #include <QtCore/QDir> #include <QtCore/QPair> #include <QtCore/QProcess> @@ -80,7 +82,9 @@ #include <QShowEvent> #ifdef Q_OS_WIN -# include <qt_windows.h> +# include <qt_windows.h> +# include <QWinTaskbarButton> +# include <QWinTaskbarProgress> #endif using namespace KDUpdater; @@ -924,6 +928,11 @@ IntroductionPage::IntroductionPage(PackageManagerCore *core) connect(core, SIGNAL(coreNetworkSettingsChanged()), this, SLOT(onCoreNetworkSettingsChanged())); m_updateComponents->setEnabled(ProductKeyCheck::instance()->hasValidKey()); + +#ifdef Q_OS_WIN + m_taskButton = new QWinTaskbarButton(this); + connect(core, SIGNAL(metaJobProgress(int)), m_taskButton->progress(), SLOT(setValue(int))); +#endif } int IntroductionPage::nextId() const @@ -959,6 +968,15 @@ bool IntroductionPage::validatePage() showMetaInfoUdate(); } +#ifdef Q_OS_WIN + if (!m_taskButton->window()) + m_taskButton->setWindow(QApplication::activeWindow()->windowHandle()); + + m_taskButton->progress()->reset(); + m_taskButton->progress()->resume(); + m_taskButton->progress()->setVisible(true); +#endif + // fetch updater packages if (core->isUpdater()) { if (!m_updatesFetched) { @@ -1012,6 +1030,9 @@ bool IntroductionPage::validatePage() } gui()->setSettingsButtonEnabled(true); +#ifdef Q_OS_WIN + m_taskButton->progress()->setVisible(!isComplete()); +#endif return isComplete(); } @@ -1071,6 +1092,11 @@ void IntroductionPage::setErrorMessage(const QString &error) m_errorLabel->setText(error); m_errorLabel->setPalette(palette); + +#ifdef Q_OS_WIN + m_taskButton->progress()->stop(); + m_taskButton->progress()->setValue(100); +#endif } void IntroductionPage::callControlScript(const QString &callback) diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index 7231a783c..11f440668 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -61,6 +61,7 @@ class QListWidgetItem; class QProgressBar; class QRadioButton; class QTextBrowser; +class QWinTaskbarButton; QT_END_NAMESPACE namespace QInstaller { @@ -259,6 +260,10 @@ private: QRadioButton *m_packageManager; QRadioButton *m_updateComponents; QRadioButton *m_removeAllComponents; + +#ifdef Q_OS_WIN + QWinTaskbarButton *m_taskButton; +#endif }; diff --git a/src/libs/installer/performinstallationform.cpp b/src/libs/installer/performinstallationform.cpp index 5480b397a..2405fc49b 100644 --- a/src/libs/installer/performinstallationform.cpp +++ b/src/libs/installer/performinstallationform.cpp @@ -44,7 +44,7 @@ #include "lazyplaintextedit.h" #include "progresscoordinator.h" - +#include <QApplication> #include <QLabel> #include <QProgressBar> #include <QPushButton> @@ -53,6 +53,11 @@ #include <QtCore/QTimer> +#ifdef Q_OS_WIN +# include <QWinTaskbarButton> +# include <QWinTaskbarProgress> +#endif + using namespace QInstaller; // -- PerformInstallationForm @@ -65,6 +70,10 @@ PerformInstallationForm::PerformInstallationForm(QObject *parent) , m_detailsBrowser(0) , m_updateTimer(0) { +#ifdef Q_OS_WIN + m_taskButton = new QWinTaskbarButton(this); + m_taskButton->progress()->setVisible(true); +#endif } void PerformInstallationForm::setupUi(QWidget *widget) @@ -136,6 +145,11 @@ void PerformInstallationForm::updateProgress() const int progressPercentage = progressCoordninator->progressInPercentage(); m_progressBar->setValue(progressPercentage); +#ifdef Q_OS_WIN + if (!m_taskButton->window()) + m_taskButton->setWindow(QApplication::activeWindow()->windowHandle()); + m_taskButton->progress()->setValue(progressPercentage); +#endif static QString lastLabelText; if (lastLabelText == progressCoordninator->labelText()) diff --git a/src/libs/installer/performinstallationform.h b/src/libs/installer/performinstallationform.h index 209afc42d..0f519be25 100644 --- a/src/libs/installer/performinstallationform.h +++ b/src/libs/installer/performinstallationform.h @@ -50,6 +50,7 @@ class QProgressBar; class QPushButton; class QTimer; class QWidget; +class QWinTaskbarButton; QT_END_NAMESPACE class LazyPlainTextEdit; @@ -89,6 +90,10 @@ private: QPushButton *m_detailsButton; LazyPlainTextEdit *m_detailsBrowser; QTimer *m_updateTimer; + +#ifdef Q_OS_WIN + QWinTaskbarButton *m_taskButton; +#endif }; } // namespace QInstaller |