7 #ifndef BALOO_FILEINDEXSCHEDULER_H
8 #define BALOO_FILEINDEXSCHEDULER_H
11 #include <QStringList>
12 #include <QThreadPool>
15 #include "filecontentindexerprovider.h"
16 #include "powerstatemonitor.h"
17 #include "indexerstate.h"
18 #include "timeestimator.h"
23 class FileIndexerConfig;
24 class FileContentIndexer;
26 class FileIndexScheduler :
public QObject
29 Q_CLASSINFO(
"D-Bus Interface",
"org.kde.baloo.scheduler")
31 Q_PROPERTY(
int state READ state NOTIFY stateChanged)
33 FileIndexScheduler(Database* db, FileIndexerConfig* config,
bool firstRun,
QObject* parent =
nullptr);
34 ~FileIndexScheduler() override;
35 int state()
const {
return m_indexerState; }
38 Q_SCRIPTABLE
void stateChanged(
int state);
41 void indexNewFile(
const QString& file) {
42 if (!m_newFiles.contains(file)) {
44 if (isIndexerIdle()) {
50 void indexModifiedFile(
const QString& file) {
51 if (!m_modifiedFiles.contains(file)) {
52 m_modifiedFiles << file;
53 if (isIndexerIdle()) {
59 void indexXAttrFile(
const QString& file) {
60 if (!m_xattrFiles.contains(file)) {
62 if (isIndexerIdle()) {
68 void runnerFinished() {
73 void handleFileRemoved(
const QString& file);
76 void scheduleIndexing();
77 void scheduleCheckUnindexedFiles();
78 void scheduleCheckStaleIndexEntries();
79 void startupFinished();
81 Q_SCRIPTABLE
void suspend() { setSuspend(
true); }
82 Q_SCRIPTABLE
void resume() { setSuspend(
false); }
83 Q_SCRIPTABLE uint getRemainingTime();
84 Q_SCRIPTABLE
void checkUnindexedFiles();
85 Q_SCRIPTABLE
void checkStaleIndexEntries();
86 Q_SCRIPTABLE uint getBatchSize();
89 void powerManagementStatusChanged(
bool isOnBattery);
93 bool isIndexerIdle() {
94 return m_isGoingIdle ||
95 (m_indexerState == Suspended) ||
96 (m_indexerState == Startup) ||
97 (m_indexerState == Idle) ||
98 (m_indexerState == LowPowerIdle);
102 FileIndexerConfig* m_config;
110 FileContentIndexerProvider m_provider;
111 FileContentIndexer* m_contentIndexer;
113 PowerStateMonitor m_powerMonitor;
115 IndexerState m_indexerState;
116 TimeEstimator m_timeEstimator;
117 uint m_indexPendingFiles = 0;
118 uint m_indexFinishedFiles = 0;
120 bool m_checkUnindexedFiles;
121 bool m_checkStaleIndexEntries;
130 #endif // BALOO_FILEINDEXSCHEDULER_H