ProjectExplorer: Inline buildprogress.* into buildmanager.cpp

Change-Id: Id72467cb322110a20945adeaedd37ba4a510ae06
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2024-02-01 18:24:00 +01:00
parent c6be4fd2d4
commit 4718dd5225
5 changed files with 97 additions and 133 deletions

View File

@@ -16,7 +16,6 @@ add_qtc_plugin(ProjectExplorer
buildconfiguration.cpp buildconfiguration.h
buildinfo.cpp buildinfo.h
buildmanager.cpp buildmanager.h
buildprogress.cpp buildprogress.h
buildsettingspropertiespage.cpp buildsettingspropertiespage.h
buildstep.cpp buildstep.h
buildsteplist.cpp buildsteplist.h

View File

@@ -3,7 +3,6 @@
#include "buildmanager.h"
#include "buildprogress.h"
#include "buildsteplist.h"
#include "buildsystem.h"
#include "compileoutputwindow.h"
@@ -36,17 +35,25 @@
#include <utils/algorithm.h>
#include <utils/outputformatter.h>
#include <utils/stringutils.h>
#include <utils/stylehelper.h>
#include <utils/utilsicons.h>
#include <QApplication>
#include <QBoxLayout>
#include <QElapsedTimer>
#include <QFont>
#include <QFutureWatcher>
#include <QHash>
#include <QLabel>
#include <QList>
#include <QMessageBox>
#include <QPixmap>
#include <QPointer>
#include <QSet>
#include <QTime>
#include <QTimer>
#include <QVBoxLayout>
#include <QVariant>
using namespace Core;
using namespace Tasking;
@@ -55,6 +62,95 @@ using namespace Utils;
namespace ProjectExplorer {
using namespace Internal;
class BuildProgress final : public QWidget
{
public:
explicit BuildProgress(TaskWindow *taskWindow, Qt::Orientation orientation = Qt::Vertical) :
m_contentWidget(new QWidget),
m_errorIcon(new QLabel),
m_warningIcon(new QLabel),
m_errorLabel(new QLabel),
m_warningLabel(new QLabel),
m_taskWindow(taskWindow)
{
auto contentLayout = new QHBoxLayout;
contentLayout->setContentsMargins(0, 0, 0, 0);
contentLayout->setSpacing(0);
setLayout(contentLayout);
contentLayout->addWidget(m_contentWidget);
QBoxLayout *layout;
if (orientation == Qt::Horizontal)
layout = new QHBoxLayout;
else
layout = new QVBoxLayout;
layout->setContentsMargins(8, 2, 0, 2);
layout->setSpacing(2);
m_contentWidget->setLayout(layout);
auto errorLayout = new QHBoxLayout;
errorLayout->setSpacing(2);
layout->addLayout(errorLayout);
errorLayout->addWidget(m_errorIcon);
errorLayout->addWidget(m_errorLabel);
auto warningLayout = new QHBoxLayout;
warningLayout->setSpacing(2);
layout->addLayout(warningLayout);
warningLayout->addWidget(m_warningIcon);
warningLayout->addWidget(m_warningLabel);
const QFont f = StyleHelper::uiFont(StyleHelper::UiElementCaptionStrong);
m_errorLabel->setFont(f);
m_warningLabel->setFont(f);
m_errorLabel->setPalette(StyleHelper::sidebarFontPalette(m_errorLabel->palette()));
m_warningLabel->setPalette(StyleHelper::sidebarFontPalette(m_warningLabel->palette()));
m_errorLabel->setProperty("_q_custom_style_disabled", QVariant(true));
m_warningLabel->setProperty("_q_custom_style_disabled", QVariant(true));
m_errorIcon->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_warningIcon->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_errorIcon->setPixmap(Icons::CRITICAL_TOOLBAR.pixmap());
m_warningIcon->setPixmap(Icons::WARNING_TOOLBAR.pixmap());
m_contentWidget->hide();
connect(m_taskWindow.data(), &TaskWindow::tasksChanged, this, &BuildProgress::updateState);
}
private:
void updateState()
{
if (!m_taskWindow)
return;
int errors = m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
+ m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_COMPILE)
+ m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_DEPLOYMENT);
bool haveErrors = (errors > 0);
m_errorIcon->setEnabled(haveErrors);
m_errorLabel->setEnabled(haveErrors);
m_errorLabel->setText(QString::number(errors));
int warnings = m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
+ m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_COMPILE)
+ m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_DEPLOYMENT);
bool haveWarnings = (warnings > 0);
m_warningIcon->setEnabled(haveWarnings);
m_warningLabel->setEnabled(haveWarnings);
m_warningLabel->setText(QString::number(warnings));
// Hide warnings and errors unless you need them
m_warningIcon->setVisible(haveWarnings);
m_warningLabel->setVisible(haveWarnings);
m_errorIcon->setVisible(haveErrors);
m_errorLabel->setVisible(haveErrors);
m_contentWidget->setVisible(haveWarnings || haveErrors);
}
QWidget *m_contentWidget;
QLabel *m_errorIcon;
QLabel *m_warningIcon;
QLabel *m_errorLabel;
QLabel *m_warningLabel;
QPointer<TaskWindow> m_taskWindow;
};
class ParserAwaiterTaskAdapter : public TaskAdapter<QSet<BuildSystem *>>
{
private:

View File

@@ -1,95 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "buildprogress.h"
#include "projectexplorerconstants.h"
#include <utils/utilsicons.h>
#include <utils/stylehelper.h>
#include <QFont>
#include <QLabel>
#include <QHBoxLayout>
#include <QPixmap>
#include <QVariant>
#include <QVBoxLayout>
using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal;
BuildProgress::BuildProgress(TaskWindow *taskWindow, Qt::Orientation orientation) :
m_contentWidget(new QWidget),
m_errorIcon(new QLabel),
m_warningIcon(new QLabel),
m_errorLabel(new QLabel),
m_warningLabel(new QLabel),
m_taskWindow(taskWindow)
{
auto contentLayout = new QHBoxLayout;
contentLayout->setContentsMargins(0, 0, 0, 0);
contentLayout->setSpacing(0);
setLayout(contentLayout);
contentLayout->addWidget(m_contentWidget);
QBoxLayout *layout;
if (orientation == Qt::Horizontal)
layout = new QHBoxLayout;
else
layout = new QVBoxLayout;
layout->setContentsMargins(8, 2, 0, 2);
layout->setSpacing(2);
m_contentWidget->setLayout(layout);
auto errorLayout = new QHBoxLayout;
errorLayout->setSpacing(2);
layout->addLayout(errorLayout);
errorLayout->addWidget(m_errorIcon);
errorLayout->addWidget(m_errorLabel);
auto warningLayout = new QHBoxLayout;
warningLayout->setSpacing(2);
layout->addLayout(warningLayout);
warningLayout->addWidget(m_warningIcon);
warningLayout->addWidget(m_warningLabel);
const QFont f = Utils::StyleHelper::uiFont(Utils::StyleHelper::UiElementCaptionStrong);
m_errorLabel->setFont(f);
m_warningLabel->setFont(f);
m_errorLabel->setPalette(Utils::StyleHelper::sidebarFontPalette(m_errorLabel->palette()));
m_warningLabel->setPalette(Utils::StyleHelper::sidebarFontPalette(m_warningLabel->palette()));
m_errorLabel->setProperty("_q_custom_style_disabled", QVariant(true));
m_warningLabel->setProperty("_q_custom_style_disabled", QVariant(true));
m_errorIcon->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_warningIcon->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_errorIcon->setPixmap(Utils::Icons::CRITICAL_TOOLBAR.pixmap());
m_warningIcon->setPixmap(Utils::Icons::WARNING_TOOLBAR.pixmap());
m_contentWidget->hide();
connect(m_taskWindow.data(), &TaskWindow::tasksChanged, this, &BuildProgress::updateState);
}
void BuildProgress::updateState()
{
if (!m_taskWindow)
return;
int errors = m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
+ m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_COMPILE)
+ m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_DEPLOYMENT);
bool haveErrors = (errors > 0);
m_errorIcon->setEnabled(haveErrors);
m_errorLabel->setEnabled(haveErrors);
m_errorLabel->setText(QString::number(errors));
int warnings = m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
+ m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_COMPILE)
+ m_taskWindow->warningTaskCount(Constants::TASK_CATEGORY_DEPLOYMENT);
bool haveWarnings = (warnings > 0);
m_warningIcon->setEnabled(haveWarnings);
m_warningLabel->setEnabled(haveWarnings);
m_warningLabel->setText(QString::number(warnings));
// Hide warnings and errors unless you need them
m_warningIcon->setVisible(haveWarnings);
m_warningLabel->setVisible(haveWarnings);
m_errorIcon->setVisible(haveErrors);
m_errorLabel->setVisible(haveErrors);
m_contentWidget->setVisible(haveWarnings || haveErrors);
}

View File

@@ -1,35 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "taskwindow.h"
#include <QPointer>
#include <QWidget>
QT_FORWARD_DECLARE_CLASS(QLabel)
namespace ProjectExplorer {
namespace Internal {
class BuildProgress : public QWidget
{
Q_OBJECT
public:
explicit BuildProgress(TaskWindow *taskWindow, Qt::Orientation orientation = Qt::Vertical);
private:
void updateState();
QWidget *m_contentWidget;
QLabel *m_errorIcon;
QLabel *m_warningIcon;
QLabel *m_errorLabel;
QLabel *m_warningLabel;
QPointer<TaskWindow> m_taskWindow;
};
} // namespace Internal
} // namespace ProjectExplorer

View File

@@ -28,7 +28,6 @@ QtcPlugin {
"buildconfiguration.cpp", "buildconfiguration.h",
"buildinfo.cpp", "buildinfo.h",
"buildmanager.cpp", "buildmanager.h",
"buildprogress.cpp", "buildprogress.h",
"buildpropertiessettings.cpp", "buildpropertiessettings.h",
"buildsettingspropertiespage.cpp", "buildsettingspropertiespage.h",
"buildstep.cpp", "buildstep.h",