plasmoid: clear sessions when ollie-kde service disappears
Watch for NameOwnerChanged via QDBusServiceWatcher. When the service unregisters, reset all state. When it re-registers, refresh the session list.
This commit is contained in:
parent
200bf7251e
commit
03321cf8a6
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <QDBusReply>
|
#include <QDBusReply>
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
#include <QDBusServiceWatcher>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
static const char *SERVICE = "org.ollie.SessionManager";
|
static const char *SERVICE = "org.ollie.SessionManager";
|
||||||
|
|
@ -14,6 +15,28 @@ OllieDBusClient::OllieDBusClient(QObject *parent)
|
||||||
m_iface = new QDBusInterface(SERVICE, OBJ_PATH, IFACE,
|
m_iface = new QDBusInterface(SERVICE, OBJ_PATH, IFACE,
|
||||||
QDBusConnection::sessionBus(), this);
|
QDBusConnection::sessionBus(), this);
|
||||||
|
|
||||||
|
// Watch for service appearing/disappearing
|
||||||
|
auto *watcher = new QDBusServiceWatcher(SERVICE,
|
||||||
|
QDBusConnection::sessionBus(),
|
||||||
|
QDBusServiceWatcher::WatchForRegistration | QDBusServiceWatcher::WatchForUnregistration,
|
||||||
|
this);
|
||||||
|
connect(watcher, &QDBusServiceWatcher::serviceRegistered, this, [this]() {
|
||||||
|
refreshSessions();
|
||||||
|
});
|
||||||
|
connect(watcher, &QDBusServiceWatcher::serviceUnregistered, this, [this]() {
|
||||||
|
m_sessions.clear();
|
||||||
|
m_activeSessionId.clear();
|
||||||
|
m_chatText.clear();
|
||||||
|
m_chatOffset = 0;
|
||||||
|
m_activeState = "idle";
|
||||||
|
m_activeCwd.clear();
|
||||||
|
emit sessionsChanged();
|
||||||
|
emit activeSessionIdChanged();
|
||||||
|
emit chatTextChanged();
|
||||||
|
emit activeStateChanged();
|
||||||
|
emit activeCwdChanged();
|
||||||
|
});
|
||||||
|
|
||||||
// Connect D-Bus signals
|
// Connect D-Bus signals
|
||||||
QDBusConnection bus = QDBusConnection::sessionBus();
|
QDBusConnection bus = QDBusConnection::sessionBus();
|
||||||
bus.connect(SERVICE, OBJ_PATH, IFACE, "SessionCreated",
|
bus.connect(SERVICE, OBJ_PATH, IFACE, "SessionCreated",
|
||||||
|
|
|
||||||
Reference in New Issue