File indexing completed on 2024-05-12 16:01:41

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_PREFERENCE_SET_REGISTRY_H_
0008 #define KIS_PREFERENCE_SET_REGISTRY_H_
0009 
0010 #include <QObject>
0011 #include <QWidget>
0012 #include <QString>
0013 
0014 #include "KoGenericRegistry.h"
0015 
0016 #include "kis_types.h"
0017 
0018 #include <kritaui_export.h>
0019 
0020 class QIcon;
0021 
0022 /**
0023  * Implement this abstract class to provide a preferences pane for the preferences dialog.
0024  */
0025 class KRITAUI_EXPORT KisPreferenceSet : public QWidget {
0026 Q_OBJECT
0027 public:
0028     KisPreferenceSet(QWidget* parent=0) : QWidget(parent)
0029     {}
0030     virtual QString id() = 0;
0031     virtual QString name() = 0;
0032     virtual QString header() = 0;
0033     virtual QIcon icon() = 0;
0034 public Q_SLOTS:
0035     virtual void savePreferences() const = 0;
0036     virtual void loadPreferences() = 0;
0037     virtual void loadDefaultPreferences() = 0;
0038 };
0039 
0040 class KRITAUI_EXPORT KisAbstractPreferenceSetFactory {
0041 public:
0042     virtual ~KisAbstractPreferenceSetFactory() {}
0043     virtual KisPreferenceSet* createPreferenceSet() = 0;
0044     virtual QString id() const = 0;
0045 };
0046 
0047 /**
0048  * This registry does not load the plugins itself: plugins with preferences panes should
0049  * add those panes when they are loaded themselves.
0050  */
0051 class KRITAUI_EXPORT KisPreferenceSetRegistry : public QObject, public KoGenericRegistry<KisAbstractPreferenceSetFactory*>
0052 {
0053 public:
0054     KisPreferenceSetRegistry();
0055     ~KisPreferenceSetRegistry() override;
0056     static KisPreferenceSetRegistry * instance();
0057 
0058 private:
0059     Q_DISABLE_COPY(KisPreferenceSetRegistry)
0060 };
0061 
0062 #endif // KIS_PREFERENCE_SETSPACE_REGISTRY_H_