File indexing completed on 2024-05-12 17:21:22

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 };