FDD audio selection to None + disabled if drive not selected. Load audio profiles on audio settings change to take immediate action when VM already running.

This commit is contained in:
Toni Riikonen
2025-11-26 23:08:47 +02:00
parent a786ab8436
commit 09efaeeb29
3 changed files with 22 additions and 2 deletions

View File

@@ -302,7 +302,7 @@ fdd_audio_load_profiles(void)
fdd_log("FDD Audio: Loaded %d audio profiles from %s\n", audio_profile_count, config_path);
}
static void
void
load_profile_samples(int profile_id)
{
if (profile_id <= 0 || profile_id >= audio_profile_count)

View File

@@ -88,6 +88,7 @@ extern const char* fdd_audio_get_profile_name(int id);
extern const char* fdd_audio_get_profile_internal_name(int id);
extern int fdd_audio_get_profile_by_internal_name(const char *internal_name);
extern double fdd_audio_get_seek_time(int drive, int track_count, int is_seek_down);
extern void load_profile_samples(int profile_id);
#else

View File

@@ -313,6 +313,20 @@ SettingsFloppyCDROM::onFloppyRowChanged(const QModelIndex &current)
int row = current.row();
ui->comboBoxFloppyAudio->clear();
if (type == 0) {
ui->comboBoxFloppyAudio->addItem(tr("None"), 0);
ui->comboBoxFloppyAudio->setCurrentIndex(0);
ui->comboBoxFloppyAudio->setEnabled(false);
// Update the model to reflect "None" profile
auto audioIdx = current.siblingAtColumn(3);
ui->tableViewFloppy->model()->setData(audioIdx, tr("None"));
ui->tableViewFloppy->model()->setData(audioIdx, 0, Qt::UserRole);
return;
}
ui->comboBoxFloppyAudio->setEnabled(true);
// Get drive type's track count to determine 40-track vs 80-track
int drive_max_tracks = fdd_get_type_max_track(type);
bool is_40_track = (drive_max_tracks <= 43);
@@ -327,7 +341,9 @@ SettingsFloppyCDROM::onFloppyRowChanged(const QModelIndex &current)
const fdd_audio_profile_config_t *profile = fdd_audio_get_profile(i);
if (profile) {
// Only show profiles that match the drive type's track count
if ((is_40_track && profile->total_tracks == 40) || (!is_40_track && profile->total_tracks == 80) || profile->total_tracks == 0) { // Profile ID 0 is "None"
if (profile->total_tracks == 0 ||
(is_40_track && profile->total_tracks == 40) ||
(!is_40_track && profile->total_tracks == 80)) {
ui->comboBoxFloppyAudio->addItem(name, i);
if (i == prof) {
currentProfileIndex = comboIndex;
@@ -449,6 +465,9 @@ SettingsFloppyCDROM::on_comboBoxFloppyAudio_activated(int)
} else {
profName = tr("None");
}
if (prof > 0) {
load_profile_samples(prof);
}
#else
profName = tr("None");
#endif