/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: iaom * */ #ifndef INDEXSTATUSRECORDER_H #define INDEXSTATUSRECORDER_H #include #include #include #include #define CONTENT_INDEX_DATABASE_STATE_KEY "content_index_database_state" #define OCR_CONTENT_INDEX_DATABASE_STATE_KEY "ocr_content_index_database_state" #define INDEX_DATABASE_STATE_KEY "index_database_state" #define AI_INDEX_DATABASE_STATE_KEY "ai_index_database_state" #define INDEX_STATUS QDir::homePath() + "/.config/org.ukui/ukui-search/ukui-search-index-status.conf" #define INDEX_DATABASE_VERSION_KEY "index_database_version" #define CONTENT_DATABASE_VERSION_KEY "content_database_version" #define OCR_CONTENT_DATABASE_VERSION_KEY "ocr_content_database_version" namespace UkuiSearch { //fixme: we need a better way to record index status. class IndexStatusRecorder : public QObject { Q_OBJECT public: enum State{ Initializing = 0, Error = 1, Ready = 2, Updating = 3, Off = 4, RealTimeUpdating = 5 }; Q_ENUM(State) static IndexStatusRecorder *getInstance(); void setStatus(const QString& key, UkuiSearch::IndexStatusRecorder::State state); const QVariant getStatus(const QString& key); void setVersion(const QString& key, const QString& version); bool versionCheck(const QString& key, const QString& version); bool indexDatabaseEnable(); bool contentIndexDatabaseEnable(); private: explicit IndexStatusRecorder(QObject *parent = nullptr); static IndexStatusRecorder *m_instance; QSettings *m_status = nullptr; QMutex m_mutex; }; } #endif // INDEXSTATUSRECORDER_H