File indexing completed on 2024-06-23 05:21:18

0001 /* Copyright (C) Roland Pallai <dap78@magex.hu>
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 AKONADI_ADDRESSBOOK
0024 #define AKONADI_ADDRESSBOOK
0025 
0026 #include <QObject>
0027 #include <QSettings>
0028 
0029 #include "Plugins/AddressbookPlugin.h"
0030 #include "Plugins/PluginInterface.h"
0031 
0032 using namespace Plugins;
0033 
0034 /** @short Akonadi address book interface
0035 
0036 Akonadi is centralized database to store, index and retrieve the user's contacts and more since KDE SC 4.4.
0037 Contact lookup is entirely based on searching capabilities of Akonadi.
0038 */
0039 class AkonadiAddressbook : public AddressbookPlugin {
0040     Q_OBJECT
0041 
0042 public:
0043     AkonadiAddressbook(QObject *parent);
0044     virtual ~AkonadiAddressbook();
0045 
0046     virtual AddressbookPlugin::Features features() const;
0047 
0048 public slots:
0049     virtual AddressbookCompletionJob *requestCompletion(const QString &input, const QStringList &ignores = QStringList(), int max = -1);
0050     virtual AddressbookNamesJob *requestPrettyNamesForAddress(const QString &email);
0051     virtual void openAddressbookWindow();
0052     virtual void openContactWindow(const QString &email, const QString &displayName);
0053 };
0054 
0055 class trojita_plugin_AkonadiAddressbookPlugin : public QObject, public AddressbookPluginInterface
0056 {
0057     Q_OBJECT
0058     Q_INTERFACES(Plugins::AddressbookPluginInterface)
0059     Q_PLUGIN_METADATA(IID "net.flaska.trojita.plugins.addressbook.akonadiaddressbook")
0060 
0061 public:
0062     QString name() const override;
0063     QString description() const override;
0064     AddressbookPlugin *create(QObject *parent, QSettings *settings) override;
0065 };
0066 
0067 #endif