blob: f1f2ebcabd3dcfe0078e28cd501798dede5c489f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#include "waylandentriesfiltered.h"
#include "waylandentries.h"
#include "xdgdesktopentries.h"
#include <QDebug>
WaylandEntriesFiltered::WaylandEntriesFiltered(QObject *parent)
: QSortFilterProxyModel{parent}
{
m_entries = new KaZoe::DesktopEntries(this);
QObject::connect(this, &WaylandEntriesFiltered::rowsInserted, this, &WaylandEntriesFiltered::lengthChanged);
QObject::connect(this, &WaylandEntriesFiltered::rowsRemoved, this, &WaylandEntriesFiltered::lengthChanged);
}
QString WaylandEntriesFiltered::roleFilter() const
{
return m_roleFilter.join(";");
}
void WaylandEntriesFiltered::setRoleFilter(const QString &roles)
{
QStringList newlist = roles.split(";");
if (m_roleFilter == newlist)
return;
m_roleFilter = newlist;
emit roleFilterChanged();
}
bool WaylandEntriesFiltered::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
QVariant appid = sourceModel()->data(index, WaylandEntries::AppIdRole);
QString role = m_entries->appIdData(appid.toString(), "Desktop Entry/X-DESKTOPMGR-ROLE");
if(appid.isNull())
return false;
if(m_roleFilter.contains(role))
{
return false;
}
return true;
}
QObject *WaylandEntriesFiltered::model() const
{
return static_cast<QObject*>(m_model);
}
void WaylandEntriesFiltered::setModel(QObject *newModel)
{
WaylandEntries *entries = qobject_cast<WaylandEntries*>(newModel);
if (entries)
{
m_model = entries;
setSourceModel(m_model);
emit modelChanged(m_model);
}
}
int WaylandEntriesFiltered::length()
{
return rowCount();
}
|