summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/buildmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/buildmanager.cpp')
-rw-r--r--src/plugins/projectexplorer/buildmanager.cpp35
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;