File indexing completed on 2024-04-21 05:46:36

0001 // SPDX-License-Identifier: GPL-3.0-or-later
0002 /*
0003   Copyright 2017 - 2022 Martin Koller, kollix@aon.at
0004 
0005   This file is part of liquidshell.
0006 
0007   liquidshell is free software: you can redistribute it and/or modify
0008   it under the terms of the GNU General Public License as published by
0009   the Free Software Foundation, either version 3 of the License, or
0010   (at your option) any later version.
0011 
0012   liquidshell is distributed in the hope that it will be useful,
0013   but WITHOUT ANY WARRANTY; without even the implied warranty of
0014   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0015   GNU General Public License for more details.
0016 
0017   You should have received a copy of the GNU General Public License
0018   along with liquidshell.  If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 
0021 #ifndef _NotificationServer_H_
0022 #define _NotificationServer_H_
0023 
0024 // https://developer.gnome.org/notification-spec/
0025 // https://specifications.freedesktop.org/notification-spec
0026 
0027 #include <SysTrayItem.hxx>
0028 class NotificationList;
0029 
0030 class NotificationServer : public SysTrayItem
0031 {
0032   Q_OBJECT
0033 
0034   public:
0035     NotificationServer(QWidget *parent);
0036 
0037     void CloseNotification(uint id);
0038 
0039     QStringList GetCapabilities();
0040 
0041     QString GetServerInformation(QString &vendor, QString &version, QString &spec_version);
0042 
0043     uint Notify(const QString &app_name, uint replaces_id, const QString &app_icon,
0044                 const QString &summary, const QString &body, const QStringList &actions,
0045                 const QVariantMap &hints, int timeout);
0046 
0047     enum CloseReason
0048     {
0049       Expired = 1,
0050       Dismissed = 2,
0051       Closed = 3,
0052       Undefined = 4
0053     };
0054 
0055     void setAvoidPopup(bool avoid);
0056     bool getAvoidPopup() const;
0057 
0058   protected:
0059     QWidget *getDetailsList() override;
0060 
0061   Q_SIGNALS:
0062     void ActionInvoked(uint id, const QString &action_key);
0063     void NotificationClosed(uint id, uint reason);
0064 
0065   private:
0066     QString makeToolTip() const;
0067 
0068   private:
0069     uint notifyId = 1;
0070     NotificationList *notificationList;
0071 };
0072 
0073 #endif