#pragma once #include #include #include #include #include #include #include #include #include "../../dbus/dbusutil.hpp" #include "dbus_item.h" #include "dbus_item_types.hpp" Q_DECLARE_LOGGING_CATEGORY(logStatusNotifierItem); namespace qs::service::sni { class StatusNotifierItem: public QObject { Q_OBJECT; public: explicit StatusNotifierItem(const QString& address, QObject* parent = nullptr); [[nodiscard]] bool isValid() const; [[nodiscard]] bool isReady() const; [[nodiscard]] QString iconId() const; [[nodiscard]] QPixmap createPixmap(const QSize& size) const; void activate(); void secondaryActivate(); void scroll(qint32 delta, bool horizontal); // clang-format off dbus::DBusPropertyGroup properties; dbus::DBusProperty id {this->properties, "Id"}; dbus::DBusProperty title {this->properties, "Title"}; dbus::DBusProperty status {this->properties, "Status"}; dbus::DBusProperty category {this->properties, "Category"}; dbus::DBusProperty windowId {this->properties, "WindowId"}; dbus::DBusProperty iconThemePath {this->properties, "IconThemePath"}; dbus::DBusProperty iconName {this->properties, "IconName"}; dbus::DBusProperty iconPixmaps {this->properties, "IconPixmap"}; dbus::DBusProperty overlayIconName {this->properties, "OverlayIconName"}; dbus::DBusProperty overlayIconPixmaps {this->properties, "OverlayIconPixmap"}; dbus::DBusProperty attentionIconName {this->properties, "AttentionIconName"}; dbus::DBusProperty attentionIconPixmaps {this->properties, "AttentionIconPixmap"}; dbus::DBusProperty attentionMovieName {this->properties, "AttentionMovieName"}; dbus::DBusProperty tooltip {this->properties, "ToolTip"}; dbus::DBusProperty isMenu {this->properties, "ItemIsMenu"}; dbus::DBusProperty menuPath {this->properties, "Menu"}; // clang-format on signals: void iconChanged(); void ready(); private slots: void updateIcon(); void onGetAllFinished(); private: DBusStatusNotifierItem* item = nullptr; bool mReady = false; // bumped to inhibit caching quint32 iconIndex = 0; QString watcherId; }; } // namespace qs::service::sni