2018-08-29 18:36:39 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <gtkmm.h>
|
|
|
|
#include <dbus-status-notifier-watcher.h>
|
|
|
|
|
|
|
|
namespace waybar::modules::SNI {
|
|
|
|
|
|
|
|
class Watcher {
|
|
|
|
public:
|
|
|
|
Watcher();
|
|
|
|
~Watcher();
|
|
|
|
private:
|
2018-09-04 21:50:08 +00:00
|
|
|
typedef enum {
|
|
|
|
GF_WATCH_TYPE_HOST,
|
|
|
|
GF_WATCH_TYPE_ITEM
|
|
|
|
} GfWatchType;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
GfWatchType type;
|
|
|
|
Watcher* watcher;
|
|
|
|
gchar* service;
|
|
|
|
gchar* bus_name;
|
|
|
|
gchar* object_path;
|
|
|
|
guint watch_id;
|
|
|
|
} GfWatch;
|
|
|
|
|
2018-08-29 18:36:39 +00:00
|
|
|
static void busAcquired(GDBusConnection*, const gchar*, gpointer);
|
|
|
|
static gboolean handleRegisterHost(Watcher*,
|
|
|
|
GDBusMethodInvocation*, const gchar*);
|
|
|
|
static gboolean handleRegisterItem(Watcher*,
|
|
|
|
GDBusMethodInvocation*, const gchar*);
|
|
|
|
static GfWatch* gfWatchFind(GSList* list, const gchar* bus_name,
|
|
|
|
const gchar* object_path);
|
2018-09-04 21:50:08 +00:00
|
|
|
static GfWatch* gfWatchNew(GfWatchType, const gchar*, const gchar*,
|
|
|
|
const gchar*, Watcher*);
|
2018-08-29 18:36:39 +00:00
|
|
|
static void nameVanished(GDBusConnection* connection, const char* name,
|
|
|
|
gpointer data);
|
|
|
|
|
|
|
|
void updateRegisteredItems(SnOrgKdeStatusNotifierWatcher* obj);
|
|
|
|
|
|
|
|
uint32_t bus_name_id_;
|
|
|
|
uint32_t watcher_id_;
|
|
|
|
GSList* hosts_ = nullptr;
|
|
|
|
GSList* items_ = nullptr;
|
|
|
|
SnOrgKdeStatusNotifierWatcher *watcher_ = nullptr;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|