aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2024-02-01 18:13:43 +0100
committerhjk <hjk@qt.io>2024-02-02 06:21:02 +0000
commitc6be4fd2d47b9d59725d367bc3829228e00a4f8c (patch)
tree5e9f975954f8d018372de340a7e5f1865cd391d8
parent0bd3fafb0a24fa7f3b2ff210c497ad1587e6f1a1 (diff)
ProjectExplorer: Delay-create TaskHub
Effectively only by a few lines. Change-Id: Ieb548d0a2f5ced033881106c76adc9a5e3e16663 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
-rw-r--r--src/plugins/cppeditor/cppprojectinfogenerator.cpp2
-rw-r--r--src/plugins/projectexplorer/outputparser_test.cpp4
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp2
-rw-r--r--src/plugins/projectexplorer/taskhub.cpp62
-rw-r--r--src/plugins/projectexplorer/taskhub.h15
-rw-r--r--src/plugins/projectexplorer/taskwindow.cpp2
-rw-r--r--src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp2
-rw-r--r--src/plugins/qtsupport/profilereader.cpp2
-rw-r--r--src/tools/buildoutputparser/outputprocessor.cpp2
9 files changed, 42 insertions, 51 deletions
diff --git a/src/plugins/cppeditor/cppprojectinfogenerator.cpp b/src/plugins/cppeditor/cppprojectinfogenerator.cpp
index 54713999cc..b92393f0e2 100644
--- a/src/plugins/cppeditor/cppprojectinfogenerator.cpp
+++ b/src/plugins/cppeditor/cppprojectinfogenerator.cpp
@@ -37,7 +37,7 @@ ProjectInfo::ConstPtr ProjectInfoGenerator::generate(const QPromise<ProjectInfo:
const auto projectInfo = ProjectInfo::create(m_projectUpdateInfo, projectParts);
static const auto showWarning = [](const QString &message) {
- QTimer::singleShot(0, TaskHub::instance(), [message] {
+ QTimer::singleShot(0, &taskHub(), [message] {
TaskHub::addTask(BuildSystemTask(Task::Warning, message));
});
};
diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp
index 0b466c74fd..6e5f1bc45f 100644
--- a/src/plugins/projectexplorer/outputparser_test.cpp
+++ b/src/plugins/projectexplorer/outputparser_test.cpp
@@ -46,14 +46,14 @@ static inline QByteArray msgFileComparisonFail(const Utils::FilePath &f1, const
// test functions:
OutputParserTester::OutputParserTester()
{
- connect(TaskHub::instance(), &TaskHub::taskAdded, this, [this](const Task &t) {
+ connect(&taskHub(), &TaskHub::taskAdded, this, [this](const Task &t) {
m_receivedTasks.append(t);
});
}
OutputParserTester::~OutputParserTester()
{
- TaskHub::instance()->disconnect(this);
+ taskHub().disconnect(this);
}
void OutputParserTester::testParsing(const QString &lines,
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 3b17379e1f..3d77ad8c89 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -660,8 +660,6 @@ public:
ToolChainOptionsPage m_toolChainOptionsPage;
- TaskHub m_taskHub;
-
ProjectWelcomePage m_welcomePage;
CustomWizardMetaFactory<CustomProjectWizard> m_customProjectWizard{IWizardFactory::ProjectWizard};
diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp
index e7ec30d477..09b7d49e7b 100644
--- a/src/plugins/projectexplorer/taskhub.cpp
+++ b/src/plugins/projectexplorer/taskhub.cpp
@@ -13,8 +13,6 @@
#include <utils/threadutils.h>
#include <utils/utilsicons.h>
-#include <QApplication>
-
using namespace Utils;
namespace ProjectExplorer {
@@ -23,8 +21,7 @@ namespace ProjectExplorer {
const char TASK_MARK_WARNING[] = "Task.Mark.Warning";
const char TASK_MARK_ERROR[] = "Task.Mark.Error";
-static TaskHub *m_instance = nullptr;
-QVector<Utils::Id> TaskHub::m_registeredCategories;
+static QVector<Id> s_registeredCategories;
static TextEditor::TextMarkCategory categoryForType(Task::TaskType type)
{
@@ -45,8 +42,8 @@ public:
TextMark(task.file, task.line, categoryForType(task.type)),
m_task(task)
{
- setColor(task.type == Task::Error ? Utils::Theme::ProjectExplorer_TaskError_TextMarkColor
- : Utils::Theme::ProjectExplorer_TaskWarn_TextMarkColor);
+ setColor(task.type == Task::Error ? Theme::ProjectExplorer_TaskError_TextMarkColor
+ : Theme::ProjectExplorer_TaskWarn_TextMarkColor);
setDefaultToolTip(task.type == Task::Error ? Tr::tr("Error")
: Tr::tr("Warning"));
setPriority(task.type == Task::Error ? TextEditor::TextMark::NormalPriority
@@ -97,30 +94,21 @@ void TaskMark::clicked()
TaskHub::TaskHub()
{
- m_instance = this;
qRegisterMetaType<ProjectExplorer::Task>("ProjectExplorer::Task");
qRegisterMetaType<Tasks >("Tasks");
}
-TaskHub::~TaskHub()
-{
- m_instance = nullptr;
-}
+TaskHub::~TaskHub() = default;
void TaskHub::addCategory(const TaskCategory &category)
{
QTC_CHECK(!category.displayName.isEmpty());
- QTC_ASSERT(!m_registeredCategories.contains(category.id), return);
- m_registeredCategories.push_back(category.id);
- emit m_instance->categoryAdded(category);
+ QTC_ASSERT(!s_registeredCategories.contains(category.id), return);
+ s_registeredCategories.push_back(category.id);
+ emit taskHub().categoryAdded(category);
}
-TaskHub *TaskHub::instance()
-{
- return m_instance;
-}
-
-void TaskHub::addTask(Task::TaskType type, const QString &description, Utils::Id category)
+void TaskHub::addTask(Task::TaskType type, const QString &description, Id category)
{
addTask(Task(type, description, {}, -1, category));
}
@@ -135,7 +123,7 @@ void TaskHub::addTask(Task task)
return;
}
- QTC_ASSERT(m_registeredCategories.contains(task.category), return);
+ QTC_ASSERT(s_registeredCategories.contains(task.category), return);
QTC_ASSERT(!task.description().isEmpty(), return);
QTC_ASSERT(!task.isNull(), return);
QTC_ASSERT(task.m_mark.isNull(), return);
@@ -146,49 +134,55 @@ void TaskHub::addTask(Task task)
if ((task.options & Task::AddTextMark) && task.line != -1 && task.type != Task::Unknown)
task.setMark(new TaskMark(task));
- emit m_instance->taskAdded(task);
+ emit taskHub().taskAdded(task);
}
-void TaskHub::clearTasks(Utils::Id categoryId)
+void TaskHub::clearTasks(Id categoryId)
{
- QTC_ASSERT(!categoryId.isValid() || m_registeredCategories.contains(categoryId), return);
- emit m_instance->tasksCleared(categoryId);
+ QTC_ASSERT(!categoryId.isValid() || s_registeredCategories.contains(categoryId), return);
+ emit taskHub().tasksCleared(categoryId);
}
void TaskHub::removeTask(const Task &task)
{
- emit m_instance->taskRemoved(task);
+ emit taskHub().taskRemoved(task);
}
void TaskHub::updateTaskFileName(const Task &task, const QString &fileName)
{
- emit m_instance->taskFileNameUpdated(task, fileName);
+ emit taskHub().taskFileNameUpdated(task, fileName);
}
void TaskHub::updateTaskLineNumber(const Task &task, int line)
{
- emit m_instance->taskLineNumberUpdated(task, line);
+ emit taskHub().taskLineNumberUpdated(task, line);
}
void TaskHub::taskMarkClicked(const Task &task)
{
- emit m_instance->showTask(task);
+ emit taskHub().showTask(task);
}
void TaskHub::showTaskInEditor(const Task &task)
{
- emit m_instance->openTask(task);
+ emit taskHub().openTask(task);
}
-void TaskHub::setCategoryVisibility(Utils::Id categoryId, bool visible)
+void TaskHub::setCategoryVisibility(Id categoryId, bool visible)
{
- QTC_ASSERT(m_registeredCategories.contains(categoryId), return);
- emit m_instance->categoryVisibilityChanged(categoryId, visible);
+ QTC_ASSERT(s_registeredCategories.contains(categoryId), return);
+ emit taskHub().categoryVisibilityChanged(categoryId, visible);
}
void TaskHub::requestPopup()
{
- emit m_instance->popupRequested(Core::IOutputPane::NoModeSwitch);
+ emit taskHub().popupRequested(Core::IOutputPane::NoModeSwitch);
+}
+
+TaskHub &taskHub()
+{
+ static TaskHub theTaskHub;
+ return theTaskHub;
}
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/taskhub.h b/src/plugins/projectexplorer/taskhub.h
index 0afc8d51f4..439ddcd79e 100644
--- a/src/plugins/projectexplorer/taskhub.h
+++ b/src/plugins/projectexplorer/taskhub.h
@@ -22,12 +22,11 @@ public:
int priority = 0;
};
-class PROJECTEXPLORER_EXPORT TaskHub : public QObject
+class PROJECTEXPLORER_EXPORT TaskHub final : public QObject
{
Q_OBJECT
-public:
- static TaskHub *instance();
+public:
// Convenience overload
static void addTask(Task::TaskType type, const QString &description,
Utils::Id category);
@@ -60,12 +59,12 @@ signals:
void openTask(const Task &task);
private:
- TaskHub();
- ~TaskHub() override;
+ friend TaskHub &taskHub();
- static QVector<Utils::Id> m_registeredCategories;
-
- friend class ProjectExplorerPluginPrivate;
+ TaskHub();
+ ~TaskHub() final;
};
+PROJECTEXPLORER_EXPORT TaskHub &taskHub();
+
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index fe5fb350c2..9567982502 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -233,7 +233,7 @@ TaskWindow::TaskWindow() : d(std::make_unique<TaskWindowPrivate>())
setupFilterUi("IssuesPane.Filter");
setFilteringEnabled(true);
- TaskHub *hub = TaskHub::instance();
+ TaskHub *hub = &taskHub();
connect(hub, &TaskHub::categoryAdded, this, &TaskWindow::addCategory);
connect(hub, &TaskHub::taskAdded, this, &TaskWindow::addTask);
connect(hub, &TaskHub::taskRemoved, this, &TaskWindow::removeTask);
diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp
index 3f60925d1e..a4509c38a6 100644
--- a/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp
+++ b/src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp
@@ -135,7 +135,7 @@ AssetExportDialog::AssetExportDialog(const FilePath &exportPath,
connect(&m_assetExporter, &AssetExporter::exportProgressChanged,
this, &AssetExportDialog::updateExportProgress);
- connect(TaskHub::instance(), &TaskHub::taskAdded, this, &AssetExportDialog::onTaskAdded);
+ connect(&taskHub(), &TaskHub::taskAdded, this, &AssetExportDialog::onTaskAdded);
using namespace Layouting;
diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp
index 6e8877566b..3232aaafaa 100644
--- a/src/plugins/qtsupport/profilereader.cpp
+++ b/src/plugins/qtsupport/profilereader.cpp
@@ -43,7 +43,7 @@ static void addTask(Task::TaskType type,
const Utils::FilePath &file = {},
int line = -1)
{
- QMetaObject::invokeMethod(TaskHub::instance(), [=]() {
+ QMetaObject::invokeMethod(&taskHub(), [=] {
TaskHub::addTask(BuildSystemTask(type, description, file, line));
});
}
diff --git a/src/tools/buildoutputparser/outputprocessor.cpp b/src/tools/buildoutputparser/outputprocessor.cpp
index ed02736897..f8aa03d612 100644
--- a/src/tools/buildoutputparser/outputprocessor.cpp
+++ b/src/tools/buildoutputparser/outputprocessor.cpp
@@ -50,7 +50,7 @@ void CompilerOutputProcessor::start()
break;
}
- connect(ProjectExplorer::TaskHub::instance(), &ProjectExplorer::TaskHub::taskAdded,
+ connect(&ProjectExplorer::taskHub(), &ProjectExplorer::TaskHub::taskAdded,
this, &CompilerOutputProcessor::handleTask);
while (!m_source.atEnd()) {
parser.appendMessage(QString::fromLocal8Bit(m_source.readLine().trimmed()),