File indexing completed on 2024-05-12 15:59:51
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisResourceModelProvider.h" 0007 0008 #include "KisResourceModel.h" 0009 #include "KisTagModel.h" 0010 #include "KisTagResourceModel.h" 0011 0012 #include "KoResource.h" 0013 0014 #include <memory> 0015 0016 #include <QGlobalStatic> 0017 0018 Q_GLOBAL_STATIC(KisResourceModelProvider, s_instance) 0019 0020 struct KisResourceModelProvider::Private 0021 { 0022 QMap<QString, KisAllResourcesModel*> resourceModels; 0023 QMap<QString, KisAllTagsModel*> tagModels; 0024 QMap<QString, KisAllTagResourceModel*> tagResourceModels; 0025 }; 0026 0027 KisResourceModelProvider::KisResourceModelProvider() 0028 : d(new Private()) 0029 { 0030 } 0031 0032 KisResourceModelProvider::~KisResourceModelProvider() 0033 { 0034 qDeleteAll(d->resourceModels); 0035 qDeleteAll(d->tagModels); 0036 qDeleteAll(d->tagResourceModels); 0037 delete d; 0038 } 0039 0040 KisAllResourcesModel *KisResourceModelProvider::resourceModel(const QString &resourceType) 0041 { 0042 if (!s_instance->d->resourceModels.contains(resourceType)) { 0043 s_instance->d->resourceModels[resourceType] = new KisAllResourcesModel(resourceType); 0044 } 0045 return s_instance->d->resourceModels[resourceType]; 0046 } 0047 0048 KisAllTagsModel *KisResourceModelProvider::tagModel(const QString &resourceType) 0049 { 0050 if (!s_instance->d->tagModels.contains(resourceType)) { 0051 s_instance->d->tagModels[resourceType] = new KisAllTagsModel(resourceType); 0052 } 0053 return s_instance->d->tagModels[resourceType]; 0054 } 0055 0056 0057 KisAllTagResourceModel *KisResourceModelProvider::tagResourceModel(const QString &resourceType) 0058 { 0059 if (!s_instance->d->tagResourceModels.contains(resourceType)) { 0060 s_instance->d->tagResourceModels[resourceType] = new KisAllTagResourceModel(resourceType); 0061 } 0062 return s_instance->d->tagResourceModels[resourceType]; 0063 } 0064 0065 void KisResourceModelProvider::testingResetAllModels() 0066 { 0067 for (auto it = s_instance->d->tagModels.begin(); it != s_instance->d->tagModels.end(); ++it) { 0068 it.value()->resetQuery(); 0069 } 0070 for (auto it = s_instance->d->resourceModels.begin(); it != s_instance->d->resourceModels.end(); ++it) { 0071 it.value()->resetQuery(); 0072 } 0073 for (auto it = s_instance->d->tagResourceModels.begin(); it != s_instance->d->tagResourceModels.end(); ++it) { 0074 it.value()->resetQuery(); 0075 } 0076 }