Skip to content

Commit ea64e2f

Browse files
committed
Update audio export extension name logic
1 parent de4a1eb commit ea64e2f

5 files changed

Lines changed: 34 additions & 11 deletions

File tree

src/plugins/audio/audioexport/AudioExporterConfig.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,20 @@ namespace Audio {
104104
}
105105
}
106106

107-
QString AudioExporterConfig::extensionOfType(FileType type) {
107+
QString AudioExporterConfig::extensionOfType(FileType type, int formatOption) {
108108
switch (type) {
109109
case FT_Wav:
110110
return QStringLiteral("wav");
111111
case FT_Flac:
112112
return QStringLiteral("flac");
113113
case FT_OggContainer:
114-
return QStringLiteral("ogg");
114+
switch (formatOption) {
115+
case 0:
116+
return QStringLiteral("ogg");
117+
case 1:
118+
return QStringLiteral("opus");
119+
}
120+
break;
115121
case FT_Mp3:
116122
return QStringLiteral("mp3");
117123
}

src/plugins/audio/audioexport/AudioExporterConfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ namespace Audio {
7979
void setFormatMono(bool formatMono);
8080

8181
static QStringList formatOptionsOfType(FileType type);
82-
static QString extensionOfType(FileType type);
82+
static QString extensionOfType(FileType type, int formatOption);
8383

8484
int formatOption() const;
8585
void setFormatOption(int formatOption);

src/plugins/audio/internal/addon/ExportAudioAddOn.cpp

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

src/plugins/audio/internal/addon/ExportAudioAddOn.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ namespace Audio::Internal {
9595
Q_INVOKABLE static QStringList formatOptions(int fileType) ;
9696
Q_INVOKABLE static void setMixingOption(int index);
9797
Q_INVOKABLE static void setFileType(int index);
98+
Q_INVOKABLE static void setFormatOption(int index);
9899
Q_INVOKABLE void setMixingOptionSimple(int index);
99100
Q_INVOKABLE void setFileTypeSimple(int index);
100101
Q_INVOKABLE static void appendFileNameTemplate(const QString &templateString);

src/plugins/audio/qml/dialogs/AudioExportDialog.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ Window {
427427
columnItem: ComboBox {
428428
model: dialog.addOn.formatOptions(AudioExporterPresets.currentConfig.fileType)
429429
currentIndex: AudioExporterPresets.currentConfig.formatOption
430-
onActivated: (index) => AudioExporterPresets.currentConfig.formatOption = index
430+
onActivated: (index) => dialog.addOn.setFormatOption(index)
431431
}
432432
Layout.fillWidth: true
433433
}

0 commit comments

Comments
 (0)