Krita Source Code Documentation
Loading...
Searching...
No Matches
KisStorageFilterProxyModel.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
7
8#include <QDebug>
9#include <KisResourceModel.h>
10#include <kis_debug.h>
12#include <KisResourceLocator.h>
13
20
22 : QSortFilterProxyModel(parent)
23 , d(new Private)
24{
25}
26
31
33{
34 KisStorageModel *source = dynamic_cast<KisStorageModel*>(sourceModel());
35 if (source) {
36 return source->storageForIndex(mapToSource(index));
37 }
38 return 0;
39}
40
42{
43 d->filter = filter;
44 d->filterType = filterType;
45}
46
47
48bool KisStorageFilterProxyModel::filterAcceptsColumn(int /*source_column*/, const QModelIndex &/*source_parent*/) const
49{
50 return true;
51}
52
53bool KisStorageFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
54{
55 if (d->filter.isNull()) return true;
56
57 QModelIndex idx = sourceModel()->index(source_row, KisAbstractResourceModel::Name, source_parent);
58
59 switch (d->filterType) {
60 case ByFileName:
61 {
62 QString filename = d->filter.toString();
63 return (sourceModel()->data(idx, Qt::UserRole + KisStorageModel::Location).toString().contains(filename));
64 }
65 case ByStorageType:
66 {
67 QString storageType = sourceModel()->data(idx, Qt::UserRole + KisStorageModel::StorageType).toString();
68 return (d->filter.toStringList().contains(storageType));
69 }
70 case ByActive:
71 {
72 bool active = d->filter.toBool();
73 bool isActive = sourceModel()->data(idx, Qt::UserRole + KisStorageModel::Active).toBool();
74 return (active == isActive);
75 }
76 default:
77 ;
78 }
79
80 return false;
81}
82
83bool KisStorageFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
84{
85 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAbstractResourceModel::Name).toString();
86 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAbstractResourceModel::Name).toString();
87 return nameLeft < nameRight;
88}
89
91{
92 invalidateFilter();
93}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
KisResourceStorageSP storageForIndex(QModelIndex index=QModelIndex()) const
@ ByStorageType
Pass a string list of storage types.
bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override
void setFilter(FilterType filterType, QVariant filter)