File indexing completed on 2024-05-12 15:59:53
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Agata Cacko <cacko.azh@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisTagModelProvider.h" 0007 0008 #include <QMap> 0009 #include <QString> 0010 #include <memory> 0011 0012 Q_GLOBAL_STATIC(KisTagModelProvider, s_instance) 0013 0014 struct KisTagModelProvider::Private { 0015 0016 std::map<QString, std::unique_ptr<KisTagModel>> tagModelsMap; 0017 std::unique_ptr<KisTagResourceModel> tagResourceModel; 0018 0019 }; 0020 0021 KisTagModelProvider::KisTagModelProvider() 0022 : d(new Private()) 0023 { 0024 } 0025 0026 0027 KisTagModelProvider::~KisTagModelProvider() 0028 { 0029 delete d; 0030 } 0031 0032 KisTagModel *KisTagModelProvider::tagModel(const QString& resourceType) 0033 { 0034 std::map<QString, std::unique_ptr<KisTagModel> >::const_iterator found = s_instance->d->tagModelsMap.find(resourceType); 0035 0036 if (found == s_instance->d->tagModelsMap.end()) { 0037 std::unique_ptr<KisTagModel> modelStorage(new KisTagModel(resourceType)); 0038 KisTagModel *model = modelStorage.get(); 0039 s_instance->d->tagModelsMap.insert(std::make_pair(resourceType, std::move(modelStorage))); 0040 return model; 0041 } 0042 return found->second.get(); 0043 } 0044 0045 KisTagResourceModel *KisTagModelProvider::tagResourceModel(const QString &resourceType) 0046 { 0047 return s_instance->d->tagResourceModel.get(); 0048 }