File indexing completed on 2024-05-05 04:50:49

0001 /*
0002  * SPDX-FileCopyrightText: 2021 George Florea Bănuș <georgefb899@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef RECENTFILESMODEL_H
0008 #define RECENTFILESMODEL_H
0009 
0010 #include <KConfigGroup>
0011 
0012 #include <QAbstractListModel>
0013 #include <QUrl>
0014 #include <QtQml/qqmlregistration.h>
0015 
0016 class KRecentFilesAction;
0017 
0018 struct RecentFile {
0019     QUrl url;
0020     QString name;
0021 };
0022 
0023 class RecentFilesModel : public QAbstractListModel
0024 {
0025     Q_OBJECT
0026     QML_NAMED_ELEMENT(RecentFilesModel)
0027 
0028 public:
0029     explicit RecentFilesModel(QObject *parent = nullptr);
0030 
0031     enum Roles {
0032         PathRole = Qt::UserRole + 1,
0033         NameRole,
0034     };
0035 
0036     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0037     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0038     QHash<int, QByteArray> roleNames() const override;
0039     Q_INVOKABLE void addUrl(const QString &path, const QString &name = QString());
0040     Q_INVOKABLE void clear();
0041     Q_INVOKABLE void deleteEntries();
0042     Q_INVOKABLE void populate();
0043 
0044     int maxRecentFiles() const;
0045     void setMaxRecentFiles(int _maxRecentFiles);
0046 
0047 private:
0048     void saveEntries();
0049     void getHttpItemInfo(const QUrl &url);
0050     QList<RecentFile> m_urls;
0051     KConfigGroup m_recentFilesConfigGroup;
0052     int m_maxRecentFiles{10};
0053 };
0054 
0055 #endif // RECENTFILESMODEL_H