From cd1b6a669bf73fb69987f403c0f942465bf03407 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 11 Jul 2023 12:08:22 +0200 Subject: [PATCH] Tasks: Create a container class for category data Reduce the number of arguments that need to be passed around. Change-Id: I9fbfdcdf7b20f8f26e35f435bf8d65ba483e4114 Reviewed-by: Reviewed-by: Christian Kandeler --- .../clangcodemodel/clangcodemodelplugin.cpp | 2 +- src/plugins/clangtools/clangtoolsplugin.cpp | 2 +- src/plugins/debugger/debuggerplugin.cpp | 6 ++--- src/plugins/nim/nimplugin.cpp | 2 +- src/plugins/projectexplorer/buildmanager.cpp | 24 +++++++++---------- .../projectexplorer/projectexplorer.cpp | 6 ++--- src/plugins/projectexplorer/taskhub.cpp | 11 ++++----- src/plugins/projectexplorer/taskhub.h | 15 ++++++++---- src/plugins/projectexplorer/taskmodel.cpp | 10 ++++---- src/plugins/projectexplorer/taskmodel.h | 4 +++- src/plugins/projectexplorer/taskwindow.cpp | 8 +++---- src/plugins/projectexplorer/taskwindow.h | 3 ++- src/plugins/python/pythonplugin.cpp | 2 +- .../assetexporterplugin.cpp | 4 ++-- src/plugins/qmljseditor/qmljseditorplugin.cpp | 4 ++-- 15 files changed, 56 insertions(+), 47 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp index 9b5ec425231..d9830ec8aa3 100644 --- a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp +++ b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp @@ -77,7 +77,7 @@ ClangCodeModelPlugin::~ClangCodeModelPlugin() void ClangCodeModelPlugin::initialize() { - TaskHub::addCategory(Constants::TASK_CATEGORY_DIAGNOSTICS, Tr::tr("Clang Code Model")); + TaskHub::addCategory({Constants::TASK_CATEGORY_DIAGNOSTICS, Tr::tr("Clang Code Model")}); CppEditor::CppModelManager::instance()->activateClangCodeModel( std::make_unique()); createCompilationDBAction(); diff --git a/src/plugins/clangtools/clangtoolsplugin.cpp b/src/plugins/clangtools/clangtoolsplugin.cpp index 35086be7aaf..57b11d61b51 100644 --- a/src/plugins/clangtools/clangtoolsplugin.cpp +++ b/src/plugins/clangtools/clangtoolsplugin.cpp @@ -89,7 +89,7 @@ ClangToolsPlugin::~ClangToolsPlugin() void ClangToolsPlugin::initialize() { - TaskHub::addCategory(taskCategory(), Tr::tr("Clang Tools")); + TaskHub::addCategory({taskCategory(), Tr::tr("Clang Tools")}); // Import tidy/clazy diagnostic configs from CppEditor now // instead of at opening time of the settings page diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 2390096a3fb..b76eb6c932a 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -723,7 +723,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments) // Task integration. //: Category under which Analyzer tasks are listed in Issues view - TaskHub::addCategory(ANALYZERTASK_ID, Tr::tr("Debugger")); + TaskHub::addCategory({ANALYZERTASK_ID, Tr::tr("Debugger")}); const Context debuggerNotRunning(C_DEBUGGER_NOTRUNNING); ICore::addAdditionalContext(debuggerNotRunning); @@ -765,8 +765,8 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments) act->setEnabled(false); Command *cmd = ActionManager::registerAction(act, Constants::OPEN_MEMORY_EDITOR); - TaskHub::addCategory(TASK_CATEGORY_DEBUGGER_DEBUGINFO, Tr::tr("Debug Information")); - TaskHub::addCategory(TASK_CATEGORY_DEBUGGER_RUNTIME, Tr::tr("Debugger Runtime")); + TaskHub::addCategory({TASK_CATEGORY_DEBUGGER_DEBUGINFO, Tr::tr("Debug Information")}); + TaskHub::addCategory({TASK_CATEGORY_DEBUGGER_RUNTIME, Tr::tr("Debugger Runtime")}); m_debuggerSettings.readSettings(); diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp index 53900a35c4a..47138b906a1 100644 --- a/src/plugins/nim/nimplugin.cpp +++ b/src/plugins/nim/nimplugin.cpp @@ -97,7 +97,7 @@ void NimPlugin::extensionsInitialized() FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIM_SCRIPT_MIMETYPE); FileIconProvider::registerIconOverlayForMimeType(icon, Constants::C_NIMBLE_MIMETYPE); } - TaskHub::addCategory(Constants::C_NIMPARSE_ID, "Nim"); + TaskHub::addCategory({Constants::C_NIMPARSE_ID, "Nim"}); } } // namespace Nim diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 5d4e7f5837a..5a9575743fa 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -291,18 +291,18 @@ BuildManager *BuildManager::instance() void BuildManager::extensionsInitialized() { - TaskHub::addCategory(Constants::TASK_CATEGORY_COMPILE, - Tr::tr("Compile", "Category for compiler issues listed under 'Issues'"), - true, 100); - TaskHub::addCategory(Constants::TASK_CATEGORY_BUILDSYSTEM, - Tr::tr("Build System", "Category for build system issues listed under 'Issues'"), - true, 100); - TaskHub::addCategory(Constants::TASK_CATEGORY_DEPLOYMENT, - Tr::tr("Deployment", "Category for deployment issues listed under 'Issues'"), - true, 100); - TaskHub::addCategory(Constants::TASK_CATEGORY_AUTOTEST, - Tr::tr("Autotests", "Category for autotest issues listed under 'Issues'"), - true, 100); + TaskHub::addCategory({Constants::TASK_CATEGORY_COMPILE, + Tr::tr("Compile", "Category for compiler issues listed under 'Issues'"), + true, 100}); + TaskHub::addCategory({Constants::TASK_CATEGORY_BUILDSYSTEM, + Tr::tr("Build System", "Category for build system issues listed under 'Issues'"), + true, 100}); + TaskHub::addCategory({Constants::TASK_CATEGORY_DEPLOYMENT, + Tr::tr("Deployment", "Category for deployment issues listed under 'Issues'"), + true, 100}); + TaskHub::addCategory({Constants::TASK_CATEGORY_AUTOTEST, + Tr::tr("Autotests", "Category for autotest issues listed under 'Issues'"), + true, 100}); } void BuildManager::buildProjectWithoutDependencies(Project *project) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index a143f91b704..bb473b900ea 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2074,9 +2074,9 @@ void ProjectExplorerPlugin::extensionsInitialized() dd->m_projectFilterString = filterStrings.join(filterSeparator); BuildManager::extensionsInitialized(); - TaskHub::addCategory(Constants::TASK_CATEGORY_SANITIZER, - Tr::tr("Sanitizer", "Category for sanitizer issues listed under 'Issues'")); - TaskHub::addCategory(Constants::TASK_CATEGORY_TASKLIST_ID, Tr::tr("My Tasks")); + TaskHub::addCategory({Constants::TASK_CATEGORY_SANITIZER, + Tr::tr("Sanitizer", "Category for sanitizer issues listed under 'Issues'")}); + TaskHub::addCategory({Constants::TASK_CATEGORY_TASKLIST_ID, Tr::tr("My Tasks")}); SshSettings::loadSettings(ICore::settings()); const auto searchPathRetriever = [] { diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 58e797de803..e7ec30d4779 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -107,13 +107,12 @@ TaskHub::~TaskHub() m_instance = nullptr; } -void TaskHub::addCategory(Utils::Id categoryId, const QString &displayName, bool visible, - int priority) +void TaskHub::addCategory(const TaskCategory &category) { - QTC_CHECK(!displayName.isEmpty()); - QTC_ASSERT(!m_registeredCategories.contains(categoryId), return); - m_registeredCategories.push_back(categoryId); - emit m_instance->categoryAdded(categoryId, displayName, visible, priority); + QTC_CHECK(!category.displayName.isEmpty()); + QTC_ASSERT(!m_registeredCategories.contains(category.id), return); + m_registeredCategories.push_back(category.id); + emit m_instance->categoryAdded(category); } TaskHub *TaskHub::instance() diff --git a/src/plugins/projectexplorer/taskhub.h b/src/plugins/projectexplorer/taskhub.h index 60cb09b4bad..1822129bc26 100644 --- a/src/plugins/projectexplorer/taskhub.h +++ b/src/plugins/projectexplorer/taskhub.h @@ -12,6 +12,15 @@ namespace ProjectExplorer { class ProjectExplorerPlugin; +class PROJECTEXPLORER_EXPORT TaskCategory +{ +public: + Utils::Id id; + QString displayName; + bool visible = true; + int priority = 0; +}; + class PROJECTEXPLORER_EXPORT TaskHub : public QObject { Q_OBJECT @@ -28,8 +37,7 @@ public slots: static void removeTask(const ProjectExplorer::Task &task); public: - static void addCategory(Utils::Id categoryId, const QString &displayName, bool visible = true, - int priority = 0); + static void addCategory(const TaskCategory &category); static void updateTaskFileName(const Task &task, const QString &fileName); static void updateTaskLineNumber(const Task &task, int line); static void taskMarkClicked(const Task &task); @@ -39,8 +47,7 @@ public: static void requestPopup(); signals: - void categoryAdded(Utils::Id categoryId, const QString &displayName, bool visible, - int priority); + void categoryAdded(const TaskCategory &category); void taskAdded(const ProjectExplorer::Task &task); void taskRemoved(const ProjectExplorer::Task &task); void tasksCleared(Utils::Id categoryId); diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp index 11591e707d7..83620030543 100644 --- a/src/plugins/projectexplorer/taskmodel.cpp +++ b/src/plugins/projectexplorer/taskmodel.cpp @@ -60,13 +60,13 @@ bool TaskModel::hasFile(const QModelIndex &index) const return !m_tasks.at(row).file.isEmpty(); } -void TaskModel::addCategory(Utils::Id categoryId, const QString &categoryName, int priority) +void TaskModel::addCategory(const TaskCategory &category) { - QTC_ASSERT(categoryId.isValid(), return); + QTC_ASSERT(category.id.isValid(), return); CategoryData data; - data.displayName = categoryName; - data.priority = priority; - m_categories.insert(categoryId, data); + data.displayName = category.displayName; + data.priority = category.priority; + m_categories.insert(category.id, data); } Tasks TaskModel::tasks(Utils::Id categoryId) const diff --git a/src/plugins/projectexplorer/taskmodel.h b/src/plugins/projectexplorer/taskmodel.h index 5fa37c02d1a..d1996ac1751 100644 --- a/src/plugins/projectexplorer/taskmodel.h +++ b/src/plugins/projectexplorer/taskmodel.h @@ -11,6 +11,8 @@ #include "task.h" namespace ProjectExplorer { +class TaskCategory; + namespace Internal { class TaskModel : public QAbstractItemModel @@ -31,7 +33,7 @@ public: QList categoryIds() const; QString categoryDisplayName(Utils::Id categoryId) const; - void addCategory(Utils::Id categoryId, const QString &categoryName, int priority); + void addCategory(const TaskCategory &category); Tasks tasks(Utils::Id categoryId = Utils::Id()) const; void addTask(const Task &t); diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 703a277f159..fc866a6588f 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -365,12 +365,12 @@ void TaskWindow::visibilityChanged(bool visible) delayedInitialization(); } -void TaskWindow::addCategory(Id categoryId, const QString &displayName, bool visible, int priority) +void TaskWindow::addCategory(const TaskCategory &category) { - d->m_model->addCategory(categoryId, displayName, priority); - if (!visible) { + d->m_model->addCategory(category); + if (!category.visible) { QList filters = d->m_filter->filteredCategories(); - filters += categoryId; + filters += category.id; d->m_filter->setFilteredCategories(filters); } } diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h index c2e7a78a242..3f0c6586677 100644 --- a/src/plugins/projectexplorer/taskwindow.h +++ b/src/plugins/projectexplorer/taskwindow.h @@ -14,6 +14,7 @@ class QPoint; QT_END_NAMESPACE namespace ProjectExplorer { +class TaskCategory; class TaskHub; class Task; @@ -60,7 +61,7 @@ signals: private: void updateFilter() override; - void addCategory(Utils::Id categoryId, const QString &displayName, bool visible, int priority); + void addCategory(const TaskCategory &category); void addTask(const ProjectExplorer::Task &task); void removeTask(const ProjectExplorer::Task &task); void updatedTaskFileName(const Task &task, const QString &fileName); diff --git a/src/plugins/python/pythonplugin.cpp b/src/plugins/python/pythonplugin.cpp index 3cbbe817f9d..55377c57222 100644 --- a/src/plugins/python/pythonplugin.cpp +++ b/src/plugins/python/pythonplugin.cpp @@ -70,7 +70,7 @@ void PythonPlugin::extensionsInitialized() ::Constants::FILEOVERLAY_PY); FileIconProvider::registerIconOverlayForSuffix(imageFile, "py"); - TaskHub::addCategory(PythonErrorTaskCategory, "Python", true); + TaskHub::addCategory({PythonErrorTaskCategory, "Python", true}); } } // Python::Internal diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.cpp index 3ab1d1a6869..6e66a9bba17 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.cpp @@ -38,8 +38,8 @@ namespace QmlDesigner { AssetExporterPlugin::AssetExporterPlugin() { - ProjectExplorer::TaskHub::addCategory( Constants::TASK_CATEGORY_ASSET_EXPORT, - tr("Asset Export"), false); + ProjectExplorer::TaskHub::addCategory({Constants::TASK_CATEGORY_ASSET_EXPORT, + tr("Asset Export"), false}); auto *designerPlugin = QmlDesigner::QmlDesignerPlugin::instance(); auto &viewManager = designerPlugin->viewManager(); diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index d695989825d..d0393e2df2a 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -205,8 +205,8 @@ void QmlJSEditorPlugin::extensionsInitialized() FileIconProvider::registerIconOverlayForMimeType(ProjectExplorer::Constants::FILEOVERLAY_UI, "application/x-qt.ui+qml"); - TaskHub::addCategory(Constants::TASK_CATEGORY_QML, Tr::tr("QML")); - TaskHub::addCategory(Constants::TASK_CATEGORY_QML_ANALYSIS, Tr::tr("QML Analysis"), false); + TaskHub::addCategory({Constants::TASK_CATEGORY_QML, Tr::tr("QML")}); + TaskHub::addCategory({Constants::TASK_CATEGORY_QML_ANALYSIS, Tr::tr("QML Analysis"), false}); QmllsSettingsManager::instance()->setupAutoupdate(); }