digiKam
Loading...
Searching...
No Matches
dimgfiltergenerator.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2010-06-24
7 * Description : class for creating a particular filter
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QList>
20#include <QString>
21#include <QStringList>
22
23// Local includes
24
25#include "digikam_export.h"
26
27namespace Digikam
28{
29
30class DImgThreadedFilter;
31
32class DIGIKAM_EXPORT DImgFilterGenerator
33{
34public:
35
37 virtual ~DImgFilterGenerator() = default;
38
40 virtual QStringList supportedFilters() = 0;
41
43 virtual QList<int> supportedVersions(const QString& filterIdentifier) = 0;
44
46 virtual QString displayableName(const QString& filterIdentifier) = 0;
47
49 virtual bool isSupported(const QString& filterIdentifier);
50 virtual bool isSupported(const QString& filterIdentifier, int version);
51
53 virtual DImgThreadedFilter* createFilter(const QString& filterIdentifier,
54 int version) = 0;
55private:
56
57 Q_DISABLE_COPY(DImgFilterGenerator)
58};
59
60// -----------------------------------------------------------------------------------
61
62template <class T>
64{
65public:
66
73
74 QStringList supportedFilters() override
75 {
76 return QList<QString>() << T::FilterIdentifier();
77 }
78
79 QList<int> supportedVersions(const QString& filterIdentifier) override
80 {
81 if (filterIdentifier == T::FilterIdentifier())
82 {
83 return T::SupportedVersions();
84 }
85
86 return QList<int>();
87 }
88
89 DImgThreadedFilter* createFilter(const QString& filterIdentifier, int version) override
90 {
91 if ((filterIdentifier == T::FilterIdentifier()) &&
92 T::SupportedVersions().contains(version))
93 {
94 T* const t = new T;
95 t->setFilterVersion(version);
96
97 return t;
98 }
99
100 return nullptr;
101 }
102
103 QString displayableName(const QString& filterIdentifier) override
104 {
105 if (filterIdentifier == T::FilterIdentifier())
106 {
107 return T::DisplayableName();
108 }
109
110 return QString();
111 }
112};
113
114} // namespace Digikam
Definition dimgfiltergenerator.h:64
DImgThreadedFilter * createFilter(const QString &filterIdentifier, int version) override
Create the filter for the given combination of identifier and version.
Definition dimgfiltergenerator.h:89
QList< int > supportedVersions(const QString &filterIdentifier) override
Returns a list with the supported versions for the given identifier.
Definition dimgfiltergenerator.h:79
QStringList supportedFilters() override
Returns a list with identifiers of supported filters.
Definition dimgfiltergenerator.h:74
QString displayableName(const QString &filterIdentifier) override
Returns a QString with filter name for displaying in views.
Definition dimgfiltergenerator.h:103
Definition dimgfiltergenerator.h:33
virtual QString displayableName(const QString &filterIdentifier)=0
Returns a QString with filter name for displaying in views.
virtual QList< int > supportedVersions(const QString &filterIdentifier)=0
Returns a list with the supported versions for the given identifier.
virtual QStringList supportedFilters()=0
Returns a list with identifiers of supported filters.
virtual ~DImgFilterGenerator()=default
virtual DImgThreadedFilter * createFilter(const QString &filterIdentifier, int version)=0
Create the filter for the given combination of identifier and version.
Definition dimgthreadedfilter.h:31
void setFilterVersion(int version)
Definition dimgthreadedfilter.cpp:129
#define T
Definition datefolderview.cpp:34