@@ -65,12 +65,19 @@ namespace Audio::Internal {
6565 return documentsDirectory ();
6666 }
6767
68- void applyFileType (AudioExporterConfig &config, int index) {
68+ void applyFileType (AudioExporterConfig &config, int index, int formatOption = 0 ) {
6969 const QFileInfo fileInfo (config.fileName ());
7070 config.setFileType (static_cast <AudioExporterConfig::FileType>(index));
71- config.setFormatOption (0 );
71+ config.setFormatOption (formatOption );
7272 config.setFileName (fileInfo.completeBaseName () + QStringLiteral (" ." ) +
73- AudioExporterConfig::extensionOfType (static_cast <AudioExporterConfig::FileType>(index)));
73+ AudioExporterConfig::extensionOfType (config.fileType (), config.formatOption ()));
74+ }
75+
76+ void applyFormatOption (AudioExporterConfig &config, int index) {
77+ const QFileInfo fileInfo (config.fileName ());
78+ config.setFormatOption (index);
79+ config.setFileName (fileInfo.completeBaseName () + QStringLiteral (" ." ) +
80+ AudioExporterConfig::extensionOfType (config.fileType (), config.formatOption ()));
7481 }
7582 }
7683
@@ -231,7 +238,7 @@ namespace Audio::Internal {
231238 const QStringList filters = {
232239 tr (" WAV (*.wav)" ),
233240 tr (" FLAC (*.flac)" ),
234- tr (" Ogg Container (*.ogg)" ),
241+ tr (" Ogg Container (*.ogg *.opus )" ),
235242 tr (" MP3 (*.mp3)" ),
236243 };
237244 QString selectedFilter = filters.at (config.fileType ());
@@ -252,7 +259,9 @@ namespace Audio::Internal {
252259 : QStringLiteral (" _${trackIndex}_${trackName}." );
253260 config.setFileName (fileInfo.completeBaseName () + templateSuffix + fileInfo.suffix ());
254261 config.setFileDirectory (fileInfo.dir ().canonicalPath ());
255- applyFileType (config, filters.indexOf (selectedFilter));
262+ const auto fileType = filters.indexOf (selectedFilter);
263+ const auto formatOption = fileType == config.fileType () ? config.formatOption () : 0 ;
264+ applyFileType (config, fileType, formatOption);
256265 presets->setCurrentConfig (config);
257266 }
258267
@@ -301,7 +310,7 @@ namespace Audio::Internal {
301310 basename += QStringLiteral (" _${trackIndex}_${trackName}" );
302311 }
303312 if (suffix.isEmpty ()) {
304- suffix = AudioExporterConfig::extensionOfType (config.fileType ());
313+ suffix = AudioExporterConfig::extensionOfType (config.fileType (), config. formatOption () );
305314 }
306315 config.setFileName (basename + QStringLiteral (" ." ) + suffix);
307316 presets->setCurrentConfig (config);
@@ -314,6 +323,13 @@ namespace Audio::Internal {
314323 presets->setCurrentConfig (config);
315324 }
316325
326+ void ExportAudioAddOn::setFormatOption (int index) {
327+ auto presets = AudioExporterPresets::instance ();
328+ auto config = presets->currentConfig ();
329+ applyFormatOption (config, index);
330+ presets->setCurrentConfig (config);
331+ }
332+
317333 void ExportAudioAddOn::setMixingOptionSimple (int index) {
318334 auto config = m_simpleConfig;
319335 config.setMixingOption (static_cast <AudioExporterConfig::MixingOption>(index));
@@ -330,7 +346,7 @@ namespace Audio::Internal {
330346 basename += QStringLiteral (" _${trackIndex}_${trackName}" );
331347 }
332348 if (suffix.isEmpty ()) {
333- suffix = AudioExporterConfig::extensionOfType (config.fileType ());
349+ suffix = AudioExporterConfig::extensionOfType (config.fileType (), config. formatOption () );
334350 }
335351 config.setFileName (basename + QStringLiteral (" ." ) + suffix);
336352 setSimpleConfig (config);
0 commit comments