File indexing completed on 2024-05-12 15:59:48
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisEmbeddedResourceStorageProxy.h" 0008 0009 #include "kis_assert.h" 0010 #include "KisGlobalResourcesInterface.h" 0011 0012 KisEmbeddedResourceStorageProxy::KisEmbeddedResourceStorageProxy(const QString &storageLocation) 0013 : m_storageLocation(storageLocation), 0014 m_stylesModel(ResourceType::LayerStyles), 0015 m_patternsModel(ResourceType::Patterns), 0016 m_gradientsModel(ResourceType::Gradients) 0017 { 0018 if (m_storageLocation.isEmpty()) { 0019 m_fallbackResourcesInterface.reset(new KisLocalStrokeResources()); 0020 m_rootResourcesInterface = m_fallbackResourcesInterface; 0021 } else { 0022 m_rootResourcesInterface = KisGlobalResourcesInterface::instance(); 0023 } 0024 } 0025 0026 void KisEmbeddedResourceStorageProxy::addResource(KoResourceSP resource) 0027 { 0028 if (m_fallbackResourcesInterface) { 0029 if (resource->resourceType().first == ResourceType::LayerStyles) { 0030 resource = resource->clone(); 0031 } else { 0032 m_fallbackResourcesInterface->addResource(resource); 0033 } 0034 } else { 0035 if (resource->resourceType().first == ResourceType::LayerStyles) { 0036 m_stylesModel.addResource(resource, m_storageLocation); 0037 } else if (resource->resourceType().first == ResourceType::Patterns) { 0038 m_patternsModel.addResource(resource, m_storageLocation); 0039 } else if (resource->resourceType().first == ResourceType::Gradients) { 0040 m_gradientsModel.addResource(resource, m_storageLocation); 0041 } else { 0042 qWarning() << "WARNING: fallback resource proxy is not implemented for type" << resource->resourceType().first; 0043 KIS_SAFE_ASSERT_RECOVER_NOOP(0 && "fallback resource proxy is not implemented"); 0044 } 0045 } 0046 } 0047 0048 KisResourcesInterfaceSP KisEmbeddedResourceStorageProxy::resourcesInterface() 0049 { 0050 return m_rootResourcesInterface; 0051 } 0052 0053 KisResourcesInterfaceSP KisEmbeddedResourceStorageProxy::detachedResourcesInterface() 0054 { 0055 return m_fallbackResourcesInterface ? 0056 KisResourcesInterfaceSP(m_fallbackResourcesInterface->clone()) : 0057 m_rootResourcesInterface; 0058 }