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