Added the ability to select earlier CD-ROM drive (emulates Chinon CDS-431 for SCSI and NEC CDR-260 for ATAPI) - needs to be ported to QT.

This commit is contained in:
OBattler
2022-10-29 06:44:30 +02:00
parent f4c2bc7a20
commit 4d19b8a1e4
31 changed files with 539 additions and 295 deletions

View File

@@ -3635,6 +3635,14 @@ win_settings_cdrom_drives_recalc_list(HWND hdlg)
lvI.iItem = i;
lvI.iImage = 0;
if (ListView_SetItem(hwndList, &lvI) == -1)
return FALSE;
lvI.iSubItem = 2;
lvI.pszText = plat_get_string(temp_cdrom[i].early ? IDS_2060 : IDS_2061);
lvI.iItem = i;
lvI.iImage = 0;
if (ListView_SetItem(hwndList, &lvI) == -1)
return FALSE;
}
@@ -3815,15 +3823,19 @@ win_settings_floppy_drives_init_columns(HWND hdlg)
static void
win_settings_cdrom_drives_resize_columns(HWND hdlg)
{
int width[2] = { 292, 147 };
int iCol, width[3] = { 292, 58, 89 };
int total = 0;
HWND hwndList = GetDlgItem(hdlg, IDC_LIST_CDROM_DRIVES);
RECT r;
GetWindowRect(hwndList, &r);
width[0] = MulDiv(width[0], dpi, 96);
ListView_SetColumnWidth(hwndList, 0, MulDiv(width[0], dpi, 96));
width[1] = (r.right - r.left) - 4 - width[0];
ListView_SetColumnWidth(hwndList, 1, width[1]);
for (iCol = 0; iCol < 2; iCol++) {
width[iCol] = MulDiv(width[iCol], dpi, 96);
total += width[iCol];
ListView_SetColumnWidth(hwndList, iCol, MulDiv(width[iCol], dpi, 96));
}
width[2] = (r.right - r.left) - 4 - total;
ListView_SetColumnWidth(hwndList, 2, width[2]);
}
static BOOL
@@ -3846,12 +3858,21 @@ win_settings_cdrom_drives_init_columns(HWND hdlg)
lvc.iSubItem = 1;
lvc.pszText = plat_get_string(IDS_2053);
lvc.cx = 147;
lvc.cx = 58;
lvc.fmt = LVCFMT_LEFT;
if (ListView_InsertColumn(hwndList, 1, &lvc) == -1)
return FALSE;
lvc.iSubItem = 2;
lvc.pszText = plat_get_string(IDS_2161);
lvc.cx = 89;
lvc.fmt = LVCFMT_LEFT;
if (ListView_InsertColumn(hwndList, 2, &lvc) == -1)
return FALSE;
win_settings_cdrom_drives_resize_columns(hdlg);
return TRUE;
}
@@ -4051,6 +4072,14 @@ win_settings_cdrom_drives_update_item(HWND hdlg, int i)
lvI.iItem = i;
lvI.iImage = 0;
if (ListView_SetItem(hwndList, &lvI) == -1)
return;
lvI.iSubItem = 2;
lvI.pszText = plat_get_string(temp_cdrom[i].early ? IDS_2060 : IDS_2061);
lvI.iItem = i;
lvI.iImage = 0;
if (ListView_SetItem(hwndList, &lvI) == -1)
return;
}
@@ -4196,19 +4225,22 @@ cdrom_recalc_location_controls(HWND hdlg, int assign_id)
int i = 0;
int bus = temp_cdrom[lv2_current_sel].bus_type;
for (i = IDT_CD_ID; i <= (IDT_CD_LUN); i++)
for (i = IDT_CD_ID; i <= IDT_CD_CHANNEL; i++)
settings_show_window(hdlg, i, FALSE);
settings_show_window(hdlg, IDC_COMBO_CD_ID, FALSE);
settings_show_window(hdlg, IDC_COMBO_CD_CHANNEL_IDE, FALSE);
settings_show_window(hdlg, IDC_COMBO_CD_SPEED, bus != CDROM_BUS_DISABLED);
settings_show_window(hdlg, IDT_CD_SPEED, bus != CDROM_BUS_DISABLED);
settings_show_window(hdlg, IDC_CHECKEARLY, bus != CDROM_BUS_DISABLED);
if (bus != CDROM_BUS_DISABLED)
if (bus != CDROM_BUS_DISABLED) {
settings_set_cur_sel(hdlg, IDC_COMBO_CD_SPEED, temp_cdrom[lv2_current_sel].speed - 1);
settings_set_check(hdlg, IDC_CHECKEARLY, temp_cdrom[lv2_current_sel].early);
}
switch (bus) {
case CDROM_BUS_ATAPI: /* ATAPI */
settings_show_window(hdlg, IDT_CD_LUN, TRUE);
settings_show_window(hdlg, IDT_CD_CHANNEL, TRUE);
settings_show_window(hdlg, IDC_COMBO_CD_CHANNEL_IDE, TRUE);
if (assign_id)
@@ -4593,6 +4625,12 @@ win_settings_floppy_and_cdrom_drives_proc(HWND hdlg, UINT message, WPARAM wParam
temp_cdrom[lv2_current_sel].speed = settings_get_cur_sel(hdlg, IDC_COMBO_CD_SPEED) + 1;
win_settings_cdrom_drives_update_item(hdlg, lv2_current_sel);
break;
case IDC_CHECKEARLY:
temp_cdrom[lv2_current_sel].early = settings_get_check(hdlg, IDC_CHECKEARLY);
win_settings_cdrom_drives_update_item(hdlg, lv2_current_sel);
break;
}
ignore_change = 0;