diff --git a/src/file/indexerstate.h b/src/file/indexerstate.h --- a/src/file/indexerstate.h +++ b/src/file/indexerstate.h @@ -37,6 +37,7 @@ UnindexedFileCheck, StaleIndexEntriesClean, LowPowerIdle, + Unavailable, }; inline QString stateString(IndexerState state) @@ -73,6 +74,9 @@ case LowPowerIdle: status = i18n("Idle (Powersave)"); break; + case Unavailable: + status = i18n("Not Running"); + break; } return status; } diff --git a/src/qml/experimental/monitor.h b/src/qml/experimental/monitor.h --- a/src/qml/experimental/monitor.h +++ b/src/qml/experimental/monitor.h @@ -77,7 +77,7 @@ QString m_filePath; bool m_balooRunning = false; - Baloo::IndexerState m_indexerState = Baloo::Idle; + Baloo::IndexerState m_indexerState = Baloo::Unavailable; org::kde::baloo::scheduler* m_scheduler; org::kde::baloo::fileindexer* m_fileindexer; diff --git a/src/qml/experimental/monitor.cpp b/src/qml/experimental/monitor.cpp --- a/src/qml/experimental/monitor.cpp +++ b/src/qml/experimental/monitor.cpp @@ -58,17 +58,21 @@ connect(m_scheduler, &org::kde::baloo::scheduler::stateChanged, this, &Monitor::slotIndexerStateChanged); + QDBusServiceWatcher* balooWatcher = new QDBusServiceWatcher(m_scheduler->service(), + m_bus, + QDBusServiceWatcher::WatchForRegistration, + this); + connect(balooWatcher, &QDBusServiceWatcher::serviceRegistered, this, &Monitor::balooStarted); + connect(balooWatcher, &QDBusServiceWatcher::serviceUnregistered, this, [this]() { + m_balooRunning = false; + m_indexerState = Baloo::Unavailable; + emit balooStateChanged(); + emit indexerStateChanged(); + }); + if (m_scheduler->isValid()) { // baloo is already running balooStarted(m_scheduler->service()); - - } else { - m_balooRunning = false; - QDBusServiceWatcher* balooWatcher = new QDBusServiceWatcher(m_scheduler->service(), - m_bus, - QDBusServiceWatcher::WatchForRegistration, - this); - connect(balooWatcher, &QDBusServiceWatcher::serviceRegistered, this, &Monitor::balooStarted); } }