11#include "transaction.h"
15#include <QDBusConnection>
16#include <QDBusConnectionInterface>
18#include <QDBusServiceWatcher>
24Monitor::Monitor(
QObject *parent)
27 , m_filePath(QStringLiteral(
"Idle"))
30 , m_remainingTime(QStringLiteral(
"Estimating"))
32 m_scheduler =
new org::kde::baloo::scheduler(QStringLiteral(
"org.kde.baloo"),
33 QStringLiteral(
"/scheduler"),
36 m_fileindexer =
new org::kde::baloo::fileindexer(QStringLiteral(
"org.kde.baloo"),
37 QStringLiteral(
"/fileindexer"),
40 connect(m_fileindexer, &org::kde::baloo::fileindexer::startedIndexingFile,
41 this, &Monitor::newFile);
43 connect(m_scheduler, &org::kde::baloo::scheduler::stateChanged,
44 this, &Monitor::slotIndexerStateChanged);
52 m_balooRunning =
false;
53 m_indexerState = Baloo::Unavailable;
54 Q_EMIT balooStateChanged();
55 Q_EMIT indexerStateChanged();
58 if (m_scheduler->isValid()) {
64void Monitor::newFile(
const QString& filePath)
66 m_filePath = filePath;
67 if (m_totalFiles == 0) {
74 if (
now > m_remainingTimeTimer) {
75 updateRemainingTime();
76 m_remainingTimeTimer =
now + 1000;
80QString Monitor::suspendState()
const
82 return m_indexerState == Baloo::Suspended ? QStringLiteral(
"Resume") : QStringLiteral(
"Suspend");
85void Monitor::toggleSuspendState()
87 if (m_indexerState == Baloo::Suspended) {
88 m_scheduler->resume();
90 m_scheduler->suspend();
94void Monitor::balooStarted()
96 m_balooRunning =
true;
97 m_fileindexer->registerMonitor();
99 slotIndexerStateChanged(m_scheduler->state());
100 Q_EMIT balooStateChanged();
103void Monitor::fetchTotalFiles()
105 Baloo::Database *db = Baloo::globalDatabaseInstance();
106 if (db->open(Baloo::Database::ReadOnlyDatabase)) {
107 Baloo::Transaction
tr(db, Baloo::Transaction::ReadOnly);
109 m_filesIndexed =
tr.
size() -
tr.phaseOneSize();
110 Q_EMIT totalFilesChanged();
115void Monitor::startBaloo()
121void Monitor::updateRemainingTime()
123 auto remainingTime = m_scheduler->getRemainingTime();
124 if ((remainingTime != m_remainingTimeSeconds) && (remainingTime > 0)) {
126 m_remainingTimeSeconds = remainingTime;
127 Q_EMIT remainingTimeChanged();
131void Monitor::slotIndexerStateChanged(
int state)
133 Baloo::IndexerState
newState =
static_cast<Baloo::IndexerState
>(state);
138 if (m_indexerState != Baloo::ContentIndexing) {
141 Q_EMIT indexerStateChanged();
145#include "moc_monitor.cpp"
Implements storage for docIds without any associated data Instantiated for:
void serviceRegistered(const QString &serviceName)
void serviceUnregistered(const QString &serviceName)
QDeadlineTimer current(Qt::TimerType timerType)
QString tr(const char *sourceText, const char *disambiguation, int n)
bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid)
qsizetype size() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)