summaryrefslogtreecommitdiff
path: root/src/lib/xdgstatusnotifieritem.h
blob: 7f881a4c6a753f389d77e2291d65fbd46da8c30c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#ifndef XDGSTATUSNOTIFIERITEM_H
#define XDGSTATUSNOTIFIERITEM_H

#include <QObject>

#define XDG_CATEGORY_APPLICATIONSTATUS "ApplicationStatus"
#define XDG_CATEGORY_COMMUNICATIONS "Communications"
#define XDG_CATEGORY_SYSTEMSERVICE "SystemServices"
#define XDG_CATEGORY_HARDWARE "Hardware"

#define XDG_STATUS_PASSIVE "Passive"
#define XDG_STATUS_ACTIVE "Active"
#define XDG_STATUS_NEEDSATTENTION "NeedsAttention"

namespace xdg {

    class StatusNotifierItem : public QObject
    {
        Q_OBJECT

        /* This properties are used for DBus object connection */
        Q_PROPERTY(QString Category READ Category WRITE setCategory NOTIFY CategoryChanged)
        Q_PROPERTY(QString Id READ Id WRITE setId NOTIFY IdChanged)
        Q_PROPERTY(QString Title READ Title WRITE setTitle NOTIFY TitleChanged)
        Q_PROPERTY(QString Status READ Status WRITE setStatus NOTIFY StatusChanged)
        Q_PROPERTY(QString WindowId READ WindowId WRITE setWindowId NOTIFY WindowIdChanged)
        Q_PROPERTY(QString IconName READ IconName WRITE setIconName NOTIFY IconNameChanged)
        Q_PROPERTY(QString OverlayIconName READ OverlayIconName WRITE setOverlayIconName NOTIFY overlayIconNameChanged)
        Q_PROPERTY(QString AttentionIconName READ AttentionIconName WRITE setAttentionIconName NOTIFY AttentionIconNameChanged)
        Q_PROPERTY(QString AttentionMovieName READ AttentionMovieName WRITE setAttentionMovieName NOTIFY AttentionMovieNameChanged)

        /* This properties are used for QML */
        Q_PROPERTY(QString category READ Category WRITE setCategory NOTIFY CategoryChanged)
        Q_PROPERTY(QString idItem READ Id WRITE setId NOTIFY IdChanged)
        Q_PROPERTY(QString title READ Title WRITE setTitle NOTIFY TitleChanged)
        Q_PROPERTY(QString status READ Status WRITE setStatus NOTIFY StatusChanged)
        Q_PROPERTY(QString windowId READ WindowId WRITE setWindowId NOTIFY WindowIdChanged)
        Q_PROPERTY(QString iconName READ IconName WRITE setIconName NOTIFY IconNameChanged)
        Q_PROPERTY(QString overlayIconName READ OverlayIconName WRITE setOverlayIconName NOTIFY overlayIconNameChanged)
        Q_PROPERTY(QString attentionIconName READ AttentionIconName WRITE setAttentionIconName NOTIFY AttentionIconNameChanged)
        Q_PROPERTY(QString attentionMovieName READ AttentionMovieName WRITE setAttentionMovieName NOTIFY AttentionMovieNameChanged)

    public:
        const QStringList xdgCategories {XDG_CATEGORY_APPLICATIONSTATUS, XDG_CATEGORY_COMMUNICATIONS, XDG_CATEGORY_SYSTEMSERVICE, XDG_CATEGORY_HARDWARE};
        const QStringList xdgStatus {XDG_STATUS_PASSIVE, XDG_STATUS_ACTIVE, XDG_STATUS_NEEDSATTENTION};

        explicit StatusNotifierItem(QObject *parent = nullptr);

        QString Title() const;
        void setTitle(const QString &newTitle);

        QString IconName() const;
        void setIconName(const QString &newIconName);

        QString Status() const;
        void setStatus(const QString &newStatus);


        QString OverlayIconName() const;
        void setOverlayIconName(const QString &newOverlayIconName);

        QString Category() const;
        void setCategory(const QString &newCategory);

        QString Id() const;
        void setId(const QString &newId);

        QString WindowId() const;
        void setWindowId(const QString &newWindowId);

        QString AttentionIconName() const;
        void setAttentionIconName(const QString &newAttentionIconName);

        QString AttentionMovieName() const;
        void setAttentionMovieName(const QString &newAttentionMovieName);

    public slots:
        /* DBus API */
        virtual void Activate(uint x, uint y);
        virtual void SecondaryActivate(uint x, uint y);

    signals:
        void NewTitle();
        void NewIcon();
        void NewAttentionIcon();
        void NewOverlayIcon();
        void NewToolTip();
        void NewStatus(QString status);

        void TitleChanged();
        void IconNameChanged();
        void StatusChanged();
        void overlayIconNameChanged();
        void CategoryChanged();
        void IdChanged();
        void WindowIdChanged();

        void activated(uint x, uint y);
        void secondaryActivated(uint x, uint y);


        void AttentionIconNameChanged();

        void AttentionMovieNameChanged();

    private:
        QString m_Title;
        QString m_IconName;
        QString m_Status {XDG_STATUS_ACTIVE};
        QString m_OverlayIconName;
        QString m_Category {XDG_CATEGORY_APPLICATIONSTATUS};
        QString m_Id;
        QString m_WindowId;
        QString m_AttentionIconName;
        QString m_AttentionMovieName;
    };
};

#endif // XDGSTATUSNOTIFIERITEM_H