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