diff options
Diffstat (limited to 'src/plugins/projectexplorer/taskwindow.cpp')
-rw-r--r-- | src/plugins/projectexplorer/taskwindow.cpp | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index dfc72e667f..7416c383e7 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -21,6 +21,7 @@ #include <coreplugin/session.h> #include <utils/algorithm.h> +#include <utils/execmenu.h> #include <utils/fileinprojectfinder.h> #include <utils/hostosinfo.h> #include <utils/itemviews.h> @@ -221,6 +222,7 @@ TaskWindow::TaskWindow() : d(std::make_unique<TaskWindowPrivate>()) d->m_categoriesMenu = new QMenu(d->m_categoriesButton); connect(d->m_categoriesMenu, &QMenu::aboutToShow, this, &TaskWindow::updateCategoriesMenu); + Utils::addToolTipsToMenu(d->m_categoriesMenu); d->m_categoriesButton->setMenu(d->m_categoriesMenu); @@ -239,17 +241,17 @@ TaskWindow::TaskWindow() : d(std::make_unique<TaskWindowPrivate>()) connect(hub, &TaskHub::showTask, this, &TaskWindow::showTask); connect(hub, &TaskHub::openTask, this, &TaskWindow::openTask); - connect(d->m_filter, &TaskFilterModel::rowsAboutToBeRemoved, + connect(d->m_filter, &TaskFilterModel::rowsAboutToBeRemoved, this, [this](const QModelIndex &, int first, int last) { d->m_visibleIssuesCount -= d->m_filter->issuesCount(first, last); emit setBadgeNumber(d->m_visibleIssuesCount); }); - connect(d->m_filter, &TaskFilterModel::rowsInserted, + connect(d->m_filter, &TaskFilterModel::rowsInserted, this, [this](const QModelIndex &, int first, int last) { d->m_visibleIssuesCount += d->m_filter->issuesCount(first, last); emit setBadgeNumber(d->m_visibleIssuesCount); }); - connect(d->m_filter, &TaskFilterModel::modelReset, [this] { + connect(d->m_filter, &TaskFilterModel::modelReset, this, [this] { d->m_visibleIssuesCount = d->m_filter->issuesCount(0, d->m_filter->rowCount()); emit setBadgeNumber(d->m_visibleIssuesCount); }); @@ -367,12 +369,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) { QSet<Id> filters = d->m_filter->filteredCategories(); - filters.insert(categoryId); + filters.insert(category.id); d->m_filter->setFilteredCategories(filters); } } @@ -467,27 +469,20 @@ void TaskWindow::setShowWarnings(bool show) void TaskWindow::updateCategoriesMenu() { - using NameToIdsConstIt = QMap<QString, Id>::ConstIterator; - d->m_categoriesMenu->clear(); const QSet<Id> filteredCategories = d->m_filter->filteredCategories(); + const QList<TaskCategory> categories = Utils::sorted(d->m_model->categories(), + &TaskCategory::displayName); - QMap<QString, Id> nameToIds; - const QList<Id> ids = d->m_model->categoryIds(); - for (const Id categoryId : ids) - nameToIds.insert(d->m_model->categoryDisplayName(categoryId), categoryId); - - const NameToIdsConstIt cend = nameToIds.constEnd(); - for (NameToIdsConstIt it = nameToIds.constBegin(); it != cend; ++it) { - const QString &displayName = it.key(); - const Id categoryId = it.value(); + for (const TaskCategory &c : categories) { auto action = new QAction(d->m_categoriesMenu); action->setCheckable(true); - action->setText(displayName); - action->setChecked(!filteredCategories.contains(categoryId)); - connect(action, &QAction::triggered, this, [this, action, categoryId] { - setCategoryVisibility(categoryId, action->isChecked()); + action->setText(c.displayName); + action->setToolTip(c.description); + action->setChecked(!filteredCategories.contains(c.id)); + connect(action, &QAction::triggered, this, [this, action, id = c.id] { + setCategoryVisibility(id, action->isChecked()); }); d->m_categoriesMenu->addAction(action); } |