File indexing completed on 2024-06-23 04:42:09

0001 /*
0002     SnoreNotify is a Notification Framework based on Qt
0003     Copyright (C) 2013-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 FREEDESKTOPNOTIFICATION_FRONTEND_H
0020 #define FREEDESKTOPNOTIFICATION_FRONTEND_H
0021 #include "libsnore/plugins/snorefrontend.h"
0022 #include "libsnore/application.h"
0023 
0024 class NotificationsAdaptor;
0025 
0026 class FreedesktopFrontend : public Snore::SnoreFrontend
0027 {
0028     Q_OBJECT
0029     Q_INTERFACES(Snore::SnoreFrontend)
0030     Q_PLUGIN_METADATA(IID "org.Snore.NotificationFrontend/1.0" FILE "snore_plugin.json")
0031 public:
0032     FreedesktopFrontend();
0033     ~FreedesktopFrontend() = default;
0034 
0035     uint Notify(const QString &app_name, uint replaces_id, const QString &app_icon, const QString &summary, const QString &body, const QStringList &actions, const QVariantMap &hints, int timeout);
0036     void CloseNotification(uint id);
0037 
0038     QStringList GetCapabilities();
0039     QString GetServerInformation(QString &vendor, QString &version, QString &specVersion);
0040 
0041 Q_SIGNALS:
0042     void NotificationClosed(uint id, uint reason);
0043     void ActionInvoked(uint id, const QString &actionKey);
0044 
0045 public Q_SLOTS:
0046     void slotActionInvoked(Snore::Notification notification) override;
0047     void slotNotificationClosed(Snore::Notification notification) override;
0048 
0049 private:
0050     Snore::Alert m_alert;
0051     NotificationsAdaptor *m_adaptor;
0052 };
0053 
0054 #endif//FREEDESKTOPNOTIFICATION_FRONTEND_H