forked from quickshell/quickshell
service/tray: mostly complete StatusNotifierItem implementation
Notably missing dbusmenu which makes it actually useful.
This commit is contained in:
parent
d47a7f2cff
commit
6214ac1002
25 changed files with 1321 additions and 4 deletions
66
src/services/status_notifier/item.hpp
Normal file
66
src/services/status_notifier/item.hpp
Normal file
|
@ -0,0 +1,66 @@
|
|||
#pragma once
|
||||
|
||||
#include <qdbusextratypes.h>
|
||||
#include <qdbuspendingcall.h>
|
||||
#include <qicon.h>
|
||||
#include <qloggingcategory.h>
|
||||
#include <qobject.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qtmetamacros.h>
|
||||
|
||||
#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;
|
||||
|
||||
// clang-format off
|
||||
dbus::DBusPropertyGroup properties;
|
||||
dbus::DBusProperty<QString> id {this->properties, "Id"};
|
||||
dbus::DBusProperty<QString> title {this->properties, "Title"};
|
||||
dbus::DBusProperty<QString> status {this->properties, "Status"};
|
||||
dbus::DBusProperty<QString> category {this->properties, "Category"};
|
||||
dbus::DBusProperty<quint32> windowId {this->properties, "WindowId"};
|
||||
//dbus::DBusProperty<QString> iconThemePath {this->properties, "IconThemePath"};
|
||||
dbus::DBusProperty<QString> iconName {this->properties, "IconName"};
|
||||
dbus::DBusProperty<DBusSniIconPixmapList> iconPixmaps {this->properties, "IconPixmap"};
|
||||
dbus::DBusProperty<QString> overlayIconName {this->properties, "OverlayIconName"};
|
||||
dbus::DBusProperty<DBusSniIconPixmapList> overlayIconPixmaps {this->properties, "OverlayIconPixmap"};
|
||||
dbus::DBusProperty<QString> attentionIconName {this->properties, "AttentionIconName"};
|
||||
dbus::DBusProperty<DBusSniIconPixmapList> attentionIconPixmaps {this->properties, "AttentionIconPixmap"};
|
||||
dbus::DBusProperty<QString> attentionMovieName {this->properties, "AttentionMovieName"};
|
||||
dbus::DBusProperty<DBusSniTooltip> tooltip {this->properties, "ToolTip"};
|
||||
dbus::DBusProperty<bool> isMenu {this->properties, "ItemIsMenu"};
|
||||
dbus::DBusProperty<QDBusObjectPath> 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;
|
||||
};
|
||||
|
||||
} // namespace qs::service::sni
|
Loading…
Add table
Add a link
Reference in a new issue