File indexing completed on 2024-05-12 04:45:34

0001 /*
0002     SnoreNotify is a Notification Framework based on Qt
0003     Copyright (C) 2015  Hannah von Reth <vonreth@kde.org>
0004 
0005     SnoreNotify is free software: you can redistribute it and/or modify
0006     it under the terms of the GNU Lesser General Public License as published by
0007     the Free Software Foundation, either version 3 of the License, or
0008     (at your option) any later version.
0009 
0010     SnoreNotify is distributed in the hope that it will be useful,
0011     but WITHOUT ANY WARRANTY; without even the implied warranty of
0012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013     GNU Lesser General Public License for more details.
0014 
0015     You should have received a copy of the GNU Lesser General Public License
0016     along with SnoreNotify.  If not, see <http://www.gnu.org/licenses/>.
0017 */
0018 
0019 #ifndef SETTINGSPLUGIN_H
0020 #define SETTINGSPLUGIN_H
0021 
0022 #include "libsnore/snore_exports.h"
0023 #include "libsnore/plugins/plugins.h"
0024 
0025 namespace Snore
0026 {
0027 
0028 class PluginSettingsWidget;
0029 
0030 class SNORE_EXPORT SettingsPlugin :  public SnorePlugin
0031 {
0032     Q_OBJECT
0033     Q_INTERFACES(Snore::SnorePlugin)
0034 public:
0035     SettingsPlugin();
0036     ~SettingsPlugin();
0037 
0038     PluginTypes type() const override
0039     {
0040         return SnorePlugin::Settings;
0041     }
0042 
0043     virtual PluginSettingsWidget *settingsWidget(SnorePlugin *parent) = 0;
0044 
0045 };
0046 
0047 }
0048 
0049 Q_DECLARE_INTERFACE(Snore::SettingsPlugin,
0050                     "org.Snore.SettingsPlugin/1.0")
0051 
0052 #define SNORE_DECLARE_SETTINGS_PLUGIN( NAME )\
0053 namespace SnorePlugin {\
0054     class NAME ##SettingsPlugin : public Snore::SettingsPlugin {\
0055         Q_OBJECT\
0056         Q_INTERFACES(Snore::SettingsPlugin)\
0057         Q_PLUGIN_METADATA(IID "org.Snore.SettingsPlugin/1.0" FILE "snore_settings_plugin.json")\
0058     public:\
0059         Snore::PluginSettingsWidget *settingsWidget(Snore::SnorePlugin *parent) override{\
0060             return new NAME ##Settings(parent);\
0061         }\
0062     };\
0063 }
0064 
0065 #endif // SETTINGSPLUGIN_H