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 #include "settingsmodel.h" 0008 0009 SettingsModel* SettingsModel::instance() 0010 { 0011 static SettingsModel *s_settingsModel = new SettingsModel(qApp); 0012 return s_settingsModel; 0013 } 0014 0015 SettingsModel::SettingsModel(QObject *parent) : 0016 QObject(parent) 0017 { 0018 settings = new QSettings(); 0019 } 0020 0021 SettingsModel::~SettingsModel() 0022 { 0023 delete settings; 0024 } 0025 0026 int SettingsModel::simpleAudioFormat() const 0027 { 0028 const auto keys = formatMap.keys(); 0029 auto format_it = std::find_if(keys.begin(), keys.end(), [&](const SimpleAudioFormat p) -> bool { 0030 return formatMap[p].first == audioCodec() && formatMap[p].second == containerFormat(); 0031 }); 0032 0033 if (format_it == keys.end()) { 0034 return SimpleAudioFormat::OTHER; 0035 } 0036 0037 return *format_it; 0038 } 0039 0040 void SettingsModel::setSimpleAudioFormat(int audioFormat) 0041 { 0042 if (simpleAudioFormat() == audioFormat) { 0043 return; 0044 } 0045 0046 SimpleAudioFormat format = static_cast<SimpleAudioFormat>(audioFormat); 0047 setAudioCodec(formatMap[format].first); 0048 setContainerFormat(formatMap[format].second); 0049 } 0050 0051 QString SettingsModel::audioCodec() const 0052 { 0053 return settings->value(QStringLiteral("General/audioCodec"), QStringLiteral("audio/x-opus")).toString(); 0054 } 0055 0056 void SettingsModel::setAudioCodec(const QString &audioCodec) 0057 { 0058 settings->setValue(QStringLiteral("General/audioCodec"), audioCodec); 0059 0060 Q_EMIT audioCodecChanged(); 0061 Q_EMIT simpleAudioFormatChanged(); 0062 } 0063 0064 QString SettingsModel::containerFormat() const 0065 { 0066 qDebug() << "format " << settings->value(QStringLiteral("General/containerFormat"), QStringLiteral("audio/ogg")).toString(); 0067 return settings->value(QStringLiteral("General/containerFormat"), QStringLiteral("audio/ogg")).toString(); 0068 } 0069 0070 void SettingsModel::setContainerFormat(const QString &audioContainerFormat) 0071 { 0072 settings->setValue(QStringLiteral("General/containerFormat"), audioContainerFormat); 0073 0074 Q_EMIT containerFormatChanged(); 0075 Q_EMIT simpleAudioFormatChanged(); 0076 } 0077 0078 int SettingsModel::audioQuality() const 0079 { 0080 return settings->value(QStringLiteral("General/audioQuality"), 3).toInt(); 0081 } 0082 0083 void SettingsModel::setAudioQuality(int audioQuality) 0084 { 0085 if (this->audioQuality() == audioQuality) { 0086 return; 0087 } 0088 0089 settings->setValue(QStringLiteral("General/audioQuality"), audioQuality); 0090 0091 Q_EMIT audioQualityChanged(); 0092 }