diff options
author | hjk <hjk@qt.io> | 2024-02-01 18:13:43 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2024-02-02 06:21:02 +0000 |
commit | c6be4fd2d47b9d59725d367bc3829228e00a4f8c (patch) | |
tree | 5e9f975954f8d018372de340a7e5f1865cd391d8 | |
parent | 0bd3fafb0a24fa7f3b2ff210c497ad1587e6f1a1 (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.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/outputparser_test.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/taskhub.cpp | 62 | ||||
-rw-r--r-- | src/plugins/projectexplorer/taskhub.h | 15 | ||||
-rw-r--r-- | src/plugins/projectexplorer/taskwindow.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/assetexporterplugin/assetexportdialog.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qtsupport/profilereader.cpp | 2 | ||||
-rw-r--r-- | src/tools/buildoutputparser/outputprocessor.cpp | 2 |
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()), |