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
*/
6
#include "
KisStorageFilterProxyModel.h
"
7
8
#include <QDebug>
9
#include <
KisResourceModel.h
>
10
#include <
kis_debug.h
>
11
#include <
KisResourceSearchBoxFilter.h
>
12
#include <
KisResourceLocator.h
>
13
14
struct
KisStorageFilterProxyModel::Private
15
{
16
FilterType
filterType
{
KisStorageFilterProxyModel::ByStorageType
};
17
QVariant
filter
;
18
19
};
20
21
KisStorageFilterProxyModel::KisStorageFilterProxyModel
(QObject *parent)
22
: QSortFilterProxyModel(parent)
23
, d(new
Private
)
24
{
25
}
26
27
KisStorageFilterProxyModel::~KisStorageFilterProxyModel
()
28
{
29
delete
d
;
30
}
31
32
KisResourceStorageSP
KisStorageFilterProxyModel::storageForIndex
(QModelIndex index)
const
33
{
34
KisStorageModel
*
source
=
dynamic_cast<
KisStorageModel
*
>
(sourceModel());
35
if
(
source
) {
36
return
source
->storageForIndex(mapToSource(index));
37
}
38
return
0;
39
}
40
41
void
KisStorageFilterProxyModel::setFilter
(
KisStorageFilterProxyModel::FilterType
filterType, QVariant filter)
42
{
43
d
->
filter
= filter;
44
d
->
filterType
= filterType;
45
}
46
47
48
bool
KisStorageFilterProxyModel::filterAcceptsColumn
(
int
/*source_column*/
,
const
QModelIndex &
/*source_parent*/
)
const
49
{
50
return
true
;
51
}
52
53
bool
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
83
bool
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
90
void
KisStorageFilterProxyModel::slotModelReset
()
91
{
92
invalidateFilter();
93
}
source
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
Definition
KisMagneticGraph.h:251
KisResourceLocator.h
KisResourceModel.h
KisResourceSearchBoxFilter.h
KisStorageFilterProxyModel.h
KisAbstractResourceModel::Name
@ Name
Definition
KisResourceModel.h:35
KisStorageFilterProxyModel::slotModelReset
void slotModelReset()
Definition
KisStorageFilterProxyModel.cpp:90
KisStorageFilterProxyModel::~KisStorageFilterProxyModel
~KisStorageFilterProxyModel() override
Definition
KisStorageFilterProxyModel.cpp:27
KisStorageFilterProxyModel::KisStorageFilterProxyModel
KisStorageFilterProxyModel(QObject *parent=0)
Definition
KisStorageFilterProxyModel.cpp:21
KisStorageFilterProxyModel::d
Private *const d
Definition
KisStorageFilterProxyModel.h:56
KisStorageFilterProxyModel::filterAcceptsRow
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
Definition
KisStorageFilterProxyModel.cpp:53
KisStorageFilterProxyModel::storageForIndex
KisResourceStorageSP storageForIndex(QModelIndex index=QModelIndex()) const
Definition
KisStorageFilterProxyModel.cpp:32
KisStorageFilterProxyModel::FilterType
FilterType
Definition
KisStorageFilterProxyModel.h:32
KisStorageFilterProxyModel::ByActive
@ ByActive
Definition
KisStorageFilterProxyModel.h:36
KisStorageFilterProxyModel::ByFileName
@ ByFileName
Definition
KisStorageFilterProxyModel.h:33
KisStorageFilterProxyModel::ByStorageType
@ ByStorageType
Pass a string list of storage types.
Definition
KisStorageFilterProxyModel.h:35
KisStorageFilterProxyModel::filterAcceptsColumn
bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override
Definition
KisStorageFilterProxyModel.cpp:48
KisStorageFilterProxyModel::lessThan
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override
Definition
KisStorageFilterProxyModel.cpp:83
KisStorageFilterProxyModel::setFilter
void setFilter(FilterType filterType, QVariant filter)
Definition
KisStorageFilterProxyModel.cpp:41
KisStorageModel
Definition
KisStorageModel.h:25
KisStorageModel::Active
@ Active
Definition
KisStorageModel.h:35
KisStorageModel::StorageType
@ StorageType
Definition
KisStorageModel.h:31
KisStorageModel::Location
@ Location
Definition
KisStorageModel.h:32
QSharedPointer< KisResourceStorage >
kis_debug.h
Private
Definition
SvgTransformParser.cpp:20
KisStorageFilterProxyModel::Private
Definition
KisStorageFilterProxyModel.cpp:15
KisStorageFilterProxyModel::Private::filterType
FilterType filterType
Definition
KisStorageFilterProxyModel.cpp:16
KisStorageFilterProxyModel::Private::filter
QVariant filter
Definition
KisStorageFilterProxyModel.cpp:17
libs
resources
KisStorageFilterProxyModel.cpp
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52