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

The KisTagFilterResourceProxyModel class filters the resources by tag or resource name. More...

#include <KisTagFilterResourceProxyModel.h>

+ Inheritance diagram for KisTagFilterResourceProxyModel:

Classes

struct  Private
 

Signals

void afterFilterChanged ()
 
void beforeFilterChanges ()
 

Public Member Functions

virtual bool additionalResourceNameChecks (const QModelIndex &index, const KisResourceSearchBoxFilter *filter) const
 additionalResourceNameChecks Some resources, like fonts, have multiple names that need to be tested. Implementers should override this function if they want additional checks on the name.
 
bool addResource (KoResourceSP resource, const QString &storageId=QString()) override
 addResource adds the given resource to the database and storage. If the resource already exists in the given storage with md5, filename or name, the existing resource will be updated instead. If the existing resource was inactive, it will be active (undeleted).
 
bool addResourceDeduplicateFileName (KoResourceSP resource, const QString &storageId=QString()) override
 addResource adds the given resource to the database and storage. If the resource already exists in the given storage with the same filename, the resource will be renamed.
 
KisTagSP currentTagFilter () const
 currentTagFilter
 
bool exportResource (KoResourceSP resource, QIODevice *device) override
 exportResource exports a resource into a QIODevice
 
bool filterInCurrentTag () const
 
KoResourceSP importResource (const QString &filename, QIODevice *device, const bool allowOverwrite, const QString &storageId=QString()) override
 importResource imports a resource from a QIODevice
 
KoResourceSP importResourceFile (const QString &filename, const bool allowOverwrite, const QString &storageId=QString()) override
 importResourceFile
 
bool importWillOverwriteResource (const QString &fileName, const QString &storageLocation) const override
 importWillOverwriteResource checks is importing a resource with this filename will overwrite anything
 
QModelIndex indexForResource (KoResourceSP resource) const override
 indexFromResource
 
QModelIndex indexForResourceId (int resourceId) const override
 indexFromResource
 
int isResourceTagged (const KisTagSP tag, const int resourceId)
 
 KisTagFilterResourceProxyModel (const QString &resourceType, QObject *parent=0)
 
bool reloadResource (KoResourceSP resource) override
 reloadResource
 
bool renameResource (KoResourceSP resource, const QString &name) override
 renameResource name the given resource. The resource will have its name field reset, will be saved to the storage and there will be a new version created in the database.
 
KoResourceSP resourceForIndex (QModelIndex index=QModelIndex()) const override
 resourceForIndex returns a properly versioned and id'ed resource object
 
void setFilterInCurrentTag (bool filterInCurrentTag)
 
void setMetaDataFilter (QMap< QString, QVariant > metaDataMap)
 setMetaDataFilter provides a set of metadata to filter on, for instance by paintop id category.
 
bool setResourceActive (const QModelIndex &index, bool value) override
 setResourceActive changes 'active' state of the resource
 
void setResourceFilter (const KoResourceSP resource)
 setResourceFilter sets the resource to filter with
 
void setResourceFilter (ResourceFilter filter) override
 
bool setResourceMetaData (KoResourceSP resource, QMap< QString, QVariant > metadata) override
 setResourceMetaData
 
void setResourceModel (KisResourceModel *resourceModel)
 
void setSearchText (const QString &searchText)
 
void setStorageFilter (bool useFilter, int storageId)
 
void setStorageFilter (StorageFilter filter) override
 
void setTagFilter (const KisTagSP tag)
 setTagFilter sets the tag to filter with
 
bool tagResources (const KisTagSP tag, const QVector< int > &resourceIds)
 
bool untagResources (const KisTagSP tag, const QVector< int > &resourceIds)
 
bool updateResource (KoResourceSP resource) override
 updateResource creates a new version of the resource in the storage and in the database. This will also set the resource to active if it was inactive.
 
 ~KisTagFilterResourceProxyModel () override
 
- Public Member Functions inherited from KisAbstractResourceModel
bool setResourceInactive (const QModelIndex &index)
 
virtual ~KisAbstractResourceModel ()
 
- Public Member Functions inherited from KisAbstractResourceFilterInterface
virtual ~KisAbstractResourceFilterInterface ()
 

Protected Member Functions

bool filterAcceptsColumn (int source_column, const QModelIndex &source_parent) const override
 
bool filterAcceptsRow (int source_row, const QModelIndex &source_parent) const override
 
bool lessThan (const QModelIndex &source_left, const QModelIndex &source_right) const override
 

Private Member Functions

void updateTagFilter ()
 

Private Attributes

Private *const d
 

Additional Inherited Members

- Public Types inherited from KisAbstractResourceModel
enum  Columns {
  Id = 0 , StorageId , Name , Filename ,
  Tooltip , Thumbnail , Status , Location ,
  ResourceType , Tags , MD5 , LargeThumbnail ,
  Dirty , MetaData , ResourceActive , StorageActive ,
  BrokenStatus , BrokenStatusMessage
}
 The Columns enum indexes the columns in the model. To get the thumbnail for a particular resource, create the index with QModelIndex(row, Thumbnail). More...
 
- Public Types inherited from KisAbstractResourceFilterInterface
enum  ResourceFilter { ShowInactiveResources = 0 , ShowActiveResources , ShowAllResources }
 
enum  StorageFilter { ShowInactiveStorages = 0 , ShowActiveStorages , ShowAllStorages }
 

Detailed Description

The KisTagFilterResourceProxyModel class filters the resources by tag or resource name.

Definition at line 25 of file KisTagFilterResourceProxyModel.h.

Constructor & Destructor Documentation

◆ KisTagFilterResourceProxyModel()

KisTagFilterResourceProxyModel::KisTagFilterResourceProxyModel ( const QString & resourceType,
QObject * parent = 0 )

Definition at line 43 of file KisTagFilterResourceProxyModel.cpp.

44 : QSortFilterProxyModel(parent)
45 , d(new Private)
46{
47 d->resourceType = resourceType;
48 d->resourceModel = new KisResourceModel(resourceType);
49 d->tagResourceModel = new KisTagResourceModel(resourceType);
50
51 setSourceModel(d->resourceModel);
52}
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
The KisTagResourceModel class makes it possible to retrieve the resources for certain tags or the tag...

References d, KisTagFilterResourceProxyModel::Private::resourceModel, KisTagFilterResourceProxyModel::Private::resourceType, and KisTagFilterResourceProxyModel::Private::tagResourceModel.

◆ ~KisTagFilterResourceProxyModel()

KisTagFilterResourceProxyModel::~KisTagFilterResourceProxyModel ( )
override

Member Function Documentation

◆ additionalResourceNameChecks()

bool KisTagFilterResourceProxyModel::additionalResourceNameChecks ( const QModelIndex & index,
const KisResourceSearchBoxFilter * filter ) const
virtual

additionalResourceNameChecks Some resources, like fonts, have multiple names that need to be tested. Implementers should override this function if they want additional checks on the name.

Parameters
resourcethe resource index to test, this is provided by the model while testing each row.
filter,thisis the class that handles tokenisation, also provided by the model.
Returns
should return whether the current resource should be accepted by the given filter.

Reimplemented in FontFamilyTagFilterModel.

Definition at line 216 of file KisTagFilterResourceProxyModel.cpp.

217{
218 Q_UNUSED(index)
219 Q_UNUSED(filter)
220 return false;
221}

◆ addResource()

bool KisTagFilterResourceProxyModel::addResource ( KoResourceSP resource,
const QString & storageId = QString() )
overridevirtual

addResource adds the given resource to the database and storage. If the resource already exists in the given storage with md5, filename or name, the existing resource will be updated instead. If the existing resource was inactive, it will be active (undeleted).

Parameters
resourcethe resource itself
storageIdthe id of the storage (could be "memory" for temporary resources, the document's storage id for document storages or empty to save to the default resources folder
Returns
true if adding the resource succeeded.

Implements KisAbstractResourceModel.

Definition at line 162 of file KisTagFilterResourceProxyModel.cpp.

163{
164 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
165 if (source) {
166 return source->addResource(resource, storageId);
167 }
168 return false;
169}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)

References source().

◆ addResourceDeduplicateFileName()

bool KisTagFilterResourceProxyModel::addResourceDeduplicateFileName ( KoResourceSP resource,
const QString & storageId = QString() )
overridevirtual

addResource adds the given resource to the database and storage. If the resource already exists in the given storage with the same filename, the resource will be renamed.

Parameters
resourcethe resource itself
storageIdthe id of the storage (could be "memory" for temporary resources, the document's storage id for document storages or empty to save to the default resources folder
Returns
true if adding the resource succeeded.

Implements KisAbstractResourceModel.

Definition at line 171 of file KisTagFilterResourceProxyModel.cpp.

172{
173 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
174 if (source) {
175 return source->addResourceDeduplicateFileName(resource, storageId);
176 }
177 return false;
178}

References source().

◆ afterFilterChanged

void KisTagFilterResourceProxyModel::afterFilterChanged ( )
signal

◆ beforeFilterChanges

void KisTagFilterResourceProxyModel::beforeFilterChanges ( )
signal

◆ currentTagFilter()

KisTagSP KisTagFilterResourceProxyModel::currentTagFilter ( ) const

currentTagFilter

Returns
return the current tag that's being used to filter.

Definition at line 237 of file KisTagFilterResourceProxyModel.cpp.

References KisTagFilterResourceProxyModel::Private::currentTagFilter, and d.

◆ exportResource()

bool KisTagFilterResourceProxyModel::exportResource ( KoResourceSP resource,
QIODevice * device )
overridevirtual

exportResource exports a resource into a QIODevice

Exporting a resource as a binary blob is the only way to guarantee that its MD5 checksum is kept persistent. The underlying storage will just copy bytes into the device without doing any conversions

Parameters
resourcethe resource to be exported
devicedevice where the resource should be written to
Returns
true if export operation has been successful

Implements KisAbstractResourceModel.

Definition at line 152 of file KisTagFilterResourceProxyModel.cpp.

153{
154 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
155 bool res = false;
156 if (source) {
157 res = source->exportResource(resource, device);
158 }
159 return res;
160}

References source().

◆ filterAcceptsColumn()

bool KisTagFilterResourceProxyModel::filterAcceptsColumn ( int source_column,
const QModelIndex & source_parent ) const
overrideprotected

Definition at line 351 of file KisTagFilterResourceProxyModel.cpp.

352{
353 return true;
354}

◆ filterAcceptsRow()

bool KisTagFilterResourceProxyModel::filterAcceptsRow ( int source_row,
const QModelIndex & source_parent ) const
overrideprotected

Definition at line 356 of file KisTagFilterResourceProxyModel.cpp.

357{
358 // if both filters are empty, just accept everything
359 if (d->filter->isEmpty() && d->metaDataMapFilter.isEmpty() && !d->useStorageIdFilter) {
360 return true;
361 }
362
363 // If there's a tag set to filter on, we use the tagResourceModel, so that already filters for the tag
364 // Here, we only have to filter by the search string.
365 QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
366
367 if (!idx.isValid()) {
368 return false;
369 }
370
371 // checking the storage filter
372 if (d->useStorageIdFilter) {
373 int storageId = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::StorageId).toInt();
374 if (storageId != d->storageId) {
375 return false;
376 }
377 }
378
380 const int resourceId = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Id).toInt();
381 Q_FOREACH(const QString &key, d->metaDataMapFilter.keys()) {
382 const QVariant value = metaDataModel->metaDataValue(resourceId, key);
383 if (value.isValid() && value != d->metaDataMapFilter[key]) {
384 return false;
385 }
386 }
387
388 QString resourceName = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Name).toString();
389 if (sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::ResourceType).toString() == ResourceType::PaintOpPresets) {
390 resourceName = resourceName.replace("_", " ");
391 }
392 QStringList resourceTags = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Tags).toStringList();
393 bool resourceNameMatches = d->filter->matchesResource(resourceName, resourceTags);
394 if (!resourceNameMatches) {
395 resourceNameMatches = additionalResourceNameChecks(idx, d->filter.data());
396 }
397
398
399 return resourceNameMatches;
400}
float value(const T *src, size_t ch)
QVariant metaDataValue(int resourceId, const QString &key)
static KisResourceMetaDataModel * resourceMetadataModel()
virtual bool additionalResourceNameChecks(const QModelIndex &index, const KisResourceSearchBoxFilter *filter) const
additionalResourceNameChecks Some resources, like fonts, have multiple names that need to be tested....
QString toString(const QString &value)
const QString PaintOpPresets
QScopedPointer< KisResourceSearchBoxFilter > filter

References additionalResourceNameChecks(), d, KisTagFilterResourceProxyModel::Private::filter, KisAbstractResourceModel::Id, KisTagFilterResourceProxyModel::Private::metaDataMapFilter, KisResourceMetaDataModel::metaDataValue(), KisAbstractResourceModel::Name, ResourceType::PaintOpPresets, KisResourceModelProvider::resourceMetadataModel(), KisAbstractResourceModel::ResourceType, KisAbstractResourceModel::StorageId, KisTagFilterResourceProxyModel::Private::storageId, KisAbstractResourceModel::Tags, KisTagFilterResourceProxyModel::Private::useStorageIdFilter, and value().

◆ filterInCurrentTag()

bool KisTagFilterResourceProxyModel::filterInCurrentTag ( ) const

◆ importResource()

KoResourceSP KisTagFilterResourceProxyModel::importResource ( const QString & filename,
QIODevice * device,
const bool allowOverwrite,
const QString & storageId = QString() )
overridevirtual

importResource imports a resource from a QIODevice

Importing a resource from a binary blob is the only way to guarantee that its MD5 checksum is kept persistent. The underlying storage will just copy bytes into its location.

Parameters
filenamefile name of the resource if preset. File name may be used for addressing the resource, so it is usually preferred to preserve it.
devicedevice where the resource should be read from
Returns
the loaded resource object

Implements KisAbstractResourceModel.

Definition at line 136 of file KisTagFilterResourceProxyModel.cpp.

137{
138 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
139 KoResourceSP res;
140 if (source) {
141 res = source->importResource(filename, device, allowOverwrite, storageId);
142 }
143 return res;
144}

References source().

◆ importResourceFile()

KoResourceSP KisTagFilterResourceProxyModel::importResourceFile ( const QString & filename,
const bool allowOverwrite,
const QString & storageId = QString() )
overridevirtual

importResourceFile

Parameters
filename
Returns

Implements KisAbstractResourceModel.

Definition at line 126 of file KisTagFilterResourceProxyModel.cpp.

127{
128 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
129 KoResourceSP res;
130 if (source) {
131 res = source->importResourceFile(filename, allowOverwrite, storageId);
132 }
133 return res;
134}

References source().

◆ importWillOverwriteResource()

bool KisTagFilterResourceProxyModel::importWillOverwriteResource ( const QString & fileName,
const QString & storageLocation ) const
overridevirtual

importWillOverwriteResource checks is importing a resource with this filename will overwrite anything

If this function returns true, then importResource() is guaranteed to fail with 'allowOverwrite' set to false.

Parameters
filenamefile name of the resource if preset. File name may be used for addressing the resource, so it is usually preferred to preserve it.
Returns
true if the some existing will be overwritten while importing

Implements KisAbstractResourceModel.

Definition at line 146 of file KisTagFilterResourceProxyModel.cpp.

147{
148 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
149 return source && source->importWillOverwriteResource(fileName, storageLocation);
150}

References source().

◆ indexForResource()

QModelIndex KisTagFilterResourceProxyModel::indexForResource ( KoResourceSP resource) const
overridevirtual

indexFromResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 93 of file KisTagFilterResourceProxyModel.cpp.

94{
95 if (!resource || !resource->valid() || resource->resourceId() < 0) return QModelIndex();
96
97 for (int i = 0; i < rowCount(); ++i) {
98 QModelIndex idx = index(i, 0);
99 Q_ASSERT(idx.isValid());
100 if (idx.data() == resource->resourceId()) {
101 return idx;
102 }
103 }
104 return QModelIndex();
105}

◆ indexForResourceId()

QModelIndex KisTagFilterResourceProxyModel::indexForResourceId ( int resourceId) const
overridevirtual

indexFromResource

Parameters
resourceIdresource id for which we want to get an index
Returns

Implements KisAbstractResourceModel.

Definition at line 107 of file KisTagFilterResourceProxyModel.cpp.

108{
109 if (resourceId < 0) return QModelIndex();
110 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
111 if (source) {
112 return mapFromSource(source->indexForResourceId(resourceId));
113 }
114 return QModelIndex();
115}

References source().

◆ isResourceTagged()

int KisTagFilterResourceProxyModel::isResourceTagged ( const KisTagSP tag,
const int resourceId )

Definition at line 346 of file KisTagFilterResourceProxyModel.cpp.

347{
348 return d->tagResourceModel->isResourceTagged(tag, resourceId);
349}
int isResourceTagged(const KisTagSP tag, const int resourceId) override
isResourceTagged

References d, KisTagResourceModel::isResourceTagged(), and KisTagFilterResourceProxyModel::Private::tagResourceModel.

◆ lessThan()

bool KisTagFilterResourceProxyModel::lessThan ( const QModelIndex & source_left,
const QModelIndex & source_right ) const
overrideprotected

Definition at line 402 of file KisTagFilterResourceProxyModel.cpp.

403{
404 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAbstractResourceModel::Name).toString();
405 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAbstractResourceModel::Name).toString();
406 return nameLeft.toLower() < nameRight.toLower();
407}

References KisAbstractResourceModel::Name.

◆ reloadResource()

bool KisTagFilterResourceProxyModel::reloadResource ( KoResourceSP resource)
overridevirtual

reloadResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 189 of file KisTagFilterResourceProxyModel.cpp.

190{
191 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
192 if (source) {
193 return source->reloadResource(resource);
194 }
195 return false;
196}

References source().

◆ renameResource()

bool KisTagFilterResourceProxyModel::renameResource ( KoResourceSP resource,
const QString & name )
overridevirtual

renameResource name the given resource. The resource will have its name field reset, will be saved to the storage and there will be a new version created in the database.

Parameters
resourceThe resource to rename
nameThe new name
Returns
true if the operation succeeded.

Implements KisAbstractResourceModel.

Definition at line 198 of file KisTagFilterResourceProxyModel.cpp.

199{
200 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
201 if (source) {
202 return source->renameResource(resource, name);
203 }
204 return false;
205}

References source().

◆ resourceForIndex()

KoResourceSP KisTagFilterResourceProxyModel::resourceForIndex ( QModelIndex index = QModelIndex()) const
overridevirtual

resourceForIndex returns a properly versioned and id'ed resource object

Implements KisAbstractResourceModel.

Definition at line 84 of file KisTagFilterResourceProxyModel.cpp.

85{
86 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
87 if (source) {
88 return source->resourceForIndex(mapToSource(index));
89 }
90 return 0;
91}

References source().

◆ setFilterInCurrentTag()

◆ setMetaDataFilter()

void KisTagFilterResourceProxyModel::setMetaDataFilter ( QMap< QString, QVariant > metaDataMap)

setMetaDataFilter provides a set of metadata to filter on, for instance by paintop id category.

Parameters
metaDataMap

Definition at line 223 of file KisTagFilterResourceProxyModel.cpp.

224{
225 Q_EMIT beforeFilterChanges();
226 d->metaDataMapFilter = metaDataMap;
227 invalidateFilter();
228 Q_EMIT afterFilterChanged();
229}

References afterFilterChanged(), beforeFilterChanges(), d, and KisTagFilterResourceProxyModel::Private::metaDataMapFilter.

◆ setResourceActive()

bool KisTagFilterResourceProxyModel::setResourceActive ( const QModelIndex & index,
bool value )
overridevirtual

setResourceActive changes 'active' state of the resource

Parameters
indexthe index of the resource
valuenew 'active' state of the resource
Returns
true if the new state has been assigned successfully

Implements KisAbstractResourceModel.

Definition at line 117 of file KisTagFilterResourceProxyModel.cpp.

118{
119 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
120 if (source) {
121 return source->setResourceActive(mapToSource(index), value);
122 }
123 return false;
124}

References source(), and value().

◆ setResourceFilter() [1/2]

void KisTagFilterResourceProxyModel::setResourceFilter ( const KoResourceSP resource)

setResourceFilter sets the resource to filter with

Parameters
resourcea valid resource with a valid id, or 0 to clear the filter

Definition at line 313 of file KisTagFilterResourceProxyModel.cpp.

References KisTagFilterResourceProxyModel::Private::currentResourceFilter, d, and updateTagFilter().

◆ setResourceFilter() [2/2]

void KisTagFilterResourceProxyModel::setResourceFilter ( ResourceFilter filter)
overridevirtual

◆ setResourceMetaData()

bool KisTagFilterResourceProxyModel::setResourceMetaData ( KoResourceSP resource,
QMap< QString, QVariant > metadata )
overridevirtual

setResourceMetaData

Parameters
metadata
Returns

Implements KisAbstractResourceModel.

Definition at line 207 of file KisTagFilterResourceProxyModel.cpp.

208{
209 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
210 if (source) {
211 return source->setResourceMetaData(resource, metadata);
212 }
213 return false;
214}

References source().

◆ setResourceModel()

void KisTagFilterResourceProxyModel::setResourceModel ( KisResourceModel * resourceModel)

Definition at line 79 of file KisTagFilterResourceProxyModel.cpp.

80{
81 d->resourceModel = resourceModel;
82}

References d, and KisTagFilterResourceProxyModel::Private::resourceModel.

◆ setSearchText()

void KisTagFilterResourceProxyModel::setSearchText ( const QString & searchText)

Definition at line 319 of file KisTagFilterResourceProxyModel.cpp.

320{
321 d->filter->setFilter(searchText);
323}

References d, KisTagFilterResourceProxyModel::Private::filter, and updateTagFilter().

◆ setStorageFilter() [1/2]

void KisTagFilterResourceProxyModel::setStorageFilter ( bool useFilter,
int storageId )

Definition at line 242 of file KisTagFilterResourceProxyModel.cpp.

243{
244 Q_EMIT beforeFilterChanges();
245 d->useStorageIdFilter = useFilter;
246 if (useFilter) {
247 d->storageId = storageId;
248 }
249 invalidateFilter();
250 Q_EMIT afterFilterChanged();
251}

References afterFilterChanged(), beforeFilterChanges(), d, KisTagFilterResourceProxyModel::Private::storageId, and KisTagFilterResourceProxyModel::Private::useStorageIdFilter.

◆ setStorageFilter() [2/2]

void KisTagFilterResourceProxyModel::setStorageFilter ( StorageFilter filter)
overridevirtual

◆ setTagFilter()

void KisTagFilterResourceProxyModel::setTagFilter ( const KisTagSP tag)

setTagFilter sets the tag to filter with

Parameters
taga valid tag with a valid id, or 0 to clear the filter

Definition at line 231 of file KisTagFilterResourceProxyModel.cpp.

232{
233 d->currentTagFilter = tag;
235}

References KisTagFilterResourceProxyModel::Private::currentTagFilter, d, and updateTagFilter().

◆ tagResources()

bool KisTagFilterResourceProxyModel::tagResources ( const KisTagSP tag,
const QVector< int > & resourceIds )

Definition at line 336 of file KisTagFilterResourceProxyModel.cpp.

337{
338 return d->tagResourceModel->tagResources(tag, resourceIds);
339}
bool tagResources(const KisTagSP tag, const QVector< int > &resourceIds) override

References d, KisTagFilterResourceProxyModel::Private::tagResourceModel, and KisTagResourceModel::tagResources().

◆ untagResources()

bool KisTagFilterResourceProxyModel::untagResources ( const KisTagSP tag,
const QVector< int > & resourceIds )

Definition at line 341 of file KisTagFilterResourceProxyModel.cpp.

342{
343 return d->tagResourceModel->untagResources(tag, resourceIds);
344}
bool untagResources(const KisTagSP tag, const QVector< int > &resourceIds) override

References d, KisTagFilterResourceProxyModel::Private::tagResourceModel, and KisTagResourceModel::untagResources().

◆ updateResource()

bool KisTagFilterResourceProxyModel::updateResource ( KoResourceSP resource)
overridevirtual

updateResource creates a new version of the resource in the storage and in the database. This will also set the resource to active if it was inactive.

Note: if the storage does not support versioning, updating the resource will fail.

Parameters
resource
Returns
true if the resource was successful updated,

Implements KisAbstractResourceModel.

Definition at line 180 of file KisTagFilterResourceProxyModel.cpp.

181{
182 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
183 if (source) {
184 return source->updateResource(resource);
185 }
186 return false;
187}

References source().

◆ updateTagFilter()

void KisTagFilterResourceProxyModel::updateTagFilter ( )
private

Definition at line 253 of file KisTagFilterResourceProxyModel.cpp.

254{
255 Q_EMIT beforeFilterChanges();
256 const bool ignoreTagFiltering =
257 !d->filteringWithinCurrentTag && !d->filter->isEmpty();
258
259 QAbstractItemModel *desiredModel = 0;
260
262 QVector<KisTagSP> filter;
263
264 if (d->currentTagFilter &&
265 !ignoreTagFiltering &&
268
269 filter << d->currentTagFilter;
270 } else {
271 // combination with for untagged resources in not implemented
272 // in KisTagResourceModel
275 }
276
279 desiredModel = d->tagResourceModel;
280
281 } else {
283 if (ignoreTagFiltering ||
286
288 desiredModel = d->resourceModel;
290 }
291 else {
293 desiredModel = d->resourceModel;
295 }
296 else {
297 desiredModel = d->tagResourceModel;
299 }
300 }
301 }
302
303 // TODO: when model changes the current selection in the
304 // view disappears. We should try to keep it somehow.
305 if (sourceModel() != desiredModel) {
306 setSourceModel(desiredModel);
307 }
308
309 invalidateFilter();
310 Q_EMIT afterFilterChanged();
311}
static QString urlAll()
Definition KisTagModel.h:92
static QString urlAllUntagged()
Definition KisTagModel.h:93
void showOnlyUntaggedResources(bool showOnlyUntagged)
void setTagsFilter(const QVector< int > tagIds)
void setResourcesFilter(const QVector< int > resourceIds)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130

References afterFilterChanged(), beforeFilterChanges(), KisTagFilterResourceProxyModel::Private::currentResourceFilter, KisTagFilterResourceProxyModel::Private::currentTagFilter, d, KisTagFilterResourceProxyModel::Private::filter, KisTagFilterResourceProxyModel::Private::filteringWithinCurrentTag, KIS_SAFE_ASSERT_RECOVER_NOOP, KisTagFilterResourceProxyModel::Private::resourceModel, KisTagResourceModel::setResourcesFilter(), KisTagResourceModel::setTagsFilter(), KisResourceModel::showOnlyUntaggedResources(), KisTagFilterResourceProxyModel::Private::tagResourceModel, KisAllTagsModel::urlAll(), and KisAllTagsModel::urlAllUntagged().

Member Data Documentation

◆ d

Private* const KisTagFilterResourceProxyModel::d
private

Definition at line 124 of file KisTagFilterResourceProxyModel.h.


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