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:
Levi Neely 2026-07-07 12:26:46 +02:00
parent 200bf7251e
commit 03321cf8a6
1 changed files with 23 additions and 0 deletions

View File

@ -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",