Changeset View
Changeset View
Standalone View
Standalone View
libtaskmanager/taskfilterproxymodel.cpp
Show All 27 Lines | |||||
28 | 28 | | |||
29 | class Q_DECL_HIDDEN TaskFilterProxyModel::Private | 29 | class Q_DECL_HIDDEN TaskFilterProxyModel::Private | ||
30 | { | 30 | { | ||
31 | public: | 31 | public: | ||
32 | Private(TaskFilterProxyModel *q); | 32 | Private(TaskFilterProxyModel *q); | ||
33 | 33 | | |||
34 | AbstractTasksModelIface *sourceTasksModel = nullptr; | 34 | AbstractTasksModelIface *sourceTasksModel = nullptr; | ||
35 | 35 | | |||
36 | uint virtualDesktop = 0; | 36 | QVariant virtualDesktop; | ||
37 | QRect screenGeometry; | 37 | QRect screenGeometry; | ||
38 | QString activity; | 38 | QString activity; | ||
39 | 39 | | |||
40 | bool filterByVirtualDesktop = false; | 40 | bool filterByVirtualDesktop = false; | ||
41 | bool filterByScreen = false; | 41 | bool filterByScreen = false; | ||
42 | bool filterByActivity = false; | 42 | bool filterByActivity = false; | ||
43 | bool filterNotMinimized = false; | 43 | bool filterNotMinimized = false; | ||
44 | bool filterSkipTaskbar = true; | 44 | bool filterSkipTaskbar = true; | ||
Show All 18 Lines | |||||
63 | 63 | | |||
64 | void TaskFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel) | 64 | void TaskFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel) | ||
65 | { | 65 | { | ||
66 | d->sourceTasksModel = dynamic_cast<AbstractTasksModelIface *>(sourceModel); | 66 | d->sourceTasksModel = dynamic_cast<AbstractTasksModelIface *>(sourceModel); | ||
67 | 67 | | |||
68 | QSortFilterProxyModel::setSourceModel(sourceModel); | 68 | QSortFilterProxyModel::setSourceModel(sourceModel); | ||
69 | } | 69 | } | ||
70 | 70 | | |||
71 | uint TaskFilterProxyModel::virtualDesktop() const | 71 | QVariant TaskFilterProxyModel::virtualDesktop() const | ||
72 | { | 72 | { | ||
73 | return d->virtualDesktop; | 73 | return d->virtualDesktop; | ||
74 | } | 74 | } | ||
75 | 75 | | |||
76 | void TaskFilterProxyModel::setVirtualDesktop(uint virtualDesktop) | 76 | void TaskFilterProxyModel::setVirtualDesktop(const QVariant &desktop) | ||
77 | { | 77 | { | ||
78 | if (d->virtualDesktop != virtualDesktop) { | 78 | if (d->virtualDesktop != desktop) { | ||
79 | d->virtualDesktop = virtualDesktop; | 79 | d->virtualDesktop = desktop; | ||
80 | 80 | | |||
81 | if (d->filterByVirtualDesktop) { | 81 | if (d->filterByVirtualDesktop) { | ||
82 | invalidateFilter(); | 82 | invalidateFilter(); | ||
83 | } | 83 | } | ||
84 | 84 | | |||
85 | emit virtualDesktopChanged(); | 85 | emit virtualDesktopChanged(); | ||
86 | } | 86 | } | ||
87 | } | 87 | } | ||
▲ Show 20 Lines • Show All 163 Lines • ▼ Show 20 Line(s) | 243 | { | |||
251 | } | 251 | } | ||
252 | 252 | | |||
253 | // Filter tasks that are not to be shown on the pager. | 253 | // Filter tasks that are not to be shown on the pager. | ||
254 | if (d->filterSkipPager && sourceIdx.data(AbstractTasksModel::SkipPager).toBool()) { | 254 | if (d->filterSkipPager && sourceIdx.data(AbstractTasksModel::SkipPager).toBool()) { | ||
255 | return false; | 255 | return false; | ||
256 | } | 256 | } | ||
257 | 257 | | |||
258 | // Filter by virtual desktop. | 258 | // Filter by virtual desktop. | ||
259 | if (d->filterByVirtualDesktop && d->virtualDesktop != 0) { | 259 | if (d->filterByVirtualDesktop && !d->virtualDesktop.isNull()) { | ||
260 | if (!sourceIdx.data(AbstractTasksModel::IsOnAllVirtualDesktops).toBool() | 260 | if (!sourceIdx.data(AbstractTasksModel::IsOnAllVirtualDesktops).toBool() | ||
261 | && (!d->demandingAttentionSkipsFilters || !sourceIdx.data(AbstractTasksModel::IsDemandingAttention).toBool())) { | 261 | && (!d->demandingAttentionSkipsFilters || !sourceIdx.data(AbstractTasksModel::IsDemandingAttention).toBool())) { | ||
262 | const QVariant &virtualDesktop = sourceIdx.data(AbstractTasksModel::VirtualDesktop); | 262 | const QVariantList &virtualDesktops = sourceIdx.data(AbstractTasksModel::VirtualDesktops).toList(); | ||
263 | 263 | | |||
264 | if (!virtualDesktop.isNull()) { | 264 | if (!virtualDesktops.isEmpty() && !virtualDesktops.contains(d->virtualDesktop)) { | ||
265 | bool ok = false; | | |||
266 | const uint i = virtualDesktop.toUInt(&ok); | | |||
267 | | ||||
268 | if (ok && i != d->virtualDesktop) { | | |||
269 | return false; | 265 | return false; | ||
270 | } | 266 | } | ||
271 | } | 267 | } | ||
272 | } | 268 | } | ||
273 | } | | |||
274 | 269 | | |||
275 | // Filter by screen. | 270 | // Filter by screen. | ||
276 | if (d->filterByScreen && d->screenGeometry.isValid()) { | 271 | if (d->filterByScreen && d->screenGeometry.isValid()) { | ||
277 | const QRect &screenGeometry = sourceIdx.data(AbstractTasksModel::ScreenGeometry).toRect(); | 272 | const QRect &screenGeometry = sourceIdx.data(AbstractTasksModel::ScreenGeometry).toRect(); | ||
278 | 273 | | |||
279 | if (screenGeometry.isValid() && screenGeometry != d->screenGeometry) { | 274 | if (screenGeometry.isValid() && screenGeometry != d->screenGeometry) { | ||
280 | return false; | 275 | return false; | ||
281 | } | 276 | } | ||
Show All 30 Lines |