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).
 
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 207 of file KisTagFilterResourceProxyModel.cpp.

208{
209 Q_UNUSED(index)
210 Q_UNUSED(filter)
211 return false;
212}

◆ 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().

◆ 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 228 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 342 of file KisTagFilterResourceProxyModel.cpp.

343{
344 return true;
345}

◆ filterAcceptsRow()

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

Definition at line 347 of file KisTagFilterResourceProxyModel.cpp.

348{
349 // if both filters are empty, just accept everything
350 if (d->filter->isEmpty() && d->metaDataMapFilter.isEmpty() && !d->useStorageIdFilter) {
351 return true;
352 }
353
354 // If there's a tag set to filter on, we use the tagResourceModel, so that already filters for the tag
355 // Here, we only have to filter by the search string.
356 QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
357
358 if (!idx.isValid()) {
359 return false;
360 }
361
362 // checking the storage filter
363 if (d->useStorageIdFilter) {
364 int storageId = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::StorageId).toInt();
365 if (storageId != d->storageId) {
366 return false;
367 }
368 }
369
371 const int resourceId = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Id).toInt();
372 Q_FOREACH(const QString &key, d->metaDataMapFilter.keys()) {
373 const QVariant value = metaDataModel->metaDataValue(resourceId, key);
374 if (value.isValid() && value != d->metaDataMapFilter[key]) {
375 return false;
376 }
377 }
378
379 QString resourceName = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Name).toString();
380 if (sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::ResourceType).toString() == ResourceType::PaintOpPresets) {
381 resourceName = resourceName.replace("_", " ");
382 }
383 QStringList resourceTags = sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::Tags).toStringList();
384 bool resourceNameMatches = d->filter->matchesResource(resourceName, resourceTags);
385 if (!resourceNameMatches) {
386 resourceNameMatches = additionalResourceNameChecks(idx, d->filter.data());
387 }
388
389
390 return resourceNameMatches;
391}
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 337 of file KisTagFilterResourceProxyModel.cpp.

338{
339 return d->tagResourceModel->isResourceTagged(tag, resourceId);
340}
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 393 of file KisTagFilterResourceProxyModel.cpp.

394{
395 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAbstractResourceModel::Name).toString();
396 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAbstractResourceModel::Name).toString();
397 return nameLeft.toLower() < nameRight.toLower();
398}

References KisAbstractResourceModel::Name.

◆ reloadResource()

bool KisTagFilterResourceProxyModel::reloadResource ( KoResourceSP resource)
overridevirtual

reloadResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 180 of file KisTagFilterResourceProxyModel.cpp.

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

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 189 of file KisTagFilterResourceProxyModel.cpp.

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

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 214 of file KisTagFilterResourceProxyModel.cpp.

215{
216 Q_EMIT beforeFilterChanges();
217 d->metaDataMapFilter = metaDataMap;
218 invalidateFilter();
219 Q_EMIT afterFilterChanged();
220}

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 304 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 198 of file KisTagFilterResourceProxyModel.cpp.

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

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 310 of file KisTagFilterResourceProxyModel.cpp.

311{
312 d->filter->setFilter(searchText);
314}

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

◆ setStorageFilter() [1/2]

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

Definition at line 233 of file KisTagFilterResourceProxyModel.cpp.

234{
235 Q_EMIT beforeFilterChanges();
236 d->useStorageIdFilter = useFilter;
237 if (useFilter) {
238 d->storageId = storageId;
239 }
240 invalidateFilter();
241 Q_EMIT afterFilterChanged();
242}

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 222 of file KisTagFilterResourceProxyModel.cpp.

223{
224 d->currentTagFilter = tag;
226}

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

◆ tagResources()

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

Definition at line 327 of file KisTagFilterResourceProxyModel.cpp.

328{
329 return d->tagResourceModel->tagResources(tag, resourceIds);
330}
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 332 of file KisTagFilterResourceProxyModel.cpp.

333{
334 return d->tagResourceModel->untagResources(tag, resourceIds);
335}
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 171 of file KisTagFilterResourceProxyModel.cpp.

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

References source().

◆ updateTagFilter()

void KisTagFilterResourceProxyModel::updateTagFilter ( )
private

Definition at line 244 of file KisTagFilterResourceProxyModel.cpp.

245{
246 Q_EMIT beforeFilterChanges();
247 const bool ignoreTagFiltering =
248 !d->filteringWithinCurrentTag && !d->filter->isEmpty();
249
250 QAbstractItemModel *desiredModel = 0;
251
253 QVector<KisTagSP> filter;
254
255 if (d->currentTagFilter &&
256 !ignoreTagFiltering &&
259
260 filter << d->currentTagFilter;
261 } else {
262 // combination with for untagged resources in not implemented
263 // in KisTagResourceModel
266 }
267
270 desiredModel = d->tagResourceModel;
271
272 } else {
274 if (ignoreTagFiltering ||
277
279 desiredModel = d->resourceModel;
281 }
282 else {
284 desiredModel = d->resourceModel;
286 }
287 else {
288 desiredModel = d->tagResourceModel;
290 }
291 }
292 }
293
294 // TODO: when model changes the current selection in the
295 // view disappears. We should try to keep it somehow.
296 if (sourceModel() != desiredModel) {
297 setSourceModel(desiredModel);
298 }
299
300 invalidateFilter();
301 Q_EMIT afterFilterChanged();
302}
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 123 of file KisTagFilterResourceProxyModel.h.


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