on xenial help sign in
Support Filter's roles in Filters model.
dc77e47Pawel Stolowski
plugins/Unity/filters.cpp+29−10
@@ -33,6 +33,15 @@
33Filters::Filters(unity::dash::Filters::Ptr unityFilters, QObject *parent) :
33Filters::Filters(unity::dash::Filters::Ptr unityFilters, QObject *parent) :
34 QAbstractListModel(parent), m_unityFilters(unityFilters)
34 QAbstractListModel(parent), m_unityFilters(unityFilters)
35{
35{
36+ // setup roles
37+ m_roles[Filters::RoleId] = "id";
38+ m_roles[Filters::RoleName] = "name";
39+ m_roles[Filters::RoleIconHint] = "iconHint";
40+ m_roles[Filters::RoleRendererName] = "rendererName";
41+ m_roles[Filters::RoleVisible] = "visible";
42+ m_roles[Filters::RoleCollapsed] = "collapsed";
43+ m_roles[Filters::RoleFiltering] = "filtering";
44+
36 for (unsigned int i=0; i<m_unityFilters->count(); i++) {
45 for (unsigned int i=0; i<m_unityFilters->count(); i++) {
37 unity::dash::Filter::Ptr unityFilter = m_unityFilters->FilterAtIndex(i);
46 unity::dash::Filter::Ptr unityFilter = m_unityFilters->FilterAtIndex(i);
38 addFilter(unityFilter, i);
47 addFilter(unityFilter, i);
@@ -58,25 +67,35 @@ int Filters::rowCount(const QModelIndex& parent) const
58
67
59QVariant Filters::data(const QModelIndex& index, int role) const
68QVariant Filters::data(const QModelIndex& index, int role) const
60{
69{
61− Q_UNUSED(role)
62−
63 if (!index.isValid()) {
70 if (!index.isValid()) {
64 return QVariant();
71 return QVariant();
65 }
72 }
66
73
67− if (role == Filters::RoleFilter) {
68− Filter* filter = m_filters.at(index.row());
74+ Filter* filter = m_filters.at(index.row());
69− return QVariant::fromValue(filter);
75+ switch (role)
70− } else {
76+ {
77+ case Filters::RoleId:
78+ return filter->id();
79+ case Filters::RoleName:
80+ return filter->name();
81+ case Filters::RoleIconHint:
82+ return filter->iconHint();
83+ case Filters::RoleRendererName:
84+ return filter->rendererName();
85+ case Filters::RoleVisible:
86+ return filter->visible();
87+ case Filters::RoleCollapsed:
88+ return filter->collapsed();
89+ case Filters::RoleFiltering:
90+ return filter->filtering();
91+ default:
71− return QVariant();
92+ return QVariant();
72 }
93 }
73}
94}
74
95
75QHash<int, QByteArray> Filters::roleNames() const
96QHash<int, QByteArray> Filters::roleNames() const
76{
97{
77− QHash<int, QByteArray> roles;
78− roles[Filters::RoleFilter] = "filter";
79− return roles;
98+ return m_roles;
80}
99}
81
100
82Filter* Filters::getFilter(const QString& id) const
101Filter* Filters::getFilter(const QString& id) const
plugins/Unity/filters.h+8−1
@@ -42,7 +42,13 @@ public:
42 ~Filters();
42 ~Filters();
43
43
44 enum Roles {
44 enum Roles {
45− RoleFilter
45+ RoleId,
46+ RoleName,
47+ RoleIconHint,
48+ RoleRendererName,
49+ RoleVisible,
50+ RoleCollapsed,
51+ RoleFiltering
46 };
52 };
47
53
48 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
54 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
@@ -54,6 +60,7 @@ public:
54private:
60private:
55 unity::dash::Filters::Ptr m_unityFilters;
61 unity::dash::Filters::Ptr m_unityFilters;
56 QList<Filter*> m_filters;
62 QList<Filter*> m_filters;
63+ QHash<int, QByteArray> m_roles;
57
64
58 void onFilterAdded(unity::dash::Filter::Ptr unityFilter);
65 void onFilterAdded(unity::dash::Filter::Ptr unityFilter);
59 void onFilterChanged(unity::dash::Filter::Ptr unityFilter);
66 void onFilterChanged(unity::dash::Filter::Ptr unityFilter);