File indexing completed on 2025-02-09 07:08:07
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im> 0003 * SPDX-FileCopyrightText: 2021 Devin Lin <espidev@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <QObject> 0011 #include <QAbstractListModel> 0012 #include <QSettings> 0013 #include <QFile> 0014 #include <QJsonObject> 0015 #include <QDateTime> 0016 #include <QCoreApplication> 0017 0018 #include "recording.h" 0019 0020 class RecordingModel : public QAbstractListModel 0021 { 0022 Q_OBJECT 0023 Q_PROPERTY(int count READ count NOTIFY countChanged) 0024 0025 public: 0026 static RecordingModel* instance(); 0027 0028 enum { 0029 RecordingRole = Qt::UserRole, 0030 }; 0031 0032 void load(); 0033 void save(); 0034 0035 int count() const; 0036 int rowCount(const QModelIndex &parent) const override; 0037 QVariant data(const QModelIndex &index, int role) const override; 0038 QHash<int, QByteArray> roleNames() const override; 0039 0040 QList<Recording *> &recordings(); 0041 0042 Q_INVOKABLE QString nextDefaultRecordingName(); 0043 0044 Q_INVOKABLE void insertRecording(QString filePath, QString fileName, QDateTime recordDate, int recordingLength); 0045 Q_INVOKABLE void deleteRecording(const int index); 0046 0047 Q_SIGNALS: 0048 void countChanged(); 0049 0050 private: 0051 explicit RecordingModel(QObject *parent = nullptr); 0052 ~RecordingModel(); 0053 0054 QSettings* m_settings; 0055 QList<Recording*> m_recordings; 0056 0057 };