diff options
Diffstat (limited to 'src/plugins/projectexplorer/buildmanager.cpp')
-rw-r--r-- | src/plugins/projectexplorer/buildmanager.cpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 5da4000a65..b8f60b3166 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -48,12 +48,14 @@ #include <utils/qtcassert.h> #include <QDir> +#include <QPointer> #include <QTime> #include <QTimer> #include <QMetaType> #include <QList> #include <QHash> #include <QFutureWatcher> +#include <QElapsedTimer> #include <utils/QtConcurrentTools> @@ -75,7 +77,6 @@ struct BuildManagerPrivate { QList<BuildStep *> m_buildQueue; QList<bool> m_enabledState; QStringList m_stepNames; - ProjectExplorerPlugin *m_projectExplorerPlugin; bool m_running; QFutureWatcher<bool> m_watcher; QFutureInterface<bool> m_futureInterfaceForAysnc; @@ -97,7 +98,9 @@ struct BuildManagerPrivate { int m_maxProgress; QFutureInterface<void> *m_progressFutureInterface; QFutureWatcher<void> m_progressWatcher; - QWeakPointer<Core::FutureProgress> m_futureProgress; + QPointer<Core::FutureProgress> m_futureProgress; + + QElapsedTimer m_elapsed; }; BuildManagerPrivate::BuildManagerPrivate() : @@ -115,8 +118,6 @@ BuildManagerPrivate::BuildManagerPrivate() : BuildManager::BuildManager(ProjectExplorerPlugin *parent, QAction *cancelBuildAction) : QObject(parent), d(new BuildManagerPrivate) { - d->m_projectExplorerPlugin = parent; - connect(&d->m_watcher, SIGNAL(finished()), this, SLOT(nextBuildQueue())); @@ -237,16 +238,27 @@ void BuildManager::updateTaskCount() { Core::ProgressManager *progressManager = Core::ICore::progressManager(); const int errors = getErrorTaskCount(); - if (errors > 0) { + if (errors > 0) progressManager->setApplicationLabel(QString::number(errors)); - } else { + else progressManager->setApplicationLabel(QString()); - } emit tasksChanged(); } void BuildManager::finish() { + const int seconds = d->m_elapsed.elapsed() / 1000; + const int minutes = seconds / 60; + const int hours = minutes / 60; + QString maybeHours; + if (hours) { + maybeHours.setNum(hours); + maybeHours.append(QLatin1Char(':')); + } + addToOutputWindow(tr("Elapsed time: %1%2:%3.") .arg(maybeHours) + .arg(minutes % 60, 2, 10, QLatin1Char('0')) + .arg(seconds % 60, 2, 10, QLatin1Char('0')), BuildStep::MessageOutput); + QApplication::alert(Core::ICore::mainWindow(), 3000); } @@ -274,7 +286,7 @@ void BuildManager::clearBuildQueue() d->m_progressWatcher.setFuture(QFuture<void>()); delete d->m_progressFutureInterface; d->m_progressFutureInterface = 0; - d->m_futureProgress.clear(); + d->m_futureProgress = 0; d->m_maxProgress = 0; emit buildQueueFinished(false); @@ -311,6 +323,7 @@ void BuildManager::startBuildQueue(const QStringList &preambleMessage) return; } if (!d->m_running) { + d->m_elapsed.start(); // Progress Reporting Core::ProgressManager *progressManager = Core::ICore::progressManager(); d->m_progressFutureInterface = new QFutureInterface<void>; @@ -321,10 +334,10 @@ void BuildManager::startBuildQueue(const QStringList &preambleMessage) d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_COMPILE)); d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)); progressManager->setApplicationLabel(QString()); - d->m_futureProgress = QWeakPointer<Core::FutureProgress>(progressManager->addTask(d->m_progressFutureInterface->future(), + d->m_futureProgress = progressManager->addTask(d->m_progressFutureInterface->future(), QString(), QLatin1String(Constants::TASK_BUILD), - Core::ProgressManager::KeepOnFinish | Core::ProgressManager::ShowInApplicationIcon)); + Core::ProgressManager::KeepOnFinish | Core::ProgressManager::ShowInApplicationIcon); connect(d->m_futureProgress.data(), SIGNAL(clicked()), this, SLOT(showBuildResults())); d->m_futureProgress.data()->setWidget(new Internal::BuildProgress(d->m_taskWindow)); d->m_progress = 0; @@ -532,7 +545,7 @@ bool BuildManager::buildList(BuildStepList *bsl, const QString &stepListName) bool BuildManager::buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames, const QStringList &preambelMessage) { QList<BuildStep *> steps; - foreach(BuildStepList *list, bsls) + foreach (BuildStepList *list, bsls) steps.append(list->steps()); QStringList names; |