File indexing completed on 2024-05-12 16:02:29

0001 /*
0002  * SPDX-FileCopyrightText: 2022 Alvin Wong <alvin@alvinhc.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef KIS_RECENT_FILES_MANAGER_H
0008 #define KIS_RECENT_FILES_MANAGER_H
0009 
0010 #include <QObject>
0011 #include <QString>
0012 #include <QUrl>
0013 #include <QVector>
0014 
0015 #include <kritawidgetutils_export.h>
0016 
0017 class KConfigGroup;
0018 
0019 struct KRITAWIDGETUTILS_EXPORT KisRecentFilesEntry
0020 {
0021     QUrl m_url;
0022     QString m_displayName;
0023 }; /* struct KisRecentFilesEntry */
0024 
0025 class KRITAWIDGETUTILS_EXPORT KisRecentFilesManager : public QObject
0026 {
0027     Q_OBJECT
0028 
0029     class Private;
0030     Private *m_d;
0031 
0032     KisRecentFilesManager();
0033     ~KisRecentFilesManager();
0034 
0035     Q_DISABLE_COPY(KisRecentFilesManager)
0036 
0037 public:
0038     static KisRecentFilesManager *instance();
0039 
0040     void clear();
0041 
0042     void add(const QUrl &url);
0043     void remove(const QUrl &url);
0044 
0045     QVector<KisRecentFilesEntry> recentFiles() const;
0046     QList<QUrl> recentUrlsLatestFirst() const;
0047 
0048 private:
0049     void loadEntries(const KConfigGroup &config);
0050     void saveEntries(const KConfigGroup &config);
0051 
0052 Q_SIGNALS:
0053     void fileAdded(const QUrl &url);
0054     void fileRemoved(const QUrl &url);
0055     void listRenewed();
0056 }; /* class KisRecentFileRegistry */
0057 
0058 #endif /* KIS_RECENT_FILES_MANAGER_H */