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 16 of file KisResourceSearchBoxFilter.cpp.

Constructor & Destructor Documentation

◆ KisResourceSearchBoxFilter()

KisResourceSearchBoxFilter::KisResourceSearchBoxFilter ( )

Definition at line 43 of file KisResourceSearchBoxFilter.cpp.

◆ ~KisResourceSearchBoxFilter()

KisResourceSearchBoxFilter::~KisResourceSearchBoxFilter ( )

Definition at line 48 of file KisResourceSearchBoxFilter.cpp.

49{
50
51}

Member Function Documentation

◆ clearFilterData()

void KisResourceSearchBoxFilter::clearFilterData ( )
private

Definition at line 153 of file KisResourceSearchBoxFilter.cpp.

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

References m_d.

◆ initializeFilterData()

void KisResourceSearchBoxFilter::initializeFilterData ( )
private

Definition at line 166 of file KisResourceSearchBoxFilter.cpp.

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

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

References m_d.

◆ matchesResource()

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

Definition at line 83 of file KisResourceSearchBoxFilter.cpp.

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

References m_d.

◆ Private()

KisResourceSearchBoxFilter::Private ( )
inline

Definition at line 19 of file KisResourceSearchBoxFilter.cpp.

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

◆ setFilter()

void KisResourceSearchBoxFilter::setFilter ( const QString & filter)

Member Data Documentation

◆ exactMatchBeginEnd

QChar KisResourceSearchBoxFilter::exactMatchBeginEnd {'"'}

Definition at line 27 of file KisResourceSearchBoxFilter.cpp.

27{'"'};

◆ excludeBegin

QChar KisResourceSearchBoxFilter::excludeBegin {'!'}

Definition at line 25 of file KisResourceSearchBoxFilter.cpp.

25{'!'};

◆ filter

QString KisResourceSearchBoxFilter::filter

Definition at line 39 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 32 of file KisResourceSearchBoxFilter.cpp.

◆ resourceExactMatchesIncluded

QSet<QString> KisResourceSearchBoxFilter::resourceExactMatchesIncluded

Definition at line 31 of file KisResourceSearchBoxFilter.cpp.

◆ resourceNamesPartialExcluded

QList<QString> KisResourceSearchBoxFilter::resourceNamesPartialExcluded

Definition at line 35 of file KisResourceSearchBoxFilter.cpp.

◆ resourceNamesPartialIncluded

QList<QString> KisResourceSearchBoxFilter::resourceNamesPartialIncluded

Definition at line 34 of file KisResourceSearchBoxFilter.cpp.

◆ searchTokenizer

QRegularExpression KisResourceSearchBoxFilter::searchTokenizer

Definition at line 23 of file KisResourceSearchBoxFilter.cpp.

◆ tagBegin

QChar KisResourceSearchBoxFilter::tagBegin {'#'}

Definition at line 26 of file KisResourceSearchBoxFilter.cpp.

26{'#'};

◆ tagExactMatchesExcluded

QSet<QString> KisResourceSearchBoxFilter::tagExactMatchesExcluded

Definition at line 30 of file KisResourceSearchBoxFilter.cpp.

◆ tagExactMatchesIncluded

QSet<QString> KisResourceSearchBoxFilter::tagExactMatchesIncluded

Definition at line 29 of file KisResourceSearchBoxFilter.cpp.

◆ tagsPartialExcluded

QList<QString> KisResourceSearchBoxFilter::tagsPartialExcluded

Definition at line 37 of file KisResourceSearchBoxFilter.cpp.

◆ tagsPartialIncluded

QList<QString> KisResourceSearchBoxFilter::tagsPartialIncluded

Definition at line 36 of file KisResourceSearchBoxFilter.cpp.


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