File indexing completed on 2024-04-28 03:51:52
0001 /* 0002 This file is part of the KDE Baloo Project 0003 SPDX-FileCopyrightText: 2015 Pinak Ahuja <pinak.ahuja@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #ifndef BALOOMONITOR_MONITOR_H 0009 #define BALOOMONITOR_MONITOR_H 0010 0011 #include <QDeadlineTimer> 0012 #include <QObject> 0013 #include <QString> 0014 0015 #include "indexerstate.h" 0016 #include "schedulerinterface.h" 0017 #include "fileindexerinterface.h" 0018 0019 namespace Baloo { 0020 class Monitor : public QObject 0021 { 0022 Q_OBJECT 0023 0024 Q_PROPERTY(QString filePath READ filePath NOTIFY newFileIndexed) 0025 Q_PROPERTY(QString suspendState READ suspendState NOTIFY indexerStateChanged) 0026 Q_PROPERTY(bool balooRunning MEMBER m_balooRunning NOTIFY balooStateChanged) 0027 Q_PROPERTY(uint totalFiles MEMBER m_totalFiles NOTIFY totalFilesChanged) 0028 Q_PROPERTY(uint filesIndexed MEMBER m_filesIndexed NOTIFY newFileIndexed) 0029 Q_PROPERTY(QString remainingTime READ remainingTime NOTIFY remainingTimeChanged) 0030 Q_PROPERTY(QString stateString READ stateString NOTIFY indexerStateChanged) 0031 Q_PROPERTY(Baloo::IndexerState state READ state NOTIFY indexerStateChanged) 0032 public: 0033 explicit Monitor(QObject* parent = nullptr); 0034 0035 // Property readers 0036 QString filePath() const { return m_filePath; } 0037 QString suspendState() const; 0038 QString remainingTime() const { return m_remainingTime; } 0039 QString stateString() const { return Baloo::stateString(m_indexerState); } 0040 Baloo::IndexerState state() const { return m_indexerState; } 0041 0042 // Invokable methods 0043 Q_INVOKABLE void toggleSuspendState(); 0044 Q_INVOKABLE void startBaloo(); 0045 0046 Q_SIGNALS: 0047 void newFileIndexed(); 0048 void balooStateChanged(); 0049 void totalFilesChanged(); 0050 void remainingTimeChanged(); 0051 void indexerStateChanged(); 0052 0053 private Q_SLOTS: 0054 void newFile(const QString& filePath); 0055 void balooStarted(); 0056 void slotIndexerStateChanged(int state); 0057 0058 private: 0059 void fetchTotalFiles(); 0060 void updateRemainingTime(); 0061 0062 QDBusConnection m_bus; 0063 0064 QString m_filePath; 0065 bool m_balooRunning = false; 0066 Baloo::IndexerState m_indexerState = Baloo::Unavailable; 0067 QDeadlineTimer m_remainingTimeTimer = QDeadlineTimer(0); 0068 0069 org::kde::baloo::scheduler* m_scheduler; 0070 org::kde::baloo::fileindexer* m_fileindexer; 0071 0072 uint m_totalFiles = 0; 0073 uint m_filesIndexed = 0; 0074 QString m_remainingTime; 0075 uint m_remainingTimeSeconds = 0; 0076 }; 0077 } 0078 #endif //BALOOMONITOR_MONITOR_H