22#include " ui_DebriefingDialog.h"
33#include " ui/Theme.h"
44#include " mission/util.h"
5+ #include < gamesnd/eventmusic.h>
56#include < globalincs/globals.h>
67#include < globalincs/linklist.h>
78#include < ui/util/default_dir.h>
@@ -35,6 +36,9 @@ void DebriefingDialog::accept()
3536 // If apply() returns true, close the dialog
3637 if (_model->apply ()) {
3738 _viewport->editor ->autosave (" debriefing editor" );
39+ ui->successMusicWidget ->stopPlayback ();
40+ ui->averageMusicWidget ->stopPlayback ();
41+ ui->failureMusicWidget ->stopPlayback ();
3842 QDialog::accept ();
3943 }
4044 // else: validation failed, don't close
@@ -46,6 +50,9 @@ void DebriefingDialog::reject()
4650 // If they do, it runs _model->apply() and returns the success value
4751 // If they don't, it runs _model->reject() and returns true
4852 if (rejectOrCloseHandler (this , _model.get (), _viewport)) {
53+ ui->successMusicWidget ->stopPlayback ();
54+ ui->averageMusicWidget ->stopPlayback ();
55+ ui->failureMusicWidget ->stopPlayback ();
4956 QDialog::reject (); // actually close
5057 }
5158 // else: do nothing, don't close
@@ -60,8 +67,9 @@ void DebriefingDialog::closeEvent(QCloseEvent* e)
6067void DebriefingDialog::initializeUi ()
6168{
6269 fso::fred::bindStandardIcon (ui->voiceFilePlayButton , QStyle::SP_MediaPlay);
70+
6371 util::SignalBlockers blockers (this );
64-
72+
6573 auto list = _model->getTeamList ();
6674
6775 ui->actionChangeTeams ->clear ();
@@ -70,18 +78,6 @@ void DebriefingDialog::initializeUi()
7078 ui->actionChangeTeams ->addItem (QString::fromStdString (team.first ), team.second );
7179 }
7280
73- auto musicList = _model->getMusicList ();
74- QStringList qMusicList;
75- for (const auto & track : musicList) {
76- qMusicList << QString::fromStdString (track);
77- }
78- ui->successMusicComboBox ->clear ();
79- ui->successMusicComboBox ->addItems (qMusicList);
80- ui->averageMusicComboBox ->clear ();
81- ui->averageMusicComboBox ->addItems (qMusicList);
82- ui->failureMusicComboBox ->clear ();
83- ui->failureMusicComboBox ->addItems (qMusicList);
84-
8581 // Initialize the formula tree editor
8682 ui->formulaTreeView ->initializeEditor (_viewport->editor , this );
8783}
@@ -114,10 +110,10 @@ void DebriefingDialog::updateUi()
114110 ui->formulaTreeView ->hilite_item (ui->formulaTreeView ->select_sexp_node );
115111 }
116112
117- // Music tracks (data is index, UI is index + 1 to account for "None")
118- ui->successMusicComboBox -> setCurrentIndex (_model->getSuccessMusicTrack () + 1 );
119- ui->averageMusicComboBox -> setCurrentIndex (_model->getAverageMusicTrack () + 1 );
120- ui->failureMusicComboBox -> setCurrentIndex (_model->getFailureMusicTrack () + 1 );
113+ // Music tracks: model uses Spooled_music index (-1 = None), widget uses the same convention
114+ ui->successMusicWidget -> setCurrentMusicIndex (_model->getSuccessMusicTrack ());
115+ ui->averageMusicWidget -> setCurrentMusicIndex (_model->getAverageMusicTrack ());
116+ ui->failureMusicWidget -> setCurrentMusicIndex (_model->getFailureMusicTrack ());
121117
122118 enableDisableControls ();
123119}
@@ -240,19 +236,37 @@ void DebriefingDialog::on_formulaTreeView_nodeChanged(int newTree)
240236 _model->setFormula (newTree);
241237}
242238
243- void DebriefingDialog::on_successMusicComboBox_currentIndexChanged (int index)
239+ void DebriefingDialog::on_successMusicWidget_currentIndexChanged (int spooledMusicIdx)
240+ {
241+ _model->setSuccessMusicTrack (spooledMusicIdx);
242+ }
243+
244+ void DebriefingDialog::on_averageMusicWidget_currentIndexChanged (int spooledMusicIdx)
245+ {
246+ _model->setAverageMusicTrack (spooledMusicIdx);
247+ }
248+
249+ void DebriefingDialog::on_failureMusicWidget_currentIndexChanged (int spooledMusicIdx)
250+ {
251+ _model->setFailureMusicTrack (spooledMusicIdx);
252+ }
253+
254+ void DebriefingDialog::on_successMusicWidget_playbackStarted ()
244255{
245- _model->setSuccessMusicTrack (index - 1 ); // -1 to account for "None"
256+ ui->averageMusicWidget ->stopPlayback ();
257+ ui->failureMusicWidget ->stopPlayback ();
246258}
247259
248- void DebriefingDialog::on_averageMusicComboBox_currentIndexChanged ( int index )
260+ void DebriefingDialog::on_averageMusicWidget_playbackStarted ( )
249261{
250- _model->setAverageMusicTrack (index - 1 ); // -1 to account for "None"
262+ ui->successMusicWidget ->stopPlayback ();
263+ ui->failureMusicWidget ->stopPlayback ();
251264}
252265
253- void DebriefingDialog::on_failureMusicComboBox_currentIndexChanged ( int index )
266+ void DebriefingDialog::on_failureMusicWidget_playbackStarted ( )
254267{
255- _model->setFailureMusicTrack (index - 1 ); // -1 to account for "None"
268+ ui->successMusicWidget ->stopPlayback ();
269+ ui->averageMusicWidget ->stopPlayback ();
256270}
257271
258272} // namespace fso::fred::dialogs
0 commit comments