From 912eef92faa88c6eaebe8a46f8d8b9f13def2c6a Mon Sep 17 00:00:00 2001 From: skyjake Date: Mon, 2 Sep 2013 21:49:33 +0300 Subject: [PATCH] UI|Client: Added "Preferred Music" option, apply resampling rate changes --- .../client/include/audio/audiodriver_music.h | 1 + .../include/ui/dialogs/audiosettingsdialog.h | 4 ++- .../src/ui/dialogs/audiosettingsdialog.cpp | 32 ++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/doomsday/client/include/audio/audiodriver_music.h b/doomsday/client/include/audio/audiodriver_music.h index 64a1591077..2e83a0db4c 100644 --- a/doomsday/client/include/audio/audiodriver_music.h +++ b/doomsday/client/include/audio/audiodriver_music.h @@ -30,6 +30,7 @@ #define LIBDENG_AUDIODRIVER_MUSIC_H #include +#include "dd_types.h" #include "audiodriver.h" #ifdef __cplusplus diff --git a/doomsday/client/include/ui/dialogs/audiosettingsdialog.h b/doomsday/client/include/ui/dialogs/audiosettingsdialog.h index 1b575ce194..647baf8c5f 100644 --- a/doomsday/client/include/ui/dialogs/audiosettingsdialog.h +++ b/doomsday/client/include/ui/dialogs/audiosettingsdialog.h @@ -32,7 +32,9 @@ class AudioSettingsDialog : public DialogWidget AudioSettingsDialog(de::String const &name = "audiosettings"); public slots: - void resetToDefaults(); + void sampleRateChanged(uint); + void musicSourceChanged(uint); + void resetToDefaults(); private: DENG2_PRIVATE(d) diff --git a/doomsday/client/src/ui/dialogs/audiosettingsdialog.cpp b/doomsday/client/src/ui/dialogs/audiosettingsdialog.cpp index 9e66b2da5e..34b1f368d0 100644 --- a/doomsday/client/src/ui/dialogs/audiosettingsdialog.cpp +++ b/doomsday/client/src/ui/dialogs/audiosettingsdialog.cpp @@ -21,6 +21,7 @@ #include "ui/widgets/cvartogglewidget.h" #include "ui/widgets/choicewidget.h" +#include "de_audio.h" #include "con_main.h" #include "SignalAction" @@ -35,6 +36,7 @@ DENG_GUI_PIMPL(AudioSettingsDialog) CVarToggleWidget *sound3D; CVarToggleWidget *sound16bit; ChoiceWidget *sampleRate; + ChoiceWidget *musicSource; CVarToggleWidget *soundInfo; Instance(Public *i) : Base(i) @@ -47,6 +49,7 @@ DENG_GUI_PIMPL(AudioSettingsDialog) area.add(sound3D = new CVarToggleWidget("sound-3d")); area.add(sound16bit = new CVarToggleWidget("sound-16bit")); area.add(sampleRate = new ChoiceWidget); + area.add(musicSource = new ChoiceWidget); area.add(soundInfo = new CVarToggleWidget("sound-info")); } @@ -59,8 +62,8 @@ DENG_GUI_PIMPL(AudioSettingsDialog) sound16bit->updateFromCVar(); soundInfo->updateFromCVar(); - // Update the selected sample rate. sampleRate->setSelected(sampleRate->items().findData(Con_GetInteger("sound-rate"))); + musicSource->setSelected(musicSource->items().findData(Con_GetInteger("music-source"))); } }; @@ -93,6 +96,21 @@ AudioSettingsDialog::AudioSettingsDialog(String const &name) << new ChoiceItem(tr("2x @ 22050 Hz"), 22050) << new ChoiceItem(tr("4x @ 44100 Hz"), 44100); + connect(d->sampleRate, SIGNAL(selectionChangedByUser(uint)), + this, SLOT(sampleRateChanged(uint))); + + LabelWidget *musSrcLabel = new LabelWidget; + musSrcLabel->setText(tr("Preferred Music:")); + area().add(musSrcLabel); + + d->musicSource->items() + << new ChoiceItem(tr("MUS lumps"), MUSP_MUS) + << new ChoiceItem(tr("External files"), MUSP_EXT) + << new ChoiceItem(tr("CD"), MUSP_CD); + + connect(d->musicSource, SIGNAL(selectionChangedByUser(uint)), + this, SLOT(musicSourceChanged(uint))); + d->soundInfo->setText(tr("Developer Info")); // Layout. @@ -103,6 +121,7 @@ AudioSettingsDialog::AudioSettingsDialog(String const &name) << *musicVolLabel << *d->musicVolume << *rvbVolLabel << *d->reverbVolume << Const(0) << *d->sound3D + << *musSrcLabel << *d->musicSource << *rateLabel << *d->sampleRate << Const(0) << *d->sound16bit << Const(0) << *d->soundInfo; @@ -117,6 +136,16 @@ AudioSettingsDialog::AudioSettingsDialog(String const &name) d->fetch(); } +void AudioSettingsDialog::sampleRateChanged(uint) +{ + Con_SetInteger("sound-rate", d->sampleRate->selectedItem().data().toInt()); +} + +void AudioSettingsDialog::musicSourceChanged(uint) +{ + Con_SetInteger("music-source", d->musicSource->selectedItem().data().toInt()); +} + void AudioSettingsDialog::resetToDefaults() { Con_SetInteger("sound-volume", 255 ); @@ -126,6 +155,7 @@ void AudioSettingsDialog::resetToDefaults() Con_SetInteger("sound-rate", 11025); Con_SetInteger("sound-16bit", 0 ); Con_SetInteger("sound-3d", 0 ); + Con_SetInteger("music-source", MUSP_EXT); d->fetch(); }