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 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
 
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 104 of file KisTagResourceModel.h.

Member Enumeration Documentation

◆ TagFilter

Enumerator
ShowInactiveTags 
ShowActiveTags 
ShowAllTags 

Definition at line 118 of file KisTagResourceModel.h.

Constructor & Destructor Documentation

◆ KisTagResourceModel()

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

Definition at line 730 of file KisTagResourceModel.cpp.

731 : QSortFilterProxyModel(parent)
732 , d(new Private())
733{
734 d->resourceType = resourceType;
736 setSourceModel(d->sourceModel);
737
738 connect(KisResourceLocator::instance(), SIGNAL(storageAdded(const QString &)), this, SLOT(storageChanged(const QString &)));
739 connect(KisResourceLocator::instance(), SIGNAL(storageRemoved(const QString &)), this, SLOT(storageChanged(const QString &)));
740 connect(KisStorageModel::instance(), SIGNAL(storageEnabled(const QString &)), this, SLOT(storageChanged(const QString &)));
741 connect(KisStorageModel::instance(), SIGNAL(storageDisabled(const QString &)), this, SLOT(storageChanged(const QString &)));
742}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static KisResourceLocator * instance()
static KisAllTagResourceModel * tagResourceModel(const QString &resourceType)
static KisStorageModel * instance()
void storageChanged(const QString &location)
KisAllTagResourceModel * sourceModel

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

◆ ~KisTagResourceModel()

KisTagResourceModel::~KisTagResourceModel ( )
override

Definition at line 744 of file KisTagResourceModel.cpp.

745{
746 delete d;
747}

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 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.addResource(resource, storageId);
941}
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...

References KisResourceModel::addResource(), 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 929 of file KisTagResourceModel.cpp.

930{
931 KisResourceModel resourceModel(d->resourceType);
932 return resourceModel.exportResource(resource, device);
933}

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

◆ filterAcceptsRow()

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

Definition at line 817 of file KisTagResourceModel.cpp.

818{
819 QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
820 if (!idx.isValid()) return false;
821
822 int tagId = idx.data(Qt::UserRole + KisAllTagResourceModel::TagId).toInt();
823 int resourceId = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt();
824 bool tagActive = idx.data(Qt::UserRole + KisAllTagResourceModel::TagActive).toBool();
825 bool resourceActive = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceActive).toBool();
826 bool resourceStorageActive = idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceStorageActive).toBool();
827
829 return ((d->tagIds.contains(tagId) || d->tagIds.isEmpty()) &&
830 (d->resourceIds.contains(resourceId) || d->resourceIds.isEmpty()));
831 }
832
833 if ((d->tagFilter == ShowActiveTags && !tagActive)
834 || (d->tagFilter == ShowInactiveTags && tagActive)) {
835 return false;
836 }
837
838 if ((d->resourceFilter == ShowActiveResources && !resourceActive)
839 || (d->resourceFilter == ShowInactiveResources && resourceActive)) {
840 return false;
841 }
842
843 if ((d->storageFilter == ShowActiveStorages && !resourceStorageActive)
844 || (d->storageFilter == ShowInactiveStorages && resourceStorageActive)) {
845 return false;
846 }
847
848 return ((d->tagIds.contains(tagId) || d->tagIds.isEmpty())
849 && (d->resourceIds.contains(resourceId) || d->resourceIds.isEmpty()));
850}

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 988 of file KisTagResourceModel.cpp.

989{
990 return d->sourceModel->headerData(section, orientation, role);
991}
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 915 of file KisTagResourceModel.cpp.

916{
917 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
918 // because the resource is untagged.
919 KisResourceModel resourceModel(d->resourceType);
920 return resourceModel.importResource(filename, device, allowOverwrite, storageId);
921}

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 907 of file KisTagResourceModel.cpp.

908{
909 // Since we're importing the resource, there's no reason to add rows to the tags::resources table,
910 // because the resource is untagged.
911 KisResourceModel resourceModel(d->resourceType);
912 return resourceModel.importResourceFile(filename, allowOverwrite, storageId);
913}

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 923 of file KisTagResourceModel.cpp.

924{
925 KisResourceModel resourceModel(d->resourceType);
926 return resourceModel.importWillOverwriteResource(fileName, storageLocation);
927}

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 873 of file KisTagResourceModel.cpp.

874{
875 if (!resource || !resource->valid() || resource->resourceId() < 0) return QModelIndex();
876
877 for (int i = 0; i < rowCount(); ++i) {
878 QModelIndex idx = index(i, Qt::UserRole + KisAllTagResourceModel::ResourceId);
879 Q_ASSERT(idx.isValid());
880 if (idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt() == resource->resourceId()) {
881 return idx;
882 }
883 }
884 return QModelIndex();
885}

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 887 of file KisTagResourceModel.cpp.

888{
889 if (resourceId < 0) return QModelIndex();
890 for (int i = 0; i < rowCount(); ++i) {
891 QModelIndex idx = index(i, Qt::UserRole + KisAllTagResourceModel::ResourceId);
892 Q_ASSERT(idx.isValid());
893 if (idx.data(Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt() == resourceId) {
894 return idx;
895 }
896 }
897 return QModelIndex();
898}

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 778 of file KisTagResourceModel.cpp.

779{
780 return d->sourceModel->isResourceTagged(tag, resourceId);
781}
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 852 of file KisTagResourceModel.cpp.

853{
854 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAllTagResourceModel::ResourceName).toString();
855 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAllTagResourceModel::ResourceName).toString();
856 return nameLeft.toLower() < nameRight.toLower();
857}

References KisAllTagResourceModel::ResourceName.

◆ reloadResource()

bool KisTagResourceModel::reloadResource ( KoResourceSP resource)
overridevirtual

reloadResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 956 of file KisTagResourceModel.cpp.

957{
958 KisResourceModel resourceModel(d->resourceType);
959 bool r = resourceModel.reloadResource(resource);
960 if (r) {
961 QModelIndex index = indexForResource(resource);
962 if (index.isValid()) {
963 Q_EMIT dataChanged(index, index, {Qt::EditRole});
964 }
965 }
966 return r;
967}
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 969 of file KisTagResourceModel.cpp.

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

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 865 of file KisTagResourceModel.cpp.

866{
867 int id = data(index, Qt::UserRole + KisAllTagResourceModel::ResourceId).toInt();
868 if (id < 1) return nullptr;
870 return res;
871}
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.

◆ 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 900 of file KisTagResourceModel.cpp.

901{
902 KisResourceModel resourceModel(d->resourceType);
903 QModelIndex idx = resourceModel.indexForResource(resourceForIndex(index));
904 return resourceModel.setResourceActive(idx, value);
905}
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 755 of file KisTagResourceModel.cpp.

756{
757 d->resourceFilter = filter;
758 invalidateFilter();
759}

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 982 of file KisTagResourceModel.cpp.

983{
984 KisResourceModel resourceModel(d->resourceType);
985 return resourceModel.setResourceMetaData(resource, metadata);
986}

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

◆ setResourcesFilter() [1/2]

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

Definition at line 789 of file KisTagResourceModel.cpp.

790{
791 d->resourceIds = resourceIds;
792 invalidateFilter();
793}

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

◆ setResourcesFilter() [2/2]

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

Definition at line 806 of file KisTagResourceModel.cpp.

807{
808 d->resourceIds.clear();
809 Q_FOREACH(const KoResourceSP resource, resources) {
810 if (resource->valid() && resource->resourceId() > -1) {
811 d->resourceIds << resource->resourceId();
812 }
813 }
814 invalidateFilter();
815}

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 761 of file KisTagResourceModel.cpp.

762{
763 d->storageFilter = filter;
764 invalidateFilter();
765}

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

◆ setTagFilter()

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

Definition at line 749 of file KisTagResourceModel.cpp.

750{
751 d->tagFilter = filter;
752 invalidateFilter();
753}

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

◆ setTagsFilter() [1/2]

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

Definition at line 783 of file KisTagResourceModel.cpp.

784{
785 d->tagIds = tagIds;
786 invalidateFilter();
787}

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

◆ setTagsFilter() [2/2]

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

Definition at line 795 of file KisTagResourceModel.cpp.

796{
797 d->tagIds.clear();
798 Q_FOREACH(const KisTagSP tag, tags) {
799 if (tag && tag->valid() && tag->id() > -1) {
800 d->tagIds << tag->id();
801 }
802 }
803 invalidateFilter();
804}

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

◆ storageChanged

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

Definition at line 859 of file KisTagResourceModel.cpp.

860{
861 Q_UNUSED(location);
862 invalidateFilter();
863}

◆ tagResources()

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

Implements KisAbstractTagResourceModel.

Definition at line 767 of file KisTagResourceModel.cpp.

768{
769 bool r = d->sourceModel->tagResources(tag, resourceIds);
770 return r;
771}
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 773 of file KisTagResourceModel.cpp.

774{
775 return d->sourceModel->untagResources(tag, resourceIds);
776}
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 943 of file KisTagResourceModel.cpp.

944{
945 KisResourceModel resourceModel(d->resourceType);
946 bool r = resourceModel.updateResource(resource);
947 if (r) {
948 QModelIndex index = indexForResource(resource);
949 if (index.isValid()) {
950 Q_EMIT dataChanged(index, index, {Qt::EditRole});
951 }
952 }
953 return r;
954}

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

Member Data Documentation

◆ d

Private* const KisTagResourceModel::d
private

Definition at line 168 of file KisTagResourceModel.h.


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