forked from qt-creator/qt-creator
Axivion: Respect filter restrictions
Filters may have restrictions for which issue kinds they are available. Respect these restrictions and display only available filters. Change-Id: Ie667409af9a2ea493898e2abee208237d85eb84c Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Mohammad Mehdi Salem Naraghi <mehdi.salem@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -461,9 +461,8 @@ void IssuesWidget::resetDashboard()
|
||||
|
||||
void IssuesWidget::updateNamedFilters()
|
||||
{
|
||||
QList<NamedFilter> globalFilters;
|
||||
QList<NamedFilter> userFilters;
|
||||
knownNamedFilters(&globalFilters, &userFilters);
|
||||
QList<NamedFilter> globalFilters = knownNamedFiltersFor(m_currentPrefix, true);
|
||||
QList<NamedFilter> userFilters = knownNamedFiltersFor(m_currentPrefix, false);
|
||||
|
||||
Utils::sort(globalFilters, [](const NamedFilter &lhs, const NamedFilter &rhs) {
|
||||
return lhs.displayName < rhs.displayName;
|
||||
@@ -778,6 +777,7 @@ void IssuesWidget::updateBasicProjectInfo(const std::optional<Dto::ProjectInfoDt
|
||||
button->setCheckable(true);
|
||||
connect(button, &QToolButton::clicked, this, [this, prefix = kind.prefix]{
|
||||
m_currentPrefix = prefix;
|
||||
updateNamedFilters();
|
||||
fetchTable();
|
||||
});
|
||||
m_typesButtonGroup->addButton(button, ++buttonId);
|
||||
|
@@ -338,17 +338,27 @@ void fetchNamedFilters()
|
||||
dd->fetchNamedFilters();
|
||||
}
|
||||
|
||||
void knownNamedFilters(QList<NamedFilter> *global, QList<NamedFilter> *user)
|
||||
static QList<Dto::NamedFilterInfoDto> withoutRestricted(const QString &kind, const QList<Dto::NamedFilterInfoDto> &f)
|
||||
{
|
||||
QTC_ASSERT(dd, return);
|
||||
QTC_ASSERT(global, return);
|
||||
QTC_ASSERT(user, return);
|
||||
|
||||
*global = Utils::transform(dd->m_globalNamedFilters, [](const Dto::NamedFilterInfoDto &dto) {
|
||||
return NamedFilter{dto.key, dto.displayName, true};
|
||||
return Utils::filtered(f, [kind](const Dto::NamedFilterInfoDto &dto) {
|
||||
if (dto.supportsAllIssueKinds)
|
||||
return true;
|
||||
return !dto.issueKindRestrictions || dto.issueKindRestrictions->contains(kind)
|
||||
|| dto.issueKindRestrictions->contains("UNIVERSAL");
|
||||
});
|
||||
*user = Utils::transform(dd->m_userNamedFilters, [](const Dto::NamedFilterInfoDto &dto) {
|
||||
return NamedFilter{dto.key, dto.displayName, false};
|
||||
};
|
||||
|
||||
// TODO: Introduce FilterScope enum { Global, User } and use it instead of bool global.
|
||||
QList<NamedFilter> knownNamedFiltersFor(const QString &issueKind, bool global)
|
||||
{
|
||||
QTC_ASSERT(dd, return {});
|
||||
|
||||
if (issueKind.isEmpty()) // happens after initial dashboad and filters fetch
|
||||
return {};
|
||||
|
||||
return Utils::transform(withoutRestricted(issueKind, global ? dd->m_globalNamedFilters : dd->m_userNamedFilters),
|
||||
[global](const Dto::NamedFilterInfoDto &dto) {
|
||||
return NamedFilter{dto.key, dto.displayName, global};
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -113,7 +113,7 @@ struct NamedFilter
|
||||
};
|
||||
|
||||
void fetchNamedFilters();
|
||||
void knownNamedFilters(QList<NamedFilter> *global, QList<NamedFilter> *user);
|
||||
QList<NamedFilter> knownNamedFiltersFor(const QString &issueKind, bool global);
|
||||
std::optional<Dto::NamedFilterInfoDto> namedFilterInfoForKey(const QString &key, bool global);
|
||||
|
||||
bool handleCertificateIssue();
|
||||
|
Reference in New Issue
Block a user