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

The KisTagResourceModel class makes it possible to retrieve the resources for certain tags or the tags for certain resources. If the filter for tags or resources is empty, all tags or resources that match for the active/inactive/all filters will match. More...

#include <KisTagResourceModel.h>

+ Inheritance diagram for KisTagResourceModel:

Classes

struct  Private
 

Public Types

enum  TagFilter { ShowInactiveTags = 0 , ShowActiveTags , ShowAllTags }
 
- 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 }
 

Public Member Functions

bool addResource (KoResourceSP resource, const QString &storageId) 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) 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.
 
bool exportResource (KoResourceSP resource, QIODevice *device) override
 exportResource exports a resource into a QIODevice
 
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
 
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) override
 isResourceTagged
 
 KisTagResourceModel (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) const override
 resourceForIndex returns a properly versioned and id'ed resource object
 
QHash< int, QByteArray > roleNames () const override
 
bool setResourceActive (const QModelIndex &index, bool value) override
 setResourceActive changes 'active' state of the resource
 
void setResourceFilter (ResourceFilter filter) override
 
bool setResourceMetaData (KoResourceSP resource, QMap< QString, QVariant > metadata) override
 setResourceMetaData
 
void setResourcesFilter (const QVector< int > resourceIds)
 
void setResourcesFilter (const QVector< KoResourceSP > resources)
 
void setStorageFilter (StorageFilter filter) override
 
void setTagFilter (TagFilter filter)
 
void setTagsFilter (const QVector< int > tagIds)
 
void setTagsFilter (const QVector< KisTagSP > tags)
 
bool tagResources (const KisTagSP tag, const QVector< int > &resourceIds) override
 
bool untagResources (const KisTagSP tag, const QVector< int > &resourceIds) override
 
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.
 
 ~KisTagResourceModel () override
 
- Public Member Functions inherited from KisAbstractTagResourceModel
virtual ~KisAbstractTagResourceModel ()
 
- Public Member Functions inherited from KisAbstractResourceModel
bool setResourceInactive (const QModelIndex &index)
 
virtual ~KisAbstractResourceModel ()
 
- Public Member Functions inherited from KisAbstractResourceFilterInterface
virtual ~KisAbstractResourceFilterInterface ()
 

Protected Slots

void storageChanged (const QString &location)
 

Protected Member Functions

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

Private Attributes

Private *const d
 

Detailed Description

The KisTagResourceModel class makes it possible to retrieve the resources for certain tags or the tags for certain resources. If the filter for tags or resources is empty, all tags or resources that match for the active/inactive/all filters will match.

Definition at line 105 of file KisTagResourceModel.h.

Member Enumeration Documentation

◆ TagFilter

Enumerator
ShowInactiveTags 
ShowActiveTags 
ShowAllTags 

Definition at line 119 of file KisTagResourceModel.h.

Constructor & Destructor Documentation

◆ KisTagResourceModel()

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

Definition at line 750 of file KisTagResourceModel.cpp.

751 : QSortFilterProxyModel(parent)
752 , d(new Private())
753{
754 d->resourceType = resourceType;
756 setSourceModel(d->sourceModel);
757
758 connect(KisResourceLocator::instance(), SIGNAL(storageAdded(const QString &)), this, SLOT(storageChanged(const QString &)));
759 connect(KisResourceLocator::instance(), SIGNAL(storageRemoved(const QString &)), this, SLOT(storageChanged(const QString &)));
760 connect(KisStorageModel::instance(), SIGNAL(storageEnabled(const QString &)), this, SLOT(storageChanged(const QString &)));
761 connect(KisStorageModel::instance(), SIGNAL(storageDisabled(const QString &)), this, SLOT(storageChanged(const QString &)));
762}
static KisResourceLocator * instance()
static KisAllTagResourceModel * tagResourceModel(const QString &resourceType)
static KisStorageModel * instance()
void storageChanged(const QString &location)
KisAllTagResourceModel * sourceModel

References d, KisResourceLocator::instance(), KisStorageModel::instance(), KisTagResourceModel::Private::resourceType, KisTagResourceModel::Private::sourceModel, storageChanged(), and KisResourceModelProvider::tagResourceModel().

◆ ~KisTagResourceModel()

KisTagResourceModel::~KisTagResourceModel ( )
override

Definition at line 764 of file KisTagResourceModel.cpp.

765{
766 delete d;
767}

References d.

Member Function Documentation

◆ addResource()

bool KisTagResourceModel::addResource ( KoResourceSP resource,
const QString & storageId )
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 955 of file KisTagResourceModel.cpp.

956{
957 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
958 // because the resource is untagged.
959 KisResourceModel resourceModel(d->resourceType);
960 return resourceModel.addResource(resource, storageId);
961}
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...

References KisResourceModel::addResource(), d, and KisTagResourceModel::Private::resourceType.

◆ addResourceDeduplicateFileName()

bool KisTagResourceModel::addResourceDeduplicateFileName ( KoResourceSP resource,
const QString & storageId )
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 963 of file KisTagResourceModel.cpp.

964{
965 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
966 // because the resource is untagged.
967 KisResourceModel resourceModel(d->resourceType);
968 return resourceModel.addResourceDeduplicateFileName(resource, storageId);
969}

References KisResourceModel::addResourceDeduplicateFileName(), d, and KisTagResourceModel::Private::resourceType.

◆ exportResource()

bool KisTagResourceModel::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 949 of file KisTagResourceModel.cpp.

950{
951 KisResourceModel resourceModel(d->resourceType);
952 return resourceModel.exportResource(resource, device);
953}

References d, KisResourceModel::exportResource(), and KisTagResourceModel::Private::resourceType.

◆ filterAcceptsRow()

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

Definition at line 837 of file KisTagResourceModel.cpp.

838{
839 QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
840 if (!idx.isValid()) return false;
841
842 int tagId = idx.data(Qt::UserRole + KisAllTagResourceModel::TagId).toInt();
843 int resourceId = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt();
844 bool tagActive = idx.data(Qt::UserRole + KisAllTagResourceModel::TagActive).toBool();
845 bool resourceActive = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceActive).toBool();
846 bool resourceStorageActive = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceStorageActive).toBool();
847
849 return ((d->tagIds.contains(tagId) || d->tagIds.isEmpty()) &&
850 (d->resourceIds.contains(resourceId) || d->resourceIds.isEmpty()));
851 }
852
853 if ((d->tagFilter == ShowActiveTags && !tagActive)
854 || (d->tagFilter == ShowInactiveTags && tagActive)) {
855 return false;
856 }
857
858 if ((d->resourceFilter == ShowActiveResources && !resourceActive)
859 || (d->resourceFilter == ShowInactiveResources && resourceActive)) {
860 return false;
861 }
862
863 if ((d->storageFilter == ShowActiveStorages && !resourceStorageActive)
864 || (d->storageFilter == ShowInactiveStorages && resourceStorageActive)) {
865 return false;
866 }
867
868 return ((d->tagIds.contains(tagId) || d->tagIds.isEmpty())
869 && (d->resourceIds.contains(resourceId) || d->resourceIds.isEmpty()));
870}

References d, KisAllTagResourceModel::ResourceActive, KisTagResourceModel::Private::resourceFilter, KisAllTagResourceModel::ResourceId, KisTagResourceModel::Private::resourceIds, KisAllTagResourceModel::ResourceStorageActive, KisAbstractResourceFilterInterface::ShowActiveResources, KisAbstractResourceFilterInterface::ShowActiveStorages, ShowActiveTags, KisAbstractResourceFilterInterface::ShowAllResources, KisAbstractResourceFilterInterface::ShowAllStorages, ShowAllTags, KisAbstractResourceFilterInterface::ShowInactiveResources, KisAbstractResourceFilterInterface::ShowInactiveStorages, ShowInactiveTags, KisTagResourceModel::Private::storageFilter, KisAllTagResourceModel::TagActive, KisTagResourceModel::Private::tagFilter, KisAllTagResourceModel::TagId, and KisTagResourceModel::Private::tagIds.

◆ headerData()

QVariant KisTagResourceModel::headerData ( int section,
Qt::Orientation orientation,
int role = Qt::DisplayRole ) const
override

Definition at line 1025 of file KisTagResourceModel.cpp.

1026{
1027 return d->sourceModel->headerData(section, orientation, role);
1028}
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override

References d, KisAllTagResourceModel::headerData(), and KisTagResourceModel::Private::sourceModel.

◆ importResource()

KoResourceSP KisTagResourceModel::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 935 of file KisTagResourceModel.cpp.

936{
937 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
938 // because the resource is untagged.
939 KisResourceModel resourceModel(d->resourceType);
940 return resourceModel.importResource(filename, device, allowOverwrite, storageId);
941}

References d, KisResourceModel::importResource(), and KisTagResourceModel::Private::resourceType.

◆ importResourceFile()

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

importResourceFile

Parameters
filename
Returns

Implements KisAbstractResourceModel.

Definition at line 927 of file KisTagResourceModel.cpp.

928{
929 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
930 // because the resource is untagged.
931 KisResourceModel resourceModel(d->resourceType);
932 return resourceModel.importResourceFile(filename, allowOverwrite, storageId);
933}

References d, KisResourceModel::importResourceFile(), and KisTagResourceModel::Private::resourceType.

◆ importWillOverwriteResource()

bool KisTagResourceModel::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 943 of file KisTagResourceModel.cpp.

944{
945 KisResourceModel resourceModel(d->resourceType);
946 return resourceModel.importWillOverwriteResource(fileName, storageLocation);
947}

References d, KisResourceModel::importWillOverwriteResource(), and KisTagResourceModel::Private::resourceType.

◆ indexForResource()

QModelIndex KisTagResourceModel::indexForResource ( KoResourceSP resource) const
overridevirtual

indexFromResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 893 of file KisTagResourceModel.cpp.

894{
895 if (!resource || !resource->valid() || resource->resourceId() < 0) return QModelIndex();
896
897 for (int i = 0; i < rowCount(); ++i) {
898 QModelIndex idx = index(i, Qt::UserRole + KisAllTagResourceModel::ResourceId);
899 Q_ASSERT(idx.isValid());
900 if (idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt() == resource->resourceId()) {
901 return idx;
902 }
903 }
904 return QModelIndex();
905}

References KisAllTagResourceModel::ResourceId.

◆ indexForResourceId()

QModelIndex KisTagResourceModel::indexForResourceId ( int resourceId) const
overridevirtual

indexFromResource

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

Implements KisAbstractResourceModel.

Definition at line 907 of file KisTagResourceModel.cpp.

908{
909 if (resourceId < 0) return QModelIndex();
910 for (int i = 0; i < rowCount(); ++i) {
911 QModelIndex idx = index(i, Qt::UserRole + KisAllTagResourceModel::ResourceId);
912 Q_ASSERT(idx.isValid());
913 if (idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt() == resourceId) {
914 return idx;
915 }
916 }
917 return QModelIndex();
918}

References KisAllTagResourceModel::ResourceId.

◆ isResourceTagged()

int KisTagResourceModel::isResourceTagged ( const KisTagSP tag,
const int resourceId )
overridevirtual

isResourceTagged

Parameters
tagthe tag to check
resourceIdthe id of the resource to check
Returns
-1 if the resource was never tagged before, 0 if the resource was tagged, but then untagged, 1 if the resource is already tagged

Implements KisAbstractTagResourceModel.

Definition at line 798 of file KisTagResourceModel.cpp.

799{
800 return d->sourceModel->isResourceTagged(tag, resourceId);
801}
int isResourceTagged(const KisTagSP tag, const int resourceId) override
isResourceTagged

References d, KisAllTagResourceModel::isResourceTagged(), and KisTagResourceModel::Private::sourceModel.

◆ lessThan()

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

Definition at line 872 of file KisTagResourceModel.cpp.

873{
874 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAllTagResourceModel::ResourceName).toString();
875 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAllTagResourceModel::ResourceName).toString();
876 return nameLeft.toLower() < nameRight.toLower();
877}

References KisAllTagResourceModel::ResourceName.

◆ reloadResource()

bool KisTagResourceModel::reloadResource ( KoResourceSP resource)
overridevirtual

reloadResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 985 of file KisTagResourceModel.cpp.

986{
987 KisResourceModel resourceModel(d->resourceType);
988 bool r = resourceModel.reloadResource(resource);
989 if (r) {
990 QModelIndex index = indexForResource(resource);
991 if (index.isValid()) {
992 Q_EMIT dataChanged(index, index, {Qt::EditRole});
993 }
994 }
995 return r;
996}
QModelIndex indexForResource(KoResourceSP resource) const override
indexFromResource

References d, indexForResource(), KisResourceModel::reloadResource(), and KisTagResourceModel::Private::resourceType.

◆ renameResource()

bool KisTagResourceModel::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 998 of file KisTagResourceModel.cpp.

999{
1000 KisResourceModel resourceModel(d->resourceType);
1001 bool r = resourceModel.renameResource(resource, name);
1002 if (r) {
1003 QModelIndex index = indexForResource(resource);
1004 if (index.isValid()) {
1005 Q_EMIT dataChanged(index, index, {Qt::EditRole});
1006 }
1007 }
1008 return r;
1009}

References d, indexForResource(), KisResourceModel::renameResource(), and KisTagResourceModel::Private::resourceType.

◆ resourceForIndex()

KoResourceSP KisTagResourceModel::resourceForIndex ( QModelIndex index) const
overridevirtual

resourceForIndex returns a properly versioned and id'ed resource object

Implements KisAbstractResourceModel.

Definition at line 885 of file KisTagResourceModel.cpp.

886{
887 int id = data(index, Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt();
888 if (id < 1) return nullptr;
890 return res;
891}
KoResourceSP resourceForId(int resourceId)
resourceForId returns the resource with the given id, or 0 if no such resource exists....

References KisResourceLocator::instance(), KisResourceLocator::resourceForId(), and KisAllTagResourceModel::ResourceId.

◆ roleNames()

QHash< int, QByteArray > KisTagResourceModel::roleNames ( ) const
override

Definition at line 1017 of file KisTagResourceModel.cpp.

1018{
1019 if (sourceModel()) {
1020 return sourceModel()->roleNames();
1021 }
1022 return QAbstractItemModel::roleNames();
1023}

◆ setResourceActive()

bool KisTagResourceModel::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 920 of file KisTagResourceModel.cpp.

921{
922 KisResourceModel resourceModel(d->resourceType);
923 QModelIndex idx = resourceModel.indexForResource(resourceForIndex(index));
924 return resourceModel.setResourceActive(idx, value);
925}
float value(const T *src, size_t ch)
KoResourceSP resourceForIndex(QModelIndex index) const override
resourceForIndex returns a properly versioned and id'ed resource object

References d, KisResourceModel::indexForResource(), resourceForIndex(), KisTagResourceModel::Private::resourceType, KisResourceModel::setResourceActive(), and value().

◆ setResourceFilter()

void KisTagResourceModel::setResourceFilter ( ResourceFilter filter)
overridevirtual

Select status of the resources that should be shown

Implements KisAbstractResourceFilterInterface.

Definition at line 775 of file KisTagResourceModel.cpp.

776{
777 d->resourceFilter = filter;
778 invalidateFilter();
779}

References d, and KisTagResourceModel::Private::resourceFilter.

◆ setResourceMetaData()

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

setResourceMetaData

Parameters
metadata
Returns

Implements KisAbstractResourceModel.

Definition at line 1011 of file KisTagResourceModel.cpp.

1012{
1013 KisResourceModel resourceModel(d->resourceType);
1014 return resourceModel.setResourceMetaData(resource, metadata);
1015}

References d, KisTagResourceModel::Private::resourceType, and KisResourceModel::setResourceMetaData().

◆ setResourcesFilter() [1/2]

void KisTagResourceModel::setResourcesFilter ( const QVector< int > resourceIds)

Definition at line 809 of file KisTagResourceModel.cpp.

810{
811 d->resourceIds = resourceIds;
812 invalidateFilter();
813}

References d, and KisTagResourceModel::Private::resourceIds.

◆ setResourcesFilter() [2/2]

void KisTagResourceModel::setResourcesFilter ( const QVector< KoResourceSP > resources)

Definition at line 826 of file KisTagResourceModel.cpp.

827{
828 d->resourceIds.clear();
829 Q_FOREACH(const KoResourceSP resource, resources) {
830 if (resource->valid() && resource->resourceId() > -1) {
831 d->resourceIds << resource->resourceId();
832 }
833 }
834 invalidateFilter();
835}

References d, and KisTagResourceModel::Private::resourceIds.

◆ setStorageFilter()

void KisTagResourceModel::setStorageFilter ( StorageFilter filter)
overridevirtual

Select status of the storages that should be shown

Implements KisAbstractResourceFilterInterface.

Definition at line 781 of file KisTagResourceModel.cpp.

782{
783 d->storageFilter = filter;
784 invalidateFilter();
785}

References d, and KisTagResourceModel::Private::storageFilter.

◆ setTagFilter()

void KisTagResourceModel::setTagFilter ( KisTagResourceModel::TagFilter filter)

Definition at line 769 of file KisTagResourceModel.cpp.

770{
771 d->tagFilter = filter;
772 invalidateFilter();
773}

References d, and KisTagResourceModel::Private::tagFilter.

◆ setTagsFilter() [1/2]

void KisTagResourceModel::setTagsFilter ( const QVector< int > tagIds)

Definition at line 803 of file KisTagResourceModel.cpp.

804{
805 d->tagIds = tagIds;
806 invalidateFilter();
807}

References d, and KisTagResourceModel::Private::tagIds.

◆ setTagsFilter() [2/2]

void KisTagResourceModel::setTagsFilter ( const QVector< KisTagSP > tags)

Definition at line 815 of file KisTagResourceModel.cpp.

816{
817 d->tagIds.clear();
818 Q_FOREACH(const KisTagSP tag, tags) {
819 if (tag && tag->valid() && tag->id() > -1) {
820 d->tagIds << tag->id();
821 }
822 }
823 invalidateFilter();
824}

References d, and KisTagResourceModel::Private::tagIds.

◆ storageChanged

void KisTagResourceModel::storageChanged ( const QString & location)
protectedslot

Definition at line 879 of file KisTagResourceModel.cpp.

880{
881 Q_UNUSED(location);
882 invalidateFilter();
883}

◆ tagResources()

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

Implements KisAbstractTagResourceModel.

Definition at line 787 of file KisTagResourceModel.cpp.

788{
789 bool r = d->sourceModel->tagResources(tag, resourceIds);
790 return r;
791}
bool tagResources(const KisTagSP tag, const QVector< int > &resourceIds) override

References d, KisTagResourceModel::Private::sourceModel, and KisAllTagResourceModel::tagResources().

◆ untagResources()

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

Implements KisAbstractTagResourceModel.

Definition at line 793 of file KisTagResourceModel.cpp.

794{
795 return d->sourceModel->untagResources(tag, resourceIds);
796}
bool untagResources(const KisTagSP tag, const QVector< int > &resourceId) override

References d, KisTagResourceModel::Private::sourceModel, and KisAllTagResourceModel::untagResources().

◆ updateResource()

bool KisTagResourceModel::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 972 of file KisTagResourceModel.cpp.

973{
974 KisResourceModel resourceModel(d->resourceType);
975 bool r = resourceModel.updateResource(resource);
976 if (r) {
977 QModelIndex index = indexForResource(resource);
978 if (index.isValid()) {
979 Q_EMIT dataChanged(index, index, {Qt::EditRole});
980 }
981 }
982 return r;
983}

References d, indexForResource(), KisTagResourceModel::Private::resourceType, and KisResourceModel::updateResource().

Member Data Documentation

◆ d

Private* const KisTagResourceModel::d
private

Definition at line 171 of file KisTagResourceModel.h.


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