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()
|
void IssuesWidget::updateNamedFilters()
|
||||||
{
|
{
|
||||||
QList<NamedFilter> globalFilters;
|
QList<NamedFilter> globalFilters = knownNamedFiltersFor(m_currentPrefix, true);
|
||||||
QList<NamedFilter> userFilters;
|
QList<NamedFilter> userFilters = knownNamedFiltersFor(m_currentPrefix, false);
|
||||||
knownNamedFilters(&globalFilters, &userFilters);
|
|
||||||
|
|
||||||
Utils::sort(globalFilters, [](const NamedFilter &lhs, const NamedFilter &rhs) {
|
Utils::sort(globalFilters, [](const NamedFilter &lhs, const NamedFilter &rhs) {
|
||||||
return lhs.displayName < rhs.displayName;
|
return lhs.displayName < rhs.displayName;
|
||||||
@@ -778,6 +777,7 @@ void IssuesWidget::updateBasicProjectInfo(const std::optional<Dto::ProjectInfoDt
|
|||||||
button->setCheckable(true);
|
button->setCheckable(true);
|
||||||
connect(button, &QToolButton::clicked, this, [this, prefix = kind.prefix]{
|
connect(button, &QToolButton::clicked, this, [this, prefix = kind.prefix]{
|
||||||
m_currentPrefix = prefix;
|
m_currentPrefix = prefix;
|
||||||
|
updateNamedFilters();
|
||||||
fetchTable();
|
fetchTable();
|
||||||
});
|
});
|
||||||
m_typesButtonGroup->addButton(button, ++buttonId);
|
m_typesButtonGroup->addButton(button, ++buttonId);
|
||||||
|
@@ -338,17 +338,27 @@ void fetchNamedFilters()
|
|||||||
dd->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);
|
return Utils::filtered(f, [kind](const Dto::NamedFilterInfoDto &dto) {
|
||||||
QTC_ASSERT(global, return);
|
if (dto.supportsAllIssueKinds)
|
||||||
QTC_ASSERT(user, return);
|
return true;
|
||||||
|
return !dto.issueKindRestrictions || dto.issueKindRestrictions->contains(kind)
|
||||||
*global = Utils::transform(dd->m_globalNamedFilters, [](const Dto::NamedFilterInfoDto &dto) {
|
|| dto.issueKindRestrictions->contains("UNIVERSAL");
|
||||||
return NamedFilter{dto.key, dto.displayName, true};
|
|
||||||
});
|
});
|
||||||
*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 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);
|
std::optional<Dto::NamedFilterInfoDto> namedFilterInfoForKey(const QString &key, bool global);
|
||||||
|
|
||||||
bool handleCertificateIssue();
|
bool handleCertificateIssue();
|
||||||
|
Reference in New Issue
Block a user