File indexing completed on 2024-05-12 17:08:50
0001 /* 0002 SPDX-FileCopyrightText: 2009 Marco Martin <notmart@gmail.com> 0003 SPDX-FileCopyrightText: 2009 Matthieu Gallien <matthieu_gallien@yahoo.fr> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <Plasma/DataContainer> 0011 #include <QDBusPendingCallWatcher> 0012 #include <QMenu> 0013 #include <QString> 0014 0015 #include "statusnotifieritem_interface.h" 0016 0017 class DBusMenuImporter; 0018 class KIconLoader; 0019 0020 class StatusNotifierItemSource : public QObject 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 StatusNotifierItemSource(const QString &service, QObject *parent); 0026 ~StatusNotifierItemSource() override; 0027 Plasma::Service *createService(); 0028 0029 void activate(int x, int y); 0030 void secondaryActivate(int x, int y); 0031 void scroll(int delta, const QString &direction); 0032 void contextMenu(int x, int y); 0033 void provideXdgActivationToken(const QString &token); 0034 0035 QIcon attentionIcon() const; 0036 QString attentionIconName() const; 0037 QString attentionMovieName() const; 0038 QString category() const; 0039 QIcon icon() const; 0040 QString iconName() const; 0041 QString iconThemePath() const; 0042 QString id() const; 0043 bool itemIsMenu() const; 0044 QString overlayIconName() const; 0045 QString status() const; 0046 QString title() const; 0047 QVariant toolTipIcon() const; 0048 QString toolTipSubTitle() const; 0049 QString toolTipTitle() const; 0050 QString windowId() const; 0051 0052 Q_SIGNALS: 0053 void contextMenuReady(QMenu *menu); 0054 void activateResult(bool success); 0055 void dataUpdated(); 0056 0057 private Q_SLOTS: 0058 void contextMenuReady(); 0059 void refreshMenu(); 0060 void refresh(); 0061 void performRefresh(); 0062 void syncStatus(const QString &); 0063 void refreshCallback(QDBusPendingCallWatcher *); 0064 void activateCallback(QDBusPendingCallWatcher *); 0065 0066 private: 0067 QPixmap KDbusImageStructToPixmap(const KDbusImageStruct &image) const; 0068 QIcon imageVectorToPixmap(const KDbusImageVector &vector) const; 0069 void overlayIcon(QIcon *icon, QIcon *overlay); 0070 KIconLoader *iconLoader() const; 0071 0072 bool m_valid; 0073 QString m_servicename; 0074 QTimer m_refreshTimer; 0075 KIconLoader *m_customIconLoader; 0076 DBusMenuImporter *m_menuImporter; 0077 org::kde::StatusNotifierItem *m_statusNotifierItemInterface; 0078 bool m_refreshing : 1; 0079 bool m_needsReRefreshing : 1; 0080 0081 QIcon m_attentionIcon; 0082 QString m_attentionIconName; 0083 QString m_attentionMovieName; 0084 QString m_category; 0085 QIcon m_icon; 0086 QString m_iconName; 0087 QString m_iconThemePath; 0088 QString m_id; 0089 bool m_itemIsMenu; 0090 QString m_overlayIconName; 0091 QString m_status; 0092 QString m_title; 0093 QVariant m_toolTipIcon; 0094 QString m_toolTipSubTitle; 0095 QString m_toolTipTitle; 0096 QString m_windowId; 0097 };