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

The KisResourceModel class provides the main access to resources. It is possible to filter the resources returned by the active status flag of the resources and the storages. More...

#include <KisResourceModel.h>

+ Inheritance diagram for KisResourceModel:

Classes

struct  Private
 

Public Member Functions

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.
 
bool exportResource (KoResourceSP resource, QIODevice *device) override
 exportResource exports a resource into a QIODevice
 
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=QString()) 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
 
 KisResourceModel (const QString &type, 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 resourceForId (int id) const
 
KoResourceSP resourceForIndex (QModelIndex index=QModelIndex()) const override
 resourceForIndex returns a properly versioned and id'ed resource object
 
QVector< KoResourceSPresourcesForFilename (QString fileName) const
 
QVector< KoResourceSPresourcesForMD5 (const QString md5sum) const
 
QVector< KoResourceSPresourcesForName (QString name) const
 
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 setStorageFilter (StorageFilter filter) override
 
void showOnlyUntaggedResources (bool showOnlyUntagged)
 
QVector< KisTagSPtagsForResource (int resourceId) const
 
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.
 
 ~KisResourceModel () 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

QVector< KoResourceSPfilterByColumn (const QString filter, KisAllResourcesModel::Columns column) const
 
bool filterResource (const QModelIndex &idx) const
 

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 KisResourceModel class provides the main access to resources. It is possible to filter the resources returned by the active status flag of the resources and the storages.

Definition at line 381 of file KisResourceModel.h.

Constructor & Destructor Documentation

◆ KisResourceModel()

KisResourceModel::KisResourceModel ( const QString & type,
QObject * parent = 0 )

Definition at line 807 of file KisResourceModel.cpp.

808 : QSortFilterProxyModel(parent)
809 , d(new Private)
810{
811 setSourceModel(KisResourceModelProvider::resourceModel(type));
812}
static KisAllResourcesModel * resourceModel(const QString &resourceType)

References KisResourceModelProvider::resourceModel().

◆ ~KisResourceModel()

KisResourceModel::~KisResourceModel ( )
override

Definition at line 814 of file KisResourceModel.cpp.

815{
816 delete d;
817}

References d.

Member Function Documentation

◆ addResource()

bool KisResourceModel::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 915 of file KisResourceModel.cpp.

916{
917 KisAllResourcesModel *source = qobject_cast<KisAllResourcesModel*>(sourceModel());
918 bool updateInsteadOfAdd = false;
919 bool result = false;
920
921 // Check whether the resource already existed, in that case, we will update
922 // and possibly reactivate the resource
923 QSqlQuery q;
924
925 if (!q.prepare("SELECT resources.id\n"
926 ", resources.md5sum\n"
927 ", storages.location\n"
928 ", resource_types.name\n"
929 "FROM resources\n"
930 ", storages\n"
931 ", resource_types\n"
932 "WHERE resources.name = :name\n"
933 "AND resources.storage_id = storages.id\n"
934 "AND resources.resource_type_id = resource_types.id\n"
935 "AND resources.status = 0")) {
936 qWarning() << "Could not create KisResourceModel::addResource query" << q.lastError();
937 }
938
939 q.bindValue(":name", resource->name());
940
941 if (!q.exec()) {
942 qWarning() << "Could not execute KisResourceModel::addResource query" << q.lastError();
943 }
944
945 while (q.next()) {
946 int id = q.value(0).toInt();
947 QString md5sum = q.value(1).toString();
948 QString storageLocation = q.value(2).toString();
949 QString resourceType = q.value(3).toString();
950
951
952 QSqlQuery q2;
953
954 if (!q2.prepare("SELECT MAX(version)\n"
955 "FROM versioned_resources\n"
956 "WHERE resource_id = :id")) {
957 qWarning() << "Could not prepare versioned_resources query" << q.lastError();
958 }
959
960 q2.bindValue(":id", id);
961
962 if (!q2.exec()) {
963 qWarning() << "Could not execute versioned_resources query" << q.lastError();
964 }
965
966 if (!q2.first()) {
967 qWarning() << "No resource version found with id" << id;
968 }
969
970 q.first();
971
972 int version = q2.value(0).toInt();
973
974 if (resourceType == resource->resourceType().first) {
975 resource->setResourceId(id);
976 resource->setVersion(version);
977 resource->setMD5Sum(md5sum);
978 resource->setActive(true);
979 resource->setStorageLocation(storageLocation);
980 bool result = updateResource(resource);
981 updateInsteadOfAdd = result;
982 break;
983 }
984 }
985
986 if (!updateInsteadOfAdd) {
987 result = source->addResource(resource, storageId);
988 }
989
990 if (result) {
991 invalidate();
992 }
993
994 return result;
995}
QPointF q2
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
The KisAllresourcesModel class provides access to the cache database for a particular resource type....
bool updateResource(KoResourceSP resource) override
updateResource creates a new version of the resource in the storage and in the database....

References q2, source(), and updateResource().

◆ addResourceDeduplicateFileName()

bool KisResourceModel::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 997 of file KisResourceModel.cpp.

998{
999 KisAllResourcesModel *source = qobject_cast<KisAllResourcesModel*>(sourceModel());
1000
1001 const bool result = source->addResourceDeduplicateFileName(resource, storageId);
1002
1003 if (result) {
1004 invalidate();
1005 }
1006
1007 return result;
1008}

References source().

◆ exportResource()

bool KisResourceModel::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 905 of file KisResourceModel.cpp.

906{
907 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
908 bool res = false;
909 if (source) {
910 res = source->exportResource(resource, device);
911 }
912 return res;
913}

References source().

◆ filterAcceptsColumn()

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

Definition at line 1046 of file KisResourceModel.cpp.

1047{
1048 return true;
1049}

◆ filterAcceptsRow()

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

Definition at line 1051 of file KisResourceModel.cpp.

1052{
1053 QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
1054
1055 if (idx.isValid()) {
1056 int id = idx.data(Qt::UserRole + KisAbstractResourceModel::Id).toInt();
1057
1059
1060 QString queryString = ("SELECT COUNT(*)\n"
1061 "FROM resources\n"
1062 ", storages\n"
1063 "WHERE resources.id IN (select resource_id FROM resource_tags WHERE active = 1)\n"
1064 "AND storages.id = resources.storage_id\n"
1065 "AND resources.id = :resource_id\n");
1066
1068 queryString.append("AND resources.status > 0\n");
1069 }
1070 else if (d->resourceFilter == ShowInactiveResources) {
1071 queryString.append("AND resources.status = 0\n");
1072 }
1073
1075 queryString.append("AND storages.active > 0\n");
1076 }
1077 else if (d->storageFilter == ShowInactiveStorages) {
1078 queryString.append("AND storages.active = 0\n");
1079 }
1080
1081 QSqlQuery q;
1082
1083 if (!q.prepare((queryString))) {
1084 qWarning() << "KisResourceModel: Could not prepare resource_tags query" << q.lastError();
1085 }
1086
1087 q.bindValue(":resource_id", id);
1088
1089 if (!q.exec()) {
1090 qWarning() << "KisResourceModel: Could not execute resource_tags query" << q.lastError() << q.boundValues();
1091 }
1092
1093 q.first();
1094 if (q.value(0).toInt() > 0) {
1095 return false;
1096 }
1097 }
1098 }
1099
1100 return filterResource(idx);
1101}
bool filterResource(const QModelIndex &idx) const

References d, filterResource(), KisAbstractResourceModel::Id, KisResourceModel::Private::resourceFilter, KisAbstractResourceFilterInterface::ShowActiveResources, KisAbstractResourceFilterInterface::ShowActiveStorages, KisAbstractResourceFilterInterface::ShowInactiveResources, KisAbstractResourceFilterInterface::ShowInactiveStorages, KisResourceModel::Private::showOnlyUntaggedResources, and KisResourceModel::Private::storageFilter.

◆ filterByColumn()

QVector< KoResourceSP > KisResourceModel::filterByColumn ( const QString filter,
KisAllResourcesModel::Columns column ) const
private

Definition at line 1111 of file KisResourceModel.cpp.

1112{
1113 QVector<KoResourceSP> resources;
1114 for (int i = 0; i < rowCount(); ++i) {
1115 QModelIndex idx = index(i, 0);
1116 if (idx.isValid() && data(idx, Qt::UserRole + column).toString() == filter) {
1117 resources << resourceForIndex(idx);
1118 }
1119 }
1120
1121 return resources;
1122}
KoResourceSP resourceForIndex(QModelIndex index=QModelIndex()) const override
resourceForIndex returns a properly versioned and id'ed resource object
QString toString(const QString &value)

References resourceForIndex().

◆ filterResource()

bool KisResourceModel::filterResource ( const QModelIndex & idx) const
private

Definition at line 1124 of file KisResourceModel.cpp.

1125{
1127 return true;
1128 }
1129
1130 ResourceFilter resourceActive = (ResourceFilter)sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::ResourceActive).toInt();
1131 StorageFilter storageActive = (StorageFilter)sourceModel()->data(idx, Qt::UserRole + KisAbstractResourceModel::StorageActive).toInt();
1132
1134 if (storageActive == d->storageFilter) {
1135 return true;
1136 }
1137 }
1138
1140 if (resourceActive == d->resourceFilter) {
1141 return true;
1142 }
1143 }
1144
1145 if ((storageActive == d->storageFilter) && (resourceActive == d->resourceFilter)) {
1146 return true;
1147 }
1148
1149 return false;
1150}
@ ResourceActive
Whether the current resource is active.
@ StorageActive
Whether the current resource's storage is active.

References d, KisAbstractResourceModel::ResourceActive, KisResourceModel::Private::resourceFilter, KisAbstractResourceFilterInterface::ShowAllResources, KisAbstractResourceFilterInterface::ShowAllStorages, KisAbstractResourceModel::StorageActive, and KisResourceModel::Private::storageFilter.

◆ importResource()

KoResourceSP KisResourceModel::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 888 of file KisResourceModel.cpp.

889{
890 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
891 KoResourceSP res;
892 if (source) {
893 res = source->importResource(filename, device, allowOverwrite, storageId);
894 }
895 invalidate();
896 return res;
897}

References source().

◆ importResourceFile()

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

importResourceFile

Parameters
filename
Returns

Implements KisAbstractResourceModel.

Definition at line 877 of file KisResourceModel.cpp.

878{
879 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
880 KoResourceSP res;
881 if (source) {
882 res = source->importResourceFile(filename, allowOverwrite, storageId);
883 }
884 invalidate();
885 return res;
886}

References source().

◆ importWillOverwriteResource()

bool KisResourceModel::importWillOverwriteResource ( const QString & fileName,
const QString & storageLocation = QString() ) 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 899 of file KisResourceModel.cpp.

900{
901 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
902 return source && source->importWillOverwriteResource(fileName, storageLocation);
903}

References source().

◆ indexForResource()

QModelIndex KisResourceModel::indexForResource ( KoResourceSP resource) const
overridevirtual

indexFromResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 850 of file KisResourceModel.cpp.

851{
852 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
853 if (source) {
854 return mapFromSource(source->indexForResource(resource));
855 }
856 return QModelIndex();
857}

References source().

◆ indexForResourceId()

QModelIndex KisResourceModel::indexForResourceId ( int resourceId) const
overridevirtual

indexFromResource

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

Implements KisAbstractResourceModel.

Definition at line 859 of file KisResourceModel.cpp.

860{
861 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
862 if (source) {
863 return mapFromSource(source->indexForResourceId(resourceId));
864 }
865 return QModelIndex();
866}

References source().

◆ lessThan()

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

Definition at line 1103 of file KisResourceModel.cpp.

1104{
1105 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAbstractResourceModel::Name).toString();
1106 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAbstractResourceModel::Name).toString();
1107
1108 return nameLeft.toLower() < nameRight.toLower();
1109}

References KisAbstractResourceModel::Name.

◆ reloadResource()

bool KisResourceModel::reloadResource ( KoResourceSP resource)
overridevirtual

reloadResource

Parameters
resource
Returns

Implements KisAbstractResourceModel.

Definition at line 1019 of file KisResourceModel.cpp.

1020{
1021 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
1022 if (source) {
1023 return source->reloadResource(resource);
1024 }
1025 return false;
1026}

References source().

◆ renameResource()

bool KisResourceModel::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 1028 of file KisResourceModel.cpp.

1029{
1030 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
1031 if (source) {
1032 return source->renameResource(resource, name);
1033 }
1034 return false;
1035}

References source().

◆ resourceForId()

KoResourceSP KisResourceModel::resourceForId ( int id) const

Definition at line 1153 of file KisResourceModel.cpp.

1154{
1155 KoResourceSP res = static_cast<KisAllResourcesModel*>(sourceModel())->resourceForId(id);
1156 QModelIndex idx = indexForResource(res);
1157 if (idx.isValid()) {
1158 return res;
1159 }
1160 return 0;
1161}
KoResourceSP resourceForId(int id) const
QModelIndex indexForResource(KoResourceSP resource) const override
indexFromResource

References indexForResource(), and resourceForId().

◆ resourceForIndex()

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

resourceForIndex returns a properly versioned and id'ed resource object

Implements KisAbstractResourceModel.

Definition at line 841 of file KisResourceModel.cpp.

842{
843 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
844 if (source) {
845 return source->resourceForIndex(mapToSource(index));
846 }
847 return 0;
848}

References source().

◆ resourcesForFilename()

QVector< KoResourceSP > KisResourceModel::resourcesForFilename ( QString fileName) const

resourceForFilename returns the resources with the given filename that fit the current filters. Note that the filename does not include a path to the storage.

Returns
a resource if one is found, or 0 if none are found

Definition at line 1163 of file KisResourceModel.cpp.

1164{
1166
1167}
QVector< KoResourceSP > filterByColumn(const QString filter, KisAllResourcesModel::Columns column) const

References KisAbstractResourceModel::Filename, and filterByColumn().

◆ resourcesForMD5()

QVector< KoResourceSP > KisResourceModel::resourcesForMD5 ( const QString md5sum) const

◆ resourcesForName()

QVector< KoResourceSP > KisResourceModel::resourcesForName ( QString name) const

resourceForName returns the resources with the given name that fit the current filters.

Returns
a resource if one is found, or 0 if none are found

Definition at line 1169 of file KisResourceModel.cpp.

1170{
1172}

References filterByColumn(), and KisAbstractResourceModel::Name.

◆ setResourceActive()

bool KisResourceModel::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 868 of file KisResourceModel.cpp.

869{
870 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
871 if (source) {
872 return source->setResourceActive(mapToSource(index), value);
873 }
874 return false;
875}
float value(const T *src, size_t ch)

References source(), and value().

◆ setResourceFilter()

void KisResourceModel::setResourceFilter ( ResourceFilter filter)
overridevirtual

Select status of the resources that should be shown

Implements KisAbstractResourceFilterInterface.

Definition at line 819 of file KisResourceModel.cpp.

820{
821 if (d->resourceFilter != filter) {
822 d->resourceFilter = filter;
823 invalidateFilter();
824 }
825}

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

◆ setResourceMetaData()

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

setResourceMetaData

Parameters
metadata
Returns

Implements KisAbstractResourceModel.

Definition at line 1037 of file KisResourceModel.cpp.

1038{
1039 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
1040 if (source) {
1041 return source->setResourceMetaData(resource, metadata);
1042 }
1043 return false;
1044}

References source().

◆ setStorageFilter()

void KisResourceModel::setStorageFilter ( StorageFilter filter)
overridevirtual

Select status of the storages that should be shown

Implements KisAbstractResourceFilterInterface.

Definition at line 827 of file KisResourceModel.cpp.

828{
829 if (d->storageFilter != filter) {
830 d->storageFilter = filter;
831 invalidateFilter();
832 }
833}

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

◆ showOnlyUntaggedResources()

void KisResourceModel::showOnlyUntaggedResources ( bool showOnlyUntagged)

Definition at line 835 of file KisResourceModel.cpp.

836{
837 d->showOnlyUntaggedResources = showOnlyUntagged;
838 invalidateFilter();
839}

References d, and KisResourceModel::Private::showOnlyUntaggedResources.

◆ tagsForResource()

QVector< KisTagSP > KisResourceModel::tagsForResource ( int resourceId) const

Definition at line 1179 of file KisResourceModel.cpp.

1180{
1181 return static_cast<KisAllResourcesModel*>(sourceModel())->tagsForResource(resourceId);
1182}
QVector< KisTagSP > tagsForResource(int resourceId) const

References tagsForResource().

◆ updateResource()

bool KisResourceModel::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 1010 of file KisResourceModel.cpp.

1011{
1012 KisAbstractResourceModel *source = dynamic_cast<KisAbstractResourceModel*>(sourceModel());
1013 if (source) {
1014 return source->updateResource(resource);
1015 }
1016 return false;
1017}

References source().

Member Data Documentation

◆ d

Private* const KisResourceModel::d
private

Definition at line 447 of file KisResourceModel.h.


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