File indexing completed on 2025-02-09 07:08:07
0001 /* 0002 * SPDX-FileCopyrightText: 2020-2021 Devin Lin <espidev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QObject> 0010 #include <QString> 0011 #include <QCoreApplication> 0012 #include <QSettings> 0013 #include <QQuickItem> 0014 0015 class SettingsModel : public QObject 0016 { 0017 Q_OBJECT 0018 Q_PROPERTY(int simpleAudioFormat READ simpleAudioFormat WRITE setSimpleAudioFormat NOTIFY simpleAudioFormatChanged) 0019 Q_PROPERTY(QString audioCodec READ audioCodec WRITE setAudioCodec NOTIFY audioCodecChanged) 0020 Q_PROPERTY(QString containerFormat READ containerFormat WRITE setContainerFormat NOTIFY containerFormatChanged) 0021 Q_PROPERTY(int audioQuality READ audioQuality WRITE setAudioQuality NOTIFY audioQualityChanged) 0022 0023 public: 0024 enum SimpleAudioFormat { 0025 VORBIS, // codec: audio/x-vorbis, container: audio/ogg 0026 OPUS, // codec: audio/x-opus, container: audio/ogg 0027 FLAC, // codec: audio/x-flac, container: audio/ogg 0028 MP3, // codec: audio/mpeg, mpegversion=(int)4, container: audio/mpeg, mpegversion=(int)1 0029 WAV, // codec: audio/x-raw, container: audio/x-wav 0030 OTHER // not listed here 0031 }; 0032 Q_ENUM(SimpleAudioFormat) 0033 0034 const QMap<SimpleAudioFormat, std::pair<QString, QString>> formatMap = { 0035 {SimpleAudioFormat::VORBIS, {QStringLiteral("audio/x-vorbis"), QStringLiteral("audio/ogg")}}, 0036 {SimpleAudioFormat::OPUS, {QStringLiteral("audio/x-opus"), QStringLiteral("audio/ogg")}}, 0037 {SimpleAudioFormat::FLAC, {QStringLiteral("audio/x-flac"), QStringLiteral("audio/ogg")}}, 0038 {SimpleAudioFormat::MP3, {QStringLiteral("audio/mpeg, mpegversion=(int)4"), QStringLiteral("audio/mpeg, mpegversion=(int)1")}}, 0039 {SimpleAudioFormat::WAV, {QStringLiteral("audio/x-raw"), QStringLiteral("audio/x-wav")}}, 0040 {SimpleAudioFormat::OTHER, {QString(), QString()}} 0041 }; 0042 0043 static SettingsModel* instance(); 0044 0045 int simpleAudioFormat() const; 0046 void setSimpleAudioFormat(int audioFormat); 0047 0048 QString audioCodec() const; 0049 void setAudioCodec(const QString &audioCodec); 0050 0051 QString audioInput() const; 0052 void setAudioInput(const QString &audioInput); 0053 0054 QString containerFormat() const; 0055 void setContainerFormat(const QString &audioContainerFormat); 0056 0057 int audioQuality() const; 0058 void setAudioQuality(int audioQuality); 0059 0060 private: 0061 explicit SettingsModel(QObject *parent = nullptr); 0062 ~SettingsModel(); 0063 0064 QSettings *settings; 0065 0066 Q_SIGNALS: 0067 void simpleAudioFormatChanged(); 0068 void audioCodecChanged(); 0069 void containerFormatChanged(); 0070 void audioQualityChanged(); 0071 };