File indexing completed on 2024-06-16 05:01:50

0001 /* Copyright (C) 2013 Pali Rohár <pali.rohar@gmail.com>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 
0023 #ifndef TROJITAPLUGIN_INTERFACE
0024 #define TROJITAPLUGIN_INTERFACE
0025 
0026 #include <QObject>
0027 #include <QString>
0028 #include <QtPlugin>
0029 
0030 class QSettings;
0031 
0032 namespace Plugins
0033 {
0034 
0035 class AddressbookPlugin;
0036 
0037 class AddressbookPluginInterface
0038 {
0039 public:
0040     /** @short Return name (internal identifier) of plugin. This string must not be translated! */
0041     virtual QString name() const = 0;
0042 
0043     /** @short Return short description (visible for user) of plugin. This string can be translated. */
0044     virtual QString description() const = 0;
0045 
0046     /** @short Return new plugin instance implemented by plugin */
0047     virtual AddressbookPlugin *create(QObject *parent, QSettings *settings) = 0;
0048 };
0049 
0050 
0051 class PasswordPlugin;
0052 
0053 class PasswordPluginInterface
0054 {
0055 public:
0056     /** @short Return name (internal identifier) of plugin. This string must not be translated! */
0057     virtual QString name() const = 0;
0058 
0059     /** @short Return short description (visible for user) of plugin. This string can be translated. */
0060     virtual QString description() const = 0;
0061 
0062     /** @short Return new plugin instance implemented by plugin */
0063     virtual PasswordPlugin *create(QObject *parent, QSettings *settings) = 0;
0064 };
0065 
0066 class SpellcheckerPlugin;
0067 
0068 class SpellcheckerPluginInterface
0069 {
0070 public:
0071     /** @short Return name (internal identifier) of plugin. This string must not be translated! */
0072     virtual QString name() const = 0;
0073 
0074     /** @short Return short description (visible for user) of plugin. This string can be translated. */
0075     virtual QString description() const = 0;
0076 
0077     /** @short Return new plugin instance implemented by plugin */
0078     virtual SpellcheckerPlugin *create(QObject *parent, QSettings *settings) = 0;
0079 };
0080 
0081 }
0082 
0083 Q_DECLARE_INTERFACE(Plugins::AddressbookPluginInterface, "AddressbookPluginInterface")
0084 Q_DECLARE_INTERFACE(Plugins::PasswordPluginInterface, "PasswordPluginInterface")
0085 Q_DECLARE_INTERFACE(Plugins::SpellcheckerPluginInterface, "SpellcheckerPluginInterface")
0086 
0087 #endif //TROJITAPLUGIN_INTERFACE
0088 
0089 // vim: set et ts=4 sts=4 sw=4