|
Krita Source Code Documentation
|
#include <KisResourceLocator.h>
Inheritance diagram for KisResourceLocator:Classes | |
| class | Private |
| struct | ResourceStorage |
Public Types | |
| enum class | LocatorError { Ok , LocationReadOnly , CannotCreateLocation , CannotInitializeDb , CannotSynchronizeDb } |
Signals | |
| void | beginExternalResourceImport (const QString &resourceType, int numResources) |
| Emitted when the locator needs to add an embedded resource. | |
| void | beginExternalResourceRemove (const QString &resourceType, const QVector< int > resourceIds) |
| Emitted when the locator needs to add an embedded resource. | |
| void | endExternalResourceImport (const QString &resourceType) |
| Emitted when the locator finished importing the embedded resource. | |
| void | endExternalResourceRemove (const QString &resourceType) |
| Emitted when the locator finished importing the embedded resource. | |
| void | progressMessage (const QString &) |
| void | resourceActiveStateChanged (const QString &resourceType, int resourceId) |
| Emitted when a resource changes its active state. | |
| void | storageAdded (const QString &location) |
| Emitted whenever a storage is added. | |
| void | storageRemoved (const QString &location) |
| Emitted whenever a storage is removed. | |
| void | storageResynchronized (const QString &storage, bool isBulkResynchronization) |
| void | storagesBulkSynchronizationFinished () |
Public Member Functions | |
| bool | addStorage (const QString &storageLocation, KisResourceStorageSP storage) |
| addStorage Adds a new resource storage to the database. The storage is will be marked as not pre-installed. If there is already a storage with the given location, it will first be removed. | |
| QStringList | errorMessages () const |
| errorMessages | |
| QString | filePathForResource (KoResourceSP resource) |
| bool | hasStorage (const QString &storageLocation) |
| hasStorage can be used to check whether the given storage already exists | |
| LocatorError | initialize (const QString &installationResourcesLocation) |
| initialize Setup the resource locator for use. | |
| void | purge (const QString &storageLocation) |
| purge purges the local resource cache | |
| void | purgeTag (const QString tagUrl, const QString resourceType) |
| bool | removeStorage (const QString &storageLocation) |
| removeStorage removes the temporary storage from the database | |
| QString | resourceLocationBase () const |
| resourceLocationBase is the place where all resource storages (folder, bundles etc. are located. This is a writable place. | |
| void | updateFontStorage () |
| This updates the "fontregistry" storage. Called when the font directories change;. | |
| ~KisResourceLocator () | |
Static Public Member Functions | |
| static KisResourceLocator * | instance () |
| static void | saveTags () |
| saveTags saves all tags to .tag files in the resource folder | |
Static Public Attributes | |
| static const QString | resourceLocationKey {"ResourceDirectory"} |
Private Types | |
| enum class | InitializationStatus { Unknown , Initialized , FirstRun , FirstUpdate , Updating } |
Private Member Functions | |
| bool | addResource (const QString &resourceType, const KoResourceSP resource, const QString &storageLocation=QString()) |
| addResource adds the given resource to the database and potentially a storage | |
| bool | exportResource (KoResourceSP resource, QIODevice *device) |
| exportResource | |
| void | findStorages () |
| LocatorError | firstTimeInstallation (InitializationStatus initializationStatus, const QString &installationResourcesLocation) |
| KisResourceStorageSP | folderStorage () const |
| KisResourceStorageSP | fontStorage () const |
| ResourceStorage | getResourceStorage (int resourceId) const |
| KoResourceSP | importResource (const QString &resourceType, const QString &fileName, QIODevice *device, const bool allowOverwrite, const QString &storageLocation=QString()) |
| importResource | |
| KoResourceSP | importResourceFromFile (const QString &resourceType, const QString &fileName, const bool allowOverwrite, const QString &storageLocation=QString()) |
| importResourceFromFile | |
| bool | importWillOverwriteResource (const QString &resourceType, const QString &fileName, const QString &storageLocation=QString()) const |
| return whether importing will overwrite some existing resource | |
| KisResourceLocator (const KisResourceLocator &) | |
| KisResourceLocator (QObject *parent) | |
| void | loadRequiredResources (KoResourceSP resource) |
| QString | makeStorageLocationAbsolute (QString storageLocation) const |
| QString | makeStorageLocationRelative (QString location) const |
| KisResourceStorageSP | memoryStorage () const |
| QMap< QString, QVariant > | metaDataForResource (int id) const |
| metaDataForResource | |
| QMap< QString, QVariant > | metaDataForStorage (const QString &storageLocation) const |
| metaDataForStorage | |
| KisResourceLocator | operator= (const KisResourceLocator &) |
| bool | reloadResource (const QString &resourceType, const KoResourceSP resource) |
| Reloads the resource from its persistent storage. | |
| KoResourceSP | resource (QString storageLocation, const QString &resourceType, const QString &filename) |
| resource finds a physical resource in one of the storages | |
| bool | resourceCached (QString storageLocation, const QString &resourceType, const QString &filename) const |
| KoResourceSP | resourceForId (int resourceId) |
| resourceForId returns the resource with the given id, or 0 if no such resource exists. The resource object will have its id set but not its version. | |
| bool | setMetaDataForResource (int id, QMap< QString, QVariant > map) const |
| setMetaDataForResource | |
| void | setMetaDataForStorage (const QString &storageLocation, QMap< QString, QVariant > map) const |
| setMetaDataForStorage | |
| bool | setResourceActive (int resourceId, bool active) |
| setResourceActive | |
| KisResourceStorageSP | storageByLocation (const QString &location) const |
| QList< KisResourceStorageSP > | storages () const |
| bool | synchronizeDb () |
| KisTagSP | tagForUrl (const QString &tagUrl, const QString resourceType) |
| tagForUrl create a tag from the database | |
| bool | updateResource (const QString &resourceType, const KoResourceSP resource) |
| updateResource | |
Static Private Member Functions | |
| static KisTagSP | tagForUrlNoCache (const QString &tagUrl, const QString resourceType) |
| tagForUrlNoCache create a tag from the database, don't use cache | |
Private Attributes | |
| QScopedPointer< Private > | d |
Friends | |
| class | KisAllResourcesModel |
| class | KisAllTagResourceModel |
| class | KisAllTagsModel |
| class | KisBrushTypeMetaDataFixup |
| class | KisMyPaintPaintOpPreset |
| class | KisResourceCacheDb |
| class | KisResourceQueryMapper |
| class | KisResourceThumbnailCache |
| class | KisResourceUserOperations |
| class | KisStorageFilterProxyModel |
| class | KisStorageModel |
| class | KisTagResourceModel |
| class | Resource |
| class | TestResourceLocator |
| class | TestResourceModel |
The KisResourceLocator class locates all resource storages (folders, bundles, various adobe resource libraries) in the resource location.
The resource location is always a writable folder.
There is one resource locator which is owned by the QApplication object.
The resource location is configurable, but there is only one location where Krita will look for resources.
Definition at line 32 of file KisResourceLocator.h.
|
strongprivate |
| Enumerator | |
|---|---|
| Unknown | |
| Initialized | |
| FirstRun | |
| FirstUpdate | |
| Updating | |
Definition at line 329 of file KisResourceLocator.h.
|
strong |
| Enumerator | |
|---|---|
| Ok | |
| LocationReadOnly | |
| CannotCreateLocation | |
| CannotInitializeDb | |
| CannotSynchronizeDb | |
Definition at line 47 of file KisResourceLocator.h.
| KisResourceLocator::~KisResourceLocator | ( | ) |
Definition at line 74 of file KisResourceLocator.cpp.
|
private |
Definition at line 57 of file KisResourceLocator.cpp.
|
private |
|
private |
addResource adds the given resource to the database and potentially a storage
| resourceType | the type of the resource |
| resource | the actual resource object |
| storageLocation | the storage where the resource will be saved. By default this is the default folder storage. |
And to the database.
The metadata will be set by KisResourceCacheDb, which is not very consistent with KisResourceLocator::updateResource(), but works :)
Definition at line 622 of file KisResourceLocator.cpp.
References KisResourceCacheDb::addResource(), d, loadRequiredResources(), makeStorageLocationAbsolute(), and resource().
| bool KisResourceLocator::addStorage | ( | const QString & | storageLocation, |
| KisResourceStorageSP | storage ) |
addStorage Adds a new resource storage to the database. The storage is will be marked as not pre-installed. If there is already a storage with the given location, it will first be removed.
| storageLocation | a unique name for the given storage |
| storage | a storage object |
Definition at line 786 of file KisResourceLocator.cpp.
References KisResourceCacheDb::addStorage(), KisResourceCacheDb::addStorageTags(), beginExternalResourceImport(), d, endExternalResourceImport(), KisResourceLoaderRegistry::instance(), makeStorageLocationRelative(), removeStorage(), and storageAdded().
|
signal |
Emitted when the locator needs to add an embedded resource.
|
signal |
Emitted when the locator needs to add an embedded resource.
|
signal |
Emitted when the locator finished importing the embedded resource.
|
signal |
Emitted when the locator finished importing the embedded resource.
| QStringList KisResourceLocator::errorMessages | ( | ) | const |
|
private |
exportResource
| resource | resource to be exported |
| device | QIODevice where the resource should be loaded to |
Definition at line 613 of file KisResourceLocator.cpp.
References d, makeStorageLocationAbsolute(), and resource().
| QString KisResourceLocator::filePathForResource | ( | KoResourceSP | resource | ) |
Returns the full file path of the resource if it has any separate physical representation on the disk
Definition at line 956 of file KisResourceLocator.cpp.
References d, makeStorageLocationAbsolute(), and resource().
|
private |
Definition at line 1029 of file KisResourceLocator.cpp.
References d, fontStorage(), KisStoragePluginRegistry::instance(), KisResourceCacheDb::registerStorageType(), and KisResourceStorage::s_meta_name.
|
private |
Definition at line 979 of file KisResourceLocator.cpp.
References CannotCreateLocation, d, KisResourceLoaderRegistry::instance(), Ok, progressMessage(), and KritaVersionWrapper::versionString().
|
private |
Definition at line 1089 of file KisResourceLocator.cpp.
References d, and storageByLocation().
|
private |
Definition at line 1099 of file KisResourceLocator.cpp.
References storageByLocation().
|
private |
Definition at line 1104 of file KisResourceLocator.cpp.
References makeStorageLocationAbsolute(), KisResourceLocator::ResourceStorage::resourceFileName, KisResourceLocator::ResourceStorage::resourceType, and KisResourceLocator::ResourceStorage::storageLocation.
| bool KisResourceLocator::hasStorage | ( | const QString & | storageLocation | ) |
hasStorage can be used to check whether the given storage already exists
| storageLocation | the name of the storage |
Definition at line 874 of file KisResourceLocator.cpp.
References d.
|
private |
importResource
| resourceType | |
| fileName | filename that should be assigned to the resource |
| device | QIODevice where the resource should be loaded from |
| storageLocation | optional, the storage where the resource will be stored. Empty means in the default Folder storage. |
Make sure that this resource is the latest version of the resource. Also, we cannot just return existingResource, because it has uninitialized fields. It should go through the initialization by the locator's caching system.
Definition at line 444 of file KisResourceLocator.cpp.
References KisResourceCacheDb::addResource(), beginExternalResourceImport(), beginExternalResourceRemove(), d, endExternalResourceImport(), endExternalResourceRemove(), KoMD5Generator::generateHash(), KisResourceCacheDb::getAllVersionsLocations(), KisResourceCacheDb::getResourceIdFromFilename(), KisResourceCacheDb::getResourceIdFromVersionedFilename(), KisResourceThumbnailCache::insert(), KisGlobalResourcesInterface::instance(), KisResourceLoaderRegistry::instance(), KisResourceThumbnailCache::instance(), KisResourceLoaderBase::load(), KisResourceLoaderRegistry::loader(), loadRequiredResources(), makeStorageLocationAbsolute(), KisMimeDatabase::mimeTypeForFile(), KisResourceThumbnailCache::remove(), KisResourceCacheDb::removeResourceCompletely(), resource(), resourceForId(), and resourceLocationBase().
|
private |
importResourceFromFile
| resourceType | |
| fileName | |
| storageLocation | optional, the storage where the resource will be stored. Empty means in the default Folder storage. |
Definition at line 433 of file KisResourceLocator.cpp.
References importResource().
|
private |
return whether importing will overwrite some existing resource
| resourceType | |
| fileName | filename that should be assigned to the resource |
| storageLocation | optional, the storage where the resource will be stored. Empty means in the default Folder storage. |
Definition at line 602 of file KisResourceLocator.cpp.
References d, and makeStorageLocationAbsolute().
| KisResourceLocator::LocatorError KisResourceLocator::initialize | ( | const QString & | installationResourcesLocation | ) |
initialize Setup the resource locator for use.
| installationResourcesLocation | the place where the resources that come packaged with Krita reside. |
Definition at line 78 of file KisResourceLocator.cpp.
References CannotCreateLocation, CannotSynchronizeDb, d, FirstRun, firstTimeInstallation(), FirstUpdate, KoResourcePaths::getAppDataLocation(), Initialized, LocationReadOnly, Ok, synchronizeDb(), Unknown, Updating, and KritaVersionWrapper::versionString().
|
static |
Definition at line 63 of file KisResourceLocator.cpp.
References KisResourceLocator().
|
private |
Loads all the resources required by resource into the cache
loadRequiredResources() also loads embedded resources and adds them into the database.
First load the side-loaded resources, since they may be linked by the linked resources.
Now load the linked resources
Definition at line 153 of file KisResourceLocator.cpp.
References KoEmbeddedResource::data(), KoResourceLoadResult::EmbeddedResource, KoResourceLoadResult::embeddedResource(), KoResourceLoadResult::ExistingResource, KoResourceLoadResult::FailedLink, KoResourceSignature::filename, importResource(), KisGlobalResourcesInterface::instance(), KIS_SAFE_ASSERT_RECOVER_NOOP, KoResourceLoadResult::resource(), resource(), KoEmbeddedResource::signature(), KoResourceLoadResult::signature(), KoResourceLoadResult::type(), and KoResourceSignature::type.
|
private |
Definition at line 1145 of file KisResourceLocator.cpp.
References resourceLocationBase().
|
private |
Definition at line 1238 of file KisResourceLocator.cpp.
References resourceLocationBase().
|
private |
Definition at line 1094 of file KisResourceLocator.cpp.
References storageByLocation().
|
private |
metaDataForResource
| id |
Definition at line 738 of file KisResourceLocator.cpp.
References KisResourceCacheDb::metaDataForId().
|
private |
metaDataForStorage
| storage |
Definition at line 748 of file KisResourceLocator.cpp.
References d, and makeStorageLocationAbsolute().
|
private |
|
signal |
| void KisResourceLocator::purge | ( | const QString & | storageLocation | ) |
purge purges the local resource cache
Definition at line 776 of file KisResourceLocator.cpp.
References d, KisResourceThumbnailCache::instance(), and KisResourceThumbnailCache::remove().
| void KisResourceLocator::purgeTag | ( | const QString | tagUrl, |
| const QString | resourceType ) |
Remove the given tag from the cache
Definition at line 951 of file KisResourceLocator.cpp.
References d.
|
private |
Reloads the resource from its persistent storage.
| resourceType | the type of the resource |
| resource | the actual resource object |
resource is kept unchanged Definition at line 712 of file KisResourceLocator.cpp.
References d, loadRequiredResources(), makeStorageLocationAbsolute(), and resource().
| bool KisResourceLocator::removeStorage | ( | const QString & | storageLocation | ) |
removeStorage removes the temporary storage from the database
| storageLocation | the unique name of the storage |
Definition at line 835 of file KisResourceLocator.cpp.
References beginExternalResourceRemove(), d, KisResourceCacheDb::deleteStorage(), endExternalResourceRemove(), KisResourceLoaderRegistry::instance(), makeStorageLocationRelative(), purge(), KisResourceCacheDb::resourcesForStorage(), and storageRemoved().
|
private |
resource finds a physical resource in one of the storages
| storageLocation | the storage containing the resource. If empty, this is the folder storage. |
Note that the resource does not have the version or id field set, so this cannot be used directly, but only through KisResourceModel.
| resourceType | the type of the resource |
| filename | the filename of the resource including extension, but without any paths |
Definition at line 317 of file KisResourceLocator.cpp.
References d, loadRequiredResources(), makeStorageLocationAbsolute(), makeStorageLocationRelative(), and resource().
|
signal |
Emitted when a resource changes its active state.
|
private |
Definition at line 145 of file KisResourceLocator.cpp.
References d, and makeStorageLocationAbsolute().
|
private |
resourceForId returns the resource with the given id, or 0 if no such resource exists. The resource object will have its id set but not its version.
| resourceId | the id |
Definition at line 408 of file KisResourceLocator.cpp.
References getResourceStorage(), resource(), KisResourceLocator::ResourceStorage::resourceFileName, KisResourceLocator::ResourceStorage::resourceType, and KisResourceLocator::ResourceStorage::storageLocation.
| QString KisResourceLocator::resourceLocationBase | ( | ) | const |
resourceLocationBase is the place where all resource storages (folder, bundles etc. are located. This is a writable place.
Definition at line 140 of file KisResourceLocator.cpp.
References d.
|
static |
saveTags saves all tags to .tag files in the resource folder
Definition at line 879 of file KisResourceLocator.cpp.
References dbgResources, KoResourcePaths::getAppDataLocation(), and tagForUrlNoCache().
|
private |
setMetaDataForResource
| id | |
| map |
Definition at line 743 of file KisResourceLocator.cpp.
References KisResourceCacheDb::updateMetaDataForId().
|
private |
setMetaDataForStorage
| storage | |
| map |
Definition at line 768 of file KisResourceLocator.cpp.
References d.
|
private |
setResourceActive
| resourceId | |
| active | shows if the resource should be set as active or not |
Definition at line 415 of file KisResourceLocator.cpp.
References d, getResourceStorage(), KisResourceThumbnailCache::instance(), KisResourceThumbnailCache::remove(), resourceActiveStateChanged(), KisResourceLocator::ResourceStorage::resourceFileName, KisResourceLocator::ResourceStorage::resourceType, KisResourceCacheDb::setResourceActive(), and KisResourceLocator::ResourceStorage::storageLocation.
|
signal |
Emitted whenever a storage is added.
|
private |
Definition at line 1074 of file KisResourceLocator.cpp.
References d.
|
signal |
Emitted whenever a storage is removed.
|
signal |
Emitted when a storage is resynchronized using KisresourceCacheDb::synchronizeStorage()
if isBulkResynchronization then this resynchronization happened as a part of bulk resynchronization at the start of Krita. At the end of this bulk action storagesBulkSynchronizationFinished() will be emitted as well.
|
private |
Definition at line 1069 of file KisResourceLocator.cpp.
References d.
|
signal |
Emitted when bulk-synchronization of all the storages has been finished
|
private |
In the current layout of the database we cannot set FOREIGN KEY for the metadata table (since it links to both, resources and storages), hence we should manually track the orphaned data.
Theoretically, these should be none, if our code is correct, but who knows anything about our code...
Definition at line 1168 of file KisResourceLocator.cpp.
References KisResourceCacheDb::addStorageTags(), d, KisStorageModel::data(), KisResourceCacheDb::deleteStorage(), KisResourceLoaderRegistry::executeAllFixups(), findStorages(), KisResourceLoaderRegistry::instance(), KisStorageModel::Location, makeStorageLocationAbsolute(), progressMessage(), KisResourceCacheDb::registerResourceType(), KisResourceCacheDb::removeOrphanedMetaData(), KisStorageModel::rowCount(), storageRemoved(), storageResynchronized(), storagesBulkSynchronizationFinished(), and KisResourceCacheDb::synchronizeStorage().
|
private |
tagForUrl create a tag from the database
| tagUrl | the url |
Definition at line 193 of file KisResourceLocator.cpp.
References d, and tagForUrlNoCache().
|
staticprivate |
tagForUrlNoCache create a tag from the database, don't use cache
| tagUrl | url of the tag |
| resourceType | resource type of the tag |
Definition at line 208 of file KisResourceLocator.cpp.
| void KisResourceLocator::updateFontStorage | ( | ) |
This updates the "fontregistry" storage. Called when the font directories change;.
Definition at line 970 of file KisResourceLocator.cpp.
References fontStorage(), storageResynchronized(), and KisResourceCacheDb::synchronizeStorage().
|
private |
updateResource
| resourceType | |
| resource |
Definition at line 663 of file KisResourceLocator.cpp.
References addResource(), KisResourceCacheDb::addResourceVersion(), d, KisResourceThumbnailCache::insert(), KisResourceThumbnailCache::instance(), loadRequiredResources(), makeStorageLocationAbsolute(), KisResourceThumbnailCache::remove(), resource(), and setMetaDataForResource().
|
friend |
Definition at line 166 of file KisResourceLocator.h.
|
friend |
Definition at line 167 of file KisResourceLocator.h.
|
friend |
Definition at line 164 of file KisResourceLocator.h.
|
friend |
Definition at line 176 of file KisResourceLocator.h.
|
friend |
Definition at line 356 of file KisResourceLocator.h.
|
friend |
Definition at line 172 of file KisResourceLocator.h.
|
friend |
Definition at line 174 of file KisResourceLocator.h.
|
friend |
Definition at line 177 of file KisResourceLocator.h.
|
friend |
Definition at line 175 of file KisResourceLocator.h.
|
friend |
Definition at line 173 of file KisResourceLocator.h.
|
friend |
Definition at line 168 of file KisResourceLocator.h.
|
friend |
Definition at line 165 of file KisResourceLocator.h.
|
friend |
Definition at line 171 of file KisResourceLocator.h.
|
friend |
Definition at line 169 of file KisResourceLocator.h.
|
friend |
Definition at line 170 of file KisResourceLocator.h.
|
private |
Definition at line 363 of file KisResourceLocator.h.
|
static |
Definition at line 46 of file KisResourceLocator.h.