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 <QDBusConnection>
|
||||
#include <QDBusServiceWatcher>
|
||||
#include <QDir>
|
||||
|
||||
static const char *SERVICE = "org.ollie.SessionManager";
|
||||
|
|
@ -14,6 +15,28 @@ OllieDBusClient::OllieDBusClient(QObject *parent)
|
|||
m_iface = new QDBusInterface(SERVICE, OBJ_PATH, IFACE,
|
||||
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
|
||||
QDBusConnection bus = QDBusConnection::sessionBus();
|
||||
bus.connect(SERVICE, OBJ_PATH, IFACE, "SessionCreated",
|
||||
|
|
|
|||
Reference in New Issue