File indexing completed on 2024-03-24 04:59:50
0001 /** 0002 * SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <core/kdeconnectplugin.h> 0010 0011 #include "notification.h" 0012 0013 #define PACKET_TYPE_NOTIFICATION_REQUEST QStringLiteral("kdeconnect.notification.request") 0014 #define PACKET_TYPE_NOTIFICATION_REPLY QStringLiteral("kdeconnect.notification.reply") 0015 #define PACKET_TYPE_NOTIFICATION_ACTION QStringLiteral("kdeconnect.notification.action") 0016 0017 class NotificationsPlugin : public KdeConnectPlugin 0018 { 0019 Q_OBJECT 0020 Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.notifications") 0021 0022 public: 0023 using KdeConnectPlugin::KdeConnectPlugin; 0024 0025 void receivePacket(const NetworkPacket &np) override; 0026 void connected() override; 0027 QString dbusPath() const override; 0028 0029 void clearNotifications(); 0030 void dismissRequested(const QString ¬ification); 0031 void replyRequested(Notification *noti); 0032 void addNotification(Notification *noti); 0033 0034 public Q_SLOTS: 0035 Q_SCRIPTABLE QStringList activeNotifications(); 0036 Q_SCRIPTABLE void sendReply(const QString &replyId, const QString &message); 0037 Q_SCRIPTABLE void sendAction(const QString &key, const QString &action); 0038 0039 Q_SIGNALS: 0040 Q_SCRIPTABLE void notificationPosted(const QString &publicId); 0041 Q_SCRIPTABLE void notificationRemoved(const QString &publicId); 0042 Q_SCRIPTABLE void notificationUpdated(const QString &publicId); 0043 Q_SCRIPTABLE void allNotificationsRemoved(); 0044 0045 private: 0046 void removeNotification(const QString &internalId); 0047 QString newId(); // Generates successive identifiers to use as public ids 0048 void notificationReady(); 0049 0050 QHash<QString, QPointer<Notification>> m_notifications; 0051 QHash<QString, QString> m_internalIdToPublicId; 0052 int m_lastId = 0; 0053 };