From e84f87f625bf02245d905eb43bd418b5c67e5bf1 Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Thu, 4 Feb 2021 23:59:12 -0800 Subject: [PATCH] transcoder: Apply transcoder option fixes to settings page Dynamically add tabs to the transcoder settings page. Use the same mechanism that is used in the options dialog to select an options page based on the best encoder element for a mime type. --- src/transcoder/transcodersettingspage.cpp | 48 +++++-- src/transcoder/transcodersettingspage.h | 4 + src/transcoder/transcodersettingspage.ui | 160 +--------------------- 3 files changed, 40 insertions(+), 172 deletions(-) diff --git a/src/transcoder/transcodersettingspage.cpp b/src/transcoder/transcodersettingspage.cpp index a57713910..784b9b1db 100644 --- a/src/transcoder/transcodersettingspage.cpp +++ b/src/transcoder/transcodersettingspage.cpp @@ -17,6 +17,8 @@ #include "transcodersettingspage.h" +#include "transcoder.h" +#include "transcoderoptionsdialog.h" #include "ui/iconloader.h" #include "ui_transcodersettingspage.h" @@ -24,26 +26,44 @@ TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog* dialog) : SettingsPage(dialog), ui_(new Ui_TranscoderSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("tools-wizard", IconLoader::Base)); + + AddTab(tr("FLAC"), Transcoder::Codec_Flac); + AddTab(tr("AAC"), Transcoder::Codec_Mp4); + AddTab(tr("MP3"), Transcoder::Codec_Mp3); + AddTab(tr("Vorbis"), Transcoder::Codec_Vorbis); + AddTab(tr("Speex"), Transcoder::Codec_Speex); + AddTab(tr("Opus"), Transcoder::Codec_Opus); + AddTab(tr("WMA"), Transcoder::Codec_Wma); } TranscoderSettingsPage::~TranscoderSettingsPage() { delete ui_; } +void TranscoderSettingsPage::AddTab(const QString& label, + Transcoder::CodecType codec) { + const QString mime_type = Transcoder::MimeType(codec); + + TranscoderOptionsInterface* tab = + TranscoderOptionsDialog::MakeOptionsPage(mime_type); + options_pages_ << tab; + + // Insert in localized alphabetical order + for (int i = 0; i < ui_->optionTabs->count(); i++) { + if (label.localeAwareCompare(ui_->optionTabs->tabText(i)) < 0) { + ui_->optionTabs->insertTab(i, tab, label); + return; + } + } + ui_->optionTabs->addTab(tab, label); +} + void TranscoderSettingsPage::Load() { - ui_->transcoding_aac->Load(); - ui_->transcoding_flac->Load(); - ui_->transcoding_mp3->Load(); - ui_->transcoding_speex->Load(); - ui_->transcoding_vorbis->Load(); - ui_->transcoding_wma->Load(); - ui_->transcoding_opus->Load(); + for (TranscoderOptionsInterface* options : options_pages_) { + options->Load(); + } } void TranscoderSettingsPage::Save() { - ui_->transcoding_aac->Save(); - ui_->transcoding_flac->Save(); - ui_->transcoding_mp3->Save(); - ui_->transcoding_speex->Save(); - ui_->transcoding_vorbis->Save(); - ui_->transcoding_wma->Save(); - ui_->transcoding_opus->Save(); + for (TranscoderOptionsInterface* options : options_pages_) { + options->Save(); + } } diff --git a/src/transcoder/transcodersettingspage.h b/src/transcoder/transcodersettingspage.h index fc2b8b068..1c9bbf961 100644 --- a/src/transcoder/transcodersettingspage.h +++ b/src/transcoder/transcodersettingspage.h @@ -18,8 +18,10 @@ #ifndef TRANSCODERSETTINGSPAGE_H #define TRANSCODERSETTINGSPAGE_H +#include "transcoder.h" #include "ui/settingspage.h" +class TranscoderOptionsInterface; class Ui_TranscoderSettingsPage; class TranscoderSettingsPage : public SettingsPage { @@ -33,7 +35,9 @@ class TranscoderSettingsPage : public SettingsPage { void Save(); private: + void AddTab(const QString& label, Transcoder::CodecType mime_type); Ui_TranscoderSettingsPage* ui_; + QList options_pages_; }; #endif // TRANSCODERSETTINGSPAGE_H diff --git a/src/transcoder/transcodersettingspage.ui b/src/transcoder/transcodersettingspage.ui index 5b7e0621b..dd41f3192 100644 --- a/src/transcoder/transcodersettingspage.ui +++ b/src/transcoder/transcodersettingspage.ui @@ -25,170 +25,14 @@ - + - 0 + -1 - - - MP3 - - - - 0 - - - 0 - - - - - - - - - Vorbis - - - - 0 - - - 0 - - - - - - - - - FLAC - - - - 0 - - - 0 - - - - - - - - - Speex - - - - 0 - - - 0 - - - - - - - - - AAC - - - - 0 - - - 0 - - - - - - - - - WMA - - - - 0 - - - 0 - - - - - - - - - Opus - - - - 0 - - - 0 - - - - - - - - - TranscoderOptionsMP3 - QWidget -
transcoder/transcoderoptionsmp3.h
- 1 -
- - TranscoderOptionsVorbis - QWidget -
transcoder/transcoderoptionsvorbis.h
- 1 -
- - TranscoderOptionsSpeex - QWidget -
transcoder/transcoderoptionsspeex.h
- 1 -
- - TranscoderOptionsAAC - QWidget -
transcoder/transcoderoptionsaac.h
- 1 -
- - TranscoderOptionsFlac - QWidget -
transcoder/transcoderoptionsflac.h
- 1 -
- - TranscoderOptionsWma - QWidget -
transcoder/transcoderoptionswma.h
- 1 -
- - TranscoderOptionsOpus - QWidget -
transcoder/transcoderoptionsopus.h
- 1 -
-