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 <QDateTime>
0012 #include <QJsonObject>
0013 
0014 class Recording : public QObject
0015 {
0016     Q_OBJECT
0017     Q_PROPERTY(QString filePath READ filePath WRITE setFilePath NOTIFY propertyChanged)
0018     Q_PROPERTY(QString fileExtension READ fileExtension NOTIFY propertyChanged)
0019     Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY propertyChanged)
0020     Q_PROPERTY(QString recordDate READ recordDatePretty NOTIFY propertyChanged)
0021     Q_PROPERTY(QString recordingLength READ recordingLengthPretty NOTIFY propertyChanged)
0022     
0023 public:
0024     explicit Recording(QObject *parent = nullptr, const QString &filePath = {}, const QString &fileName = {}, QDateTime recordDate = QDateTime::currentDateTime(), int recordingLength = 0);
0025     explicit Recording(QObject *parent, const QJsonObject &obj);
0026     
0027     QJsonObject toJson() const;
0028     
0029     QString filePath() const;
0030     QString fileName() const;
0031     QString fileExtension() const;
0032     
0033     QDateTime recordDate() const;
0034     QString recordDatePretty() const;
0035     
0036     int recordingLength() const;
0037     QString recordingLengthPretty() const;
0038 
0039     void setFilePath(const QString &filePath);
0040     void setFileName(const QString &fileName);
0041 
0042     void setRecordDate(const QDateTime &date);
0043     void setRecordingLength(int recordingLength);
0044     
0045     Q_INVOKABLE void createCopyOfFile(const QString &path);
0046 
0047 private:
0048     QString m_filePath, m_fileName;
0049     QDateTime m_recordDate;
0050     int m_recordingLength; // seconds
0051 
0052 Q_SIGNALS:
0053     void propertyChanged();
0054 };