diff --git a/src/preferences/media/MidiSettingsView.cpp b/src/preferences/media/MidiSettingsView.cpp index cdf0fbb662..fe8436dd81 100644 --- a/src/preferences/media/MidiSettingsView.cpp +++ b/src/preferences/media/MidiSettingsView.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -55,6 +56,8 @@ MidiSettingsView::MidiSettingsView() BLayoutBuilder::Group<>(this) .SetInsets(0, 0, 0, 0) .Add(defaultsBox) + .Add(fActiveSoundFont = new BStringView("ActiveSoundFont", + "Active Sound Font:")) .AddGlue(); } @@ -77,9 +80,13 @@ void MidiSettingsView::MessageReceived(BMessage* message) { switch (message->what) { - case kSelectSoundFont: + case kSelectSoundFont: { + BString text = "Active Sound Font: "; + text << _SelectedSoundFont(); + fActiveSoundFont->SetText(text); _SaveSettings(); break; + } default: SettingsView::MessageReceived(message); @@ -142,16 +149,25 @@ MidiSettingsView::_LoadSettings() void MidiSettingsView::_SaveSettings() { - int32 selection = fListView->CurrentSelection(); - if (selection < 0) - return; - - BStringItem* item = (BStringItem*)fListView->ItemAt(selection); - if (item == NULL) - return; - - struct BPrivate::midi_settings settings; - strlcpy(settings.soundfont_file, item->Text(), sizeof(settings.soundfont_file)); - BPrivate::write_midi_settings(settings); + BString soundFont = _SelectedSoundFont(); + if (soundFont.Length() > 0) { + struct BPrivate::midi_settings settings; + strlcpy(settings.soundfont_file, soundFont, sizeof(settings.soundfont_file)); + BPrivate::write_midi_settings(settings); + } } + +BString +MidiSettingsView::_SelectedSoundFont() const +{ + BString string; + int32 selection = fListView->CurrentSelection(); + if (selection >= 0) { + BStringItem* item = (BStringItem*)fListView->ItemAt(selection); + if (item != NULL) + string = item->Text(); + } + + return string; +} diff --git a/src/preferences/media/MidiSettingsView.h b/src/preferences/media/MidiSettingsView.h index d267c44fc6..0d18967bd3 100644 --- a/src/preferences/media/MidiSettingsView.h +++ b/src/preferences/media/MidiSettingsView.h @@ -11,6 +11,7 @@ class BButton; class BListView; +class BStringView; class MidiSettingsView : public SettingsView { public: MidiSettingsView(); @@ -21,8 +22,10 @@ private: void _RetrieveSoftSynthList(); void _LoadSettings(); void _SaveSettings(); + BString _SelectedSoundFont() const; BListView* fListView; + BStringView* fActiveSoundFont; }; #endif /* MIDIVIEW_H_ */