diff --git a/src/file/fileindexscheduler.h b/src/file/fileindexscheduler.h --- a/src/file/fileindexscheduler.h +++ b/src/file/fileindexscheduler.h @@ -54,25 +54,25 @@ void indexNewFile(const QString& file) { if (!m_newFiles.contains(file)) { m_newFiles << file; - if (m_indexerState == Idle || m_isGoingIdle) { + if (isIndexerIdle()) { QTimer::singleShot(0, this, &FileIndexScheduler::scheduleIndexing); } } } void indexModifiedFile(const QString& file) { if (!m_modifiedFiles.contains(file)) { m_modifiedFiles << file; - if (m_indexerState == Idle || m_isGoingIdle) { + if (isIndexerIdle()) { QTimer::singleShot(0, this, &FileIndexScheduler::scheduleIndexing); } } } void indexXAttrFile(const QString& file) { if (!m_xattrFiles.contains(file)) { m_xattrFiles << file; - if (m_indexerState == Idle || m_isGoingIdle) { + if (isIndexerIdle()) { QTimer::singleShot(0, this, &FileIndexScheduler::scheduleIndexing); } } @@ -102,6 +102,11 @@ private: void setSuspend(bool suspend); + bool isIndexerIdle() { + return m_isGoingIdle || + (m_indexerState == Idle) || + (m_indexerState == LowPowerIdle); + } Database* m_db; FileIndexerConfig* m_config; diff --git a/src/file/fileindexscheduler.cpp b/src/file/fileindexscheduler.cpp --- a/src/file/fileindexscheduler.cpp +++ b/src/file/fileindexscheduler.cpp @@ -58,6 +58,10 @@ connect(&m_powerMonitor, &PowerStateMonitor::powerManagementStatusChanged, this, &FileIndexScheduler::powerManagementStatusChanged); + if (m_powerMonitor.isOnBattery()) { + m_indexerState = LowPowerIdle; + } + m_contentIndexer = new FileContentIndexer(m_config, &m_provider, this); m_contentIndexer->setAutoDelete(false); connect(m_contentIndexer, &FileContentIndexer::done, this, @@ -76,7 +80,7 @@ void FileIndexScheduler::scheduleIndexing() { - if (!m_isGoingIdle && m_indexerState != Idle) { + if (!isIndexerIdle()) { return; } m_isGoingIdle = false; @@ -126,8 +130,8 @@ // No housekeeping, no content indexing if (m_powerMonitor.isOnBattery()) { - if (m_indexerState != Idle) { - m_indexerState = Idle; + if (m_indexerState != LowPowerIdle) { + m_indexerState = LowPowerIdle; Q_EMIT stateChanged(m_indexerState); } return; @@ -223,7 +227,6 @@ if (isOnBattery && m_indexerState == ContentIndexing) { qCDebug(BALOO) << "On battery, stopping content indexer"; m_contentIndexer->quit(); - //TODO: Maybe we can add a special state for suspended due to being on battery. } else if (!isOnBattery) { scheduleIndexing(); } diff --git a/src/file/indexerstate.h b/src/file/indexerstate.h --- a/src/file/indexerstate.h +++ b/src/file/indexerstate.h @@ -35,7 +35,8 @@ XAttrFiles, ContentIndexing, UnindexedFileCheck, - StaleIndexEntriesClean + StaleIndexEntriesClean, + LowPowerIdle, }; inline QString stateString(IndexerState state) @@ -68,6 +69,10 @@ break; case StaleIndexEntriesClean: status = i18n("Checking for stale index entries"); + break; + case LowPowerIdle: + status = i18n("Idle (Powersave)"); + break; } return status; }