File indexing completed on 2024-05-12 15:56:38
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef KOACTIVECANVASRESOURCEDEPENDENCYKORESOURCE_H 0007 #define KOACTIVECANVASRESOURCEDEPENDENCYKORESOURCE_H 0008 0009 #include <KoActiveCanvasResourceDependency.h> 0010 #include <QVariant> 0011 0012 /** 0013 * A canvas resource dependency for KoResource-based canvas resources. It relies 0014 * on the presence of KoResource::requiredCanvasResources(). 0015 */ 0016 template <typename ResourceType> 0017 class KoActiveCanvasResourceDependencyKoResource : public KoActiveCanvasResourceDependency 0018 { 0019 using ResourceTypeSP = QSharedPointer<ResourceType>; 0020 0021 public: 0022 KoActiveCanvasResourceDependencyKoResource(int sourceKey, int targetKey) 0023 : KoActiveCanvasResourceDependency(sourceKey, targetKey) 0024 { 0025 } 0026 0027 bool shouldUpdateSource(QVariant &source, const QVariant &target) override 0028 { 0029 Q_UNUSED(target); 0030 0031 bool needsResourceUpdate = false; 0032 0033 ResourceTypeSP sourceResource = source.value<ResourceTypeSP>(); 0034 0035 if (sourceResource && sourceResource->requiredCanvasResources().contains(targetKey())) { 0036 needsResourceUpdate = true; 0037 } 0038 0039 return needsResourceUpdate; 0040 } 0041 }; 0042 0043 #endif // KOACTIVECANVASRESOURCEDEPENDENCYKORESOURCE_H