Skip to content

Commit f71d779

Browse files
committed
fw/uicomponents: Precompute role name to role map
1 parent ad74c66 commit f71d779

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/framework/uicomponents/qml/Muse/UiComponents/sortfilterproxymodel.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
#include <QTimer>
2626

27+
#include "global/log.h"
2728
#include "uicomponents/view/modelutils.h"
2829

2930
using namespace muse::uicomponents;
@@ -145,7 +146,7 @@ void SortFilterProxyModel::setAlwaysExcludeIndices(const QList<int>& indices)
145146

146147
int SortFilterProxyModel::roleFromRoleName(const QString& roleName) const
147148
{
148-
return roleNames().key(roleName.toUtf8(), INVALID_KEY);
149+
return m_roles.value(roleName.toUtf8(), INVALID_KEY);
149150
}
150151

151152
QHash<int, QByteArray> SortFilterProxyModel::roleNames() const
@@ -165,6 +166,12 @@ void SortFilterProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
165166

166167
QSortFilterProxyModel::setSourceModel(sourceModel);
167168

169+
m_roles.clear();
170+
for (const auto& [role, roleName] : roleNames().asKeyValueRange()) {
171+
const auto[it, didInsert] = m_roles.try_emplace(roleName, role);
172+
DO_ASSERT(didInsert);
173+
}
174+
168175
emit sourceModelRoleNamesChanged();
169176

170177
if (auto sourceSortFilterModel = qobject_cast<SortFilterProxyModel*>(sourceModel)) {

src/framework/uicomponents/qml/Muse/UiComponents/sortfilterproxymodel.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#pragma once
2424

25+
#include <QByteArray>
2526
#include <QHash>
2627
#include <QList>
2728
#include <QMetaObject>
@@ -77,6 +78,8 @@ class SortFilterProxyModel : public QSortFilterProxyModel
7778
private:
7879
Sorter* currentSorter() const;
7980

81+
QHash<QByteArray, int> m_roles;
82+
8083
QmlListProperty<Filter> m_filters;
8184
QmlListProperty<Sorter> m_sorters;
8285

0 commit comments

Comments
 (0)