Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceSearchBoxFilter Class Reference

#include <KisResourceSearchBoxFilter.h>

+ Inheritance diagram for KisResourceSearchBoxFilter:

Public Member Functions

bool isEmpty ()
 
 KisResourceSearchBoxFilter ()
 
bool matchesResource (const QString &resourceName, const QStringList &tagList) const
 
 Private ()
 
void setFilter (const QString &filter)
 
 ~KisResourceSearchBoxFilter ()
 

Public Attributes

QChar exactMatchBeginEnd {'"'}
 
QChar excludeBegin {'!'}
 
QString filter
 
QSet< QString > resourceExactMatchesExcluded
 
QSet< QString > resourceExactMatchesIncluded
 
QList< QString > resourceNamesPartialExcluded
 
QList< QString > resourceNamesPartialIncluded
 
QRegularExpression searchTokenizer
 
QChar tagBegin {'#'}
 
QSet< QString > tagExactMatchesExcluded
 
QSet< QString > tagExactMatchesIncluded
 
QList< QString > tagsPartialExcluded
 
QList< QString > tagsPartialIncluded
 

Private Member Functions

void clearFilterData ()
 
void initializeFilterData ()
 
- Private Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Private Attributes

QScopedPointer< Privatem_d
 
- Private Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Detailed Description

XXX: Apidox

Definition at line 15 of file KisResourceSearchBoxFilter.cpp.

Constructor & Destructor Documentation

◆ KisResourceSearchBoxFilter()

KisResourceSearchBoxFilter::KisResourceSearchBoxFilter ( )

Definition at line 42 of file KisResourceSearchBoxFilter.cpp.

◆ ~KisResourceSearchBoxFilter()

KisResourceSearchBoxFilter::~KisResourceSearchBoxFilter ( )

Definition at line 47 of file KisResourceSearchBoxFilter.cpp.

48{
49
50}

Member Function Documentation

◆ clearFilterData()

void KisResourceSearchBoxFilter::clearFilterData ( )
private

Definition at line 152 of file KisResourceSearchBoxFilter.cpp.

153{
154 m_d->resourceExactMatchesIncluded.clear();
155 m_d->resourceExactMatchesExcluded.clear();
156 m_d->tagExactMatchesIncluded.clear();
157 m_d->tagExactMatchesExcluded.clear();
158
159 m_d->resourceNamesPartialIncluded.clear();
160 m_d->resourceNamesPartialExcluded.clear();
161 m_d->tagsPartialIncluded.clear();
162 m_d->tagsPartialExcluded.clear();
163}

References m_d.

◆ initializeFilterData()

void KisResourceSearchBoxFilter::initializeFilterData ( )
private

Definition at line 165 of file KisResourceSearchBoxFilter.cpp.

166{
168
169 QString tempFilter(m_d->filter);
170
171 QStringList tokens = tempFilter.split(m_d->searchTokenizer, Qt::SkipEmptyParts);
172
173 Q_FOREACH(const QString& token, tokens) {
174 QString workingToken(token.toLower());
175 const bool included = !checkPrefixAndCut(m_d->excludeBegin, workingToken);
176
177 if (checkPrefixAndCut(m_d->tagBegin, workingToken)) {
178 if (checkDelimitersAndCut(m_d->exactMatchBeginEnd, workingToken)) {
179 if (included) {
180
181 m_d->tagExactMatchesIncluded.insert(workingToken);
182 } else {
183
184 m_d->tagExactMatchesExcluded.insert(workingToken);
185 }
186 } else {
187 if (included) {
188
189 m_d->tagsPartialIncluded.append(workingToken);
190 } else {
191
192 m_d->tagsPartialExcluded.append(workingToken);
193 }
194 }
195 } else if (checkDelimitersAndCut(m_d->exactMatchBeginEnd, workingToken)) {
196 if (included) {
197
198 m_d->resourceExactMatchesIncluded.insert(workingToken);
199 } else {
200
201 m_d->resourceExactMatchesExcluded.insert(workingToken);
202 }
203
204 } else {
205 if (included) {
206
207 m_d->resourceNamesPartialIncluded.append(workingToken);
208 } else {
209
210 m_d->resourceNamesPartialExcluded.append(workingToken);
211 }
212 }
213 }
214}
bool checkPrefixAndCut(QChar &prefix, QString &token)
bool checkDelimitersAndCut(const QChar &begin, const QChar &end, QString &token)

References checkDelimitersAndCut(), checkPrefixAndCut(), clearFilterData(), and m_d.

◆ isEmpty()

bool KisResourceSearchBoxFilter::isEmpty ( )

Definition at line 147 of file KisResourceSearchBoxFilter.cpp.

148{
149 return m_d->filter.isEmpty();
150}

References m_d.

◆ matchesResource()

bool KisResourceSearchBoxFilter::matchesResource ( const QString & resourceName,
const QStringList & tagList ) const

Definition at line 82 of file KisResourceSearchBoxFilter.cpp.

83{
84 // exact matches
85 QString resourceName = _resourceName.toLower();
86
87 if (m_d->resourceExactMatchesIncluded.count() > 0
88 && !m_d->resourceExactMatchesIncluded.contains(resourceName)) {
89 return false;
90 }
91 if (m_d->resourceExactMatchesExcluded.contains(resourceName)) {
92 return false;
93 }
94
95 // partial name matches
96 if (m_d->resourceNamesPartialIncluded.count() > 0) {
97 Q_FOREACH(const QString& partialName, m_d->resourceNamesPartialIncluded) {
98 if (!resourceName.contains(partialName) && tagList.filter(partialName, Qt::CaseInsensitive).isEmpty()) {
99 return false;
100 }
101 }
102 }
103
104 Q_FOREACH(const QString& partialName, m_d->resourceNamesPartialExcluded) {
105 if (resourceName.contains(partialName) || tagList.filter(partialName, Qt::CaseInsensitive).size() > 0) {
106 return false;
107 }
108 }
109
110 // Tag partial matches
111 if (m_d->tagsPartialIncluded.count() > 0 ) {
112 Q_FOREACH(const QString& partialTag, m_d->tagsPartialIncluded) {
113 if (tagList.filter(partialTag, Qt::CaseInsensitive).isEmpty()) {
114 return false;
115 }
116 }
117 }
118
119 if (m_d->tagsPartialExcluded.count() > 0) {
120 Q_FOREACH(const QString& partialTag, m_d->tagsPartialExcluded) {
121 if (tagList.filter(partialTag, Qt::CaseInsensitive).size() > 0) {
122 return false;
123 }
124 }
125 }
126
127 // Tag exact matches
128 if (m_d->tagExactMatchesIncluded.count() > 0) {
129 Q_FOREACH(const QString& tagName, m_d->tagExactMatchesIncluded) {
130 if (!tagList.contains(tagName, Qt::CaseInsensitive)) {
131 return false;
132 }
133 }
134 }
135
136 if (m_d->tagExactMatchesExcluded.count() > 0) {
137 Q_FOREACH(const QString excludedTag, m_d->tagExactMatchesExcluded) {
138 if (tagList.contains(excludedTag, Qt::CaseInsensitive)) {
139 return false;
140 }
141 }
142 }
143
144 return true;
145}

References m_d.

◆ Private()

KisResourceSearchBoxFilter::Private ( )
inline

Definition at line 18 of file KisResourceSearchBoxFilter.cpp.

19 : searchTokenizer("\\s*,+\\s*")
20 {}

◆ setFilter()

void KisResourceSearchBoxFilter::setFilter ( const QString & filter)

Member Data Documentation

◆ exactMatchBeginEnd

QChar KisResourceSearchBoxFilter::exactMatchBeginEnd {'"'}

Definition at line 26 of file KisResourceSearchBoxFilter.cpp.

26{'"'};

◆ excludeBegin

QChar KisResourceSearchBoxFilter::excludeBegin {'!'}

Definition at line 24 of file KisResourceSearchBoxFilter.cpp.

24{'!'};

◆ filter

QString KisResourceSearchBoxFilter::filter

Definition at line 38 of file KisResourceSearchBoxFilter.cpp.

◆ m_d

QScopedPointer<Private> KisResourceSearchBoxFilter::m_d
private

Definition at line 36 of file KisResourceSearchBoxFilter.h.

◆ resourceExactMatchesExcluded

QSet<QString> KisResourceSearchBoxFilter::resourceExactMatchesExcluded

Definition at line 31 of file KisResourceSearchBoxFilter.cpp.

◆ resourceExactMatchesIncluded

QSet<QString> KisResourceSearchBoxFilter::resourceExactMatchesIncluded

Definition at line 30 of file KisResourceSearchBoxFilter.cpp.

◆ resourceNamesPartialExcluded

QList<QString> KisResourceSearchBoxFilter::resourceNamesPartialExcluded

Definition at line 34 of file KisResourceSearchBoxFilter.cpp.

◆ resourceNamesPartialIncluded

QList<QString> KisResourceSearchBoxFilter::resourceNamesPartialIncluded

Definition at line 33 of file KisResourceSearchBoxFilter.cpp.

◆ searchTokenizer

QRegularExpression KisResourceSearchBoxFilter::searchTokenizer

Definition at line 22 of file KisResourceSearchBoxFilter.cpp.

◆ tagBegin

QChar KisResourceSearchBoxFilter::tagBegin {'#'}

Definition at line 25 of file KisResourceSearchBoxFilter.cpp.

25{'#'};

◆ tagExactMatchesExcluded

QSet<QString> KisResourceSearchBoxFilter::tagExactMatchesExcluded

Definition at line 29 of file KisResourceSearchBoxFilter.cpp.

◆ tagExactMatchesIncluded

QSet<QString> KisResourceSearchBoxFilter::tagExactMatchesIncluded

Definition at line 28 of file KisResourceSearchBoxFilter.cpp.

◆ tagsPartialExcluded

QList<QString> KisResourceSearchBoxFilter::tagsPartialExcluded

Definition at line 36 of file KisResourceSearchBoxFilter.cpp.

◆ tagsPartialIncluded

QList<QString> KisResourceSearchBoxFilter::tagsPartialIncluded

Definition at line 35 of file KisResourceSearchBoxFilter.cpp.


The documentation for this class was generated from the following files: