Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceModelProvider.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include "KisResourceModel.h"
9#include "KisTagModel.h"
10#include "KisTagResourceModel.h"
12
13#include "KoResource.h"
14
15#include <memory>
16#include <optional>
17
18#include <QGlobalStatic>
19
21
23{
24 QMap<QString, KisAllResourcesModel*> resourceModels;
25 QMap<QString, KisAllTagsModel*> tagModels;
26 QMap<QString, KisAllTagResourceModel*> tagResourceModels;
27 std::optional<KisResourceMetaDataModel> metaDataModel;
28};
29
34
36{
37 qDeleteAll(d->resourceModels);
38 qDeleteAll(d->tagModels);
39 qDeleteAll(d->tagResourceModels);
40 delete d;
41}
42
44{
45 if (!s_instance->d->resourceModels.contains(resourceType)) {
46 s_instance->d->resourceModels[resourceType] = new KisAllResourcesModel(resourceType);
47 }
48 return s_instance->d->resourceModels[resourceType];
49}
50
52{
53 if (!s_instance->d->tagModels.contains(resourceType)) {
54 s_instance->d->tagModels[resourceType] = new KisAllTagsModel(resourceType);
55 }
56 return s_instance->d->tagModels[resourceType];
57}
58
59
61{
62 if (!s_instance->d->tagResourceModels.contains(resourceType)) {
63 s_instance->d->tagResourceModels[resourceType] = new KisAllTagResourceModel(resourceType);
64 }
65 return s_instance->d->tagResourceModels[resourceType];
66}
67
69{
70 for (auto it = s_instance->d->tagModels.begin(); it != s_instance->d->tagModels.end(); ++it) {
71 it.value()->resetQuery();
72 }
73 for (auto it = s_instance->d->resourceModels.begin(); it != s_instance->d->resourceModels.end(); ++it) {
74 it.value()->resetQuery();
75 }
76 for (auto it = s_instance->d->tagResourceModels.begin(); it != s_instance->d->tagResourceModels.end(); ++it) {
77 it.value()->resetQuery();
78 }
79
83 s_instance->d->metaDataModel = std::nullopt;
84}
85
87{
88 for (auto it = s_instance->d->tagModels.begin(); it != s_instance->d->tagModels.end(); ++it) {
89 it.value()->closeQuery();
90 }
91 for (auto it = s_instance->d->resourceModels.begin(); it != s_instance->d->resourceModels.end(); ++it) {
92 it.value()->closeQuery();
93 }
94 for (auto it = s_instance->d->tagResourceModels.begin(); it != s_instance->d->tagResourceModels.end(); ++it) {
95 it.value()->closeQuery();
96 }
97
101 s_instance->d->metaDataModel = std::nullopt;
102}
103
105{
106 if (!s_instance->d->metaDataModel) {
107 s_instance->d->metaDataModel.emplace("resources");
108 }
109 return &s_instance->d->metaDataModel.value();
110}
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
The KisAllresourcesModel class provides access to the cache database for a particular resource type....
Private *const d
static KisAllTagsModel * tagModel(const QString &resourceType)
static KisAllResourcesModel * resourceModel(const QString &resourceType)
static KisResourceMetaDataModel * resourceMetadataModel()
static KisAllTagResourceModel * tagResourceModel(const QString &resourceType)
QMap< QString, KisAllResourcesModel * > resourceModels
QMap< QString, KisAllTagResourceModel * > tagResourceModels
QMap< QString, KisAllTagsModel * > tagModels
std::optional< KisResourceMetaDataModel > metaDataModel