diff --git a/src/win/VARCem-common.rc b/src/win/VARCem-common.rc index 97b37e4..74329e5 100644 --- a/src/win/VARCem-common.rc +++ b/src/win/VARCem-common.rc @@ -563,7 +563,7 @@ BEGIN BS_AUTOCHECKBOX | WS_TABSTOP,196,86,64,10 END -DLG_CFG_RMV_DEVICES DIALOG 97, 0, 267, 221 +DLG_CFG_MMC_DEVICES DIALOG 97, 0, 267, 221 STYLE DS_CONTROL | WS_CHILD FONT 9, FONT_NAME BEGIN @@ -591,29 +591,34 @@ BEGIN LTEXT STR_3576,IDT_1761,7,107,34,8 COMBOBOX IDC_COMBO_CD_SPEED,43,105,80,120, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +END - LTEXT STR_3577,IDT_1762,7,127,80,8 +DLG_CFG_IOMEGA_DEVICES DIALOG 97, 0, 267, 221 +STYLE DS_CONTROL | WS_CHILD +FONT 9, FONT_NAME +BEGIN + LTEXT STR_3577,IDT_1762,7,7,80,8 CONTROL "List2",IDC_LIST_ZIP_DRIVES,"SysListView32", LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | - WS_BORDER | WS_TABSTOP,7,137,253,60 + WS_BORDER | WS_TABSTOP,7,18,253,60 CONTROL STR_3578,IDC_CHECK250,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,7,204,34,10 + BS_AUTOCHECKBOX | WS_TABSTOP,7,85,34,10 - LTEXT STR_BUS,IDT_1753,50,206,25,8 - COMBOBOX IDC_COMBO_ZIP_BUS,80,204,70,120, + LTEXT STR_BUS,IDT_1753,50,87,25,8 + COMBOBOX IDC_COMBO_ZIP_BUS,80,85,70,120, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT STR_CHANNEL,IDT_1756,170,206,30,8 - COMBOBOX IDC_COMBO_ZIP_CHANNEL_IDE,210,204,50,120, + LTEXT STR_CHANNEL,IDT_1756,170,87,30,8 + COMBOBOX IDC_COMBO_ZIP_CHANNEL_IDE,210,85,50,120, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT STR_ID,IDT_1754,165,206,20,8 - COMBOBOX IDC_COMBO_ZIP_ID,185,204,20,120, + LTEXT STR_ID,IDT_1754,165,87,20,8 + COMBOBOX IDC_COMBO_ZIP_ID,185,85,20,120, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT STR_LUN,IDT_1755,210,206,20,8 - COMBOBOX IDC_COMBO_ZIP_LUN,235,204,20,120, + LTEXT STR_LUN,IDT_1755,210,87,20,8 + COMBOBOX IDC_COMBO_ZIP_LUN,235,85,20,120, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END diff --git a/src/win/resource.h b/src/win/resource.h index 67471fe..986da88 100644 --- a/src/win/resource.h +++ b/src/win/resource.h @@ -56,8 +56,8 @@ #define DLG_CFG_DISK 1038 /* sub-dialog of config */ #define DLG_CFG_DISK_ADD 1039 /* sub-dialog of config */ #define DLG_CFG_FLOPPY 1040 /* sub-dialog of config */ -#define DLG_CFG_RMV_DEVICES 1041 /* sub-dialog of config */ - +#define DLG_CFG_MMC_DEVICES 1041 /* sub-dialog of config */ +#define DLG_CFG_IOMEGA_DEVICES 1042 /* sub-dialog of config */ /* Static text label IDs. */ #define IDT_1700 1700 /* Language: */ diff --git a/src/win/win_settings.c b/src/win/win_settings.c index f59b734..8cb5534 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -257,8 +257,10 @@ settings_save(void) #define PAGE_PERIPHERALS 6 #define PAGE_HARD_DISKS 7 #define PAGE_FLOPPY_DRIVES 8 -#define PAGE_OTHER_REMOVABLE_DEVICES 9 -#define PAGE_MAX 10 +#define PAGE_MULTIMEDIA_DEVICES 9 +#define PAGE_IOMEGA_DEVICES 10 +#define PAGE_MAGNETO_OPTICAL_DEVICES 11 +#define PAGE_MAX 12 /* Icon, Bus, File, C, H, S, Size. */ #define C_COLUMNS_HARD_DISKS 6 @@ -330,11 +332,23 @@ show_child(HWND hwndParent, DWORD child_id) hwndParent, floppy_proc); break; - case PAGE_OTHER_REMOVABLE_DEVICES: - hwndChildDialog = CreateDialog(plat_lang_dll(), - (LPCWSTR)DLG_CFG_RMV_DEVICES, - hwndParent, rmv_devices_proc); - break; + case PAGE_MULTIMEDIA_DEVICES: + hwndChildDialog = CreateDialog(plat_lang_dll(), + (LPCWSTR)DLG_CFG_MMC_DEVICES, + hwndParent, mmc_devices_proc); + break; + + case PAGE_IOMEGA_DEVICES: + hwndChildDialog = CreateDialog(plat_lang_dll(), + (LPCWSTR)DLG_CFG_IOMEGA_DEVICES, + hwndParent, iomega_devices_proc); + break; + + case PAGE_MAGNETO_OPTICAL_DEVICES: + hwndChildDialog = CreateDialog(plat_lang_dll(), + (LPCWSTR)DLG_CFG_IOMEGA_DEVICES, + hwndParent, iomega_devices_proc); + break; default: fatal("Invalid child dialog ID\n"); @@ -358,6 +372,8 @@ image_list_init(HWND hwndList) ICON_PERIPH, ICON_DISK, ICON_FLOPPY, + ICON_REMOV, + ICON_REMOV, ICON_REMOV }; HICON hiconItem; diff --git a/src/win/win_settings_remov.h b/src/win/win_settings_remov.h index 7194392..819362d 100644 --- a/src/win/win_settings_remov.h +++ b/src/win/win_settings_remov.h @@ -721,7 +721,7 @@ zip_track_all(void) static WIN_RESULT CALLBACK -rmv_devices_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) +mmc_devices_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { HWND h = NULL; int old_sel = 0; @@ -744,22 +744,6 @@ rmv_devices_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) SendMessage(h, CB_SETCURSEL, b, 0); cdrom_recalc_location_controls(hdlg, 0); - zdlv_current_sel = 0; - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_init_columns(h); - zip_image_list_init(h); - zip_recalc_list(h); - zip_add_locations(hdlg); - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); - b = temp_zip_drives[zdlv_current_sel].bus_type; - SendMessage(h, CB_SETCURSEL, b, 0); - zip_recalc_location_controls(hdlg, 0); - h = GetDlgItem(hdlg, IDC_CHECK250); - SendMessage(h, BM_SETCHECK, - temp_zip_drives[zdlv_current_sel].is_250, 0); - rd_ignore_change = 0; - return TRUE; - case WM_NOTIFY: if (rd_ignore_change) return FALSE; @@ -783,29 +767,6 @@ rmv_devices_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) b = temp_cdrom_drives[cdlv_current_sel].bus_type; SendMessage(h, CB_SETCURSEL, b, 0); cdrom_recalc_location_controls(hdlg, 0); - } else if ((((LPNMHDR)lParam)->code == LVN_ITEMCHANGED) && (((LPNMHDR)lParam)->idFrom == IDC_LIST_ZIP_DRIVES)) { - old_sel = zdlv_current_sel; - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zdlv_current_sel = zip_get_selected(hdlg); - if (zdlv_current_sel == old_sel) - return FALSE; - - if (zdlv_current_sel == -1) { - rd_ignore_change = 1; - zdlv_current_sel = old_sel; - ListView_SetItemState(h, zdlv_current_sel, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); - rd_ignore_change = 0; - return FALSE; - } - rd_ignore_change = 1; - - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); - b = temp_zip_drives[zdlv_current_sel].bus_type; - SendMessage(h, CB_SETCURSEL, b, 0); - zip_recalc_location_controls(hdlg, 0); - h = GetDlgItem(hdlg, IDC_CHECK250); - SendMessage(h, BM_SETCHECK, - temp_zip_drives[zdlv_current_sel].is_250, 0); } rd_ignore_change = 0; break; @@ -892,83 +853,6 @@ cdrom_bus_skip: rd_ignore_change = 0; return FALSE; - case IDC_COMBO_ZIP_BUS: - if (rd_ignore_change) - return FALSE; - - rd_ignore_change = 1; - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); - b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); - if (temp_zip_drives[zdlv_current_sel].bus_type == b) - goto zip_bus_skip; - zip_untrack(zdlv_current_sel); - assign = (temp_zip_drives[zdlv_current_sel].bus_type == b) ? 0 : 1; - temp_zip_drives[zdlv_current_sel].bus_type = b; - zip_recalc_location_controls(hdlg, assign); - zip_track(zdlv_current_sel); - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_update_item(h, zdlv_current_sel); -zip_bus_skip: - rd_ignore_change = 0; - return FALSE; - - case IDC_COMBO_ZIP_ID: - if (rd_ignore_change) - return FALSE; - - rd_ignore_change = 1; - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_ID); - zip_untrack(zdlv_current_sel); - b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); - temp_zip_drives[zdlv_current_sel].bus_id.scsi.id = (uint8_t)b; - zip_track(zdlv_current_sel); - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_update_item(h, zdlv_current_sel); - rd_ignore_change = 0; - return FALSE; - - case IDC_COMBO_ZIP_LUN: - if (rd_ignore_change) - return FALSE; - - rd_ignore_change = 1; - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_LUN); - zip_untrack(zdlv_current_sel); - b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); - temp_zip_drives[zdlv_current_sel].bus_id.scsi.lun = (uint8_t)b; - zip_track(zdlv_current_sel); - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_update_item(h, zdlv_current_sel); - rd_ignore_change = 0; - return FALSE; - - case IDC_COMBO_ZIP_CHANNEL_IDE: - if (rd_ignore_change) - return FALSE; - - rd_ignore_change = 1; - h = GetDlgItem(hdlg, IDC_COMBO_ZIP_CHANNEL_IDE); - zip_untrack(zdlv_current_sel); - b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); - temp_zip_drives[zdlv_current_sel].bus_id.ide_channel = (uint8_t)b; - zip_track(zdlv_current_sel); - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_update_item(h, zdlv_current_sel); - rd_ignore_change = 0; - return FALSE; - - case IDC_CHECK250: - if (rd_ignore_change) - return FALSE; - - rd_ignore_change = 1; - h = GetDlgItem(hdlg, IDC_CHECK250); - b = (int)SendMessage(h, BM_GETCHECK, 0, 0); - temp_zip_drives[zdlv_current_sel].is_250 = (int8_t)b; - h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); - zip_update_item(h, zdlv_current_sel); - rd_ignore_change = 0; - return FALSE; } return FALSE; @@ -978,3 +862,151 @@ zip_bus_skip: return FALSE; } + +static WIN_RESULT CALLBACK +iomega_devices_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + HWND h = NULL; + int old_sel = 0; + int assign = 0; + int b; + + switch (message) { + case WM_INITDIALOG: + rd_ignore_change = 1; + + zdlv_current_sel = 0; + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_init_columns(h); + zip_image_list_init(h); + zip_recalc_list(h); + zip_add_locations(hdlg); + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); + b = temp_zip_drives[zdlv_current_sel].bus_type; + SendMessage(h, CB_SETCURSEL, b, 0); + zip_recalc_location_controls(hdlg, 0); + h = GetDlgItem(hdlg, IDC_CHECK250); + SendMessage(h, BM_SETCHECK, + temp_zip_drives[zdlv_current_sel].is_250, 0); + rd_ignore_change = 0; + return TRUE; + + case WM_NOTIFY: + if (rd_ignore_change) + return FALSE; + + if ((((LPNMHDR)lParam)->code == LVN_ITEMCHANGED) && (((LPNMHDR)lParam)->idFrom == IDC_LIST_ZIP_DRIVES)) { + old_sel = zdlv_current_sel; + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zdlv_current_sel = zip_get_selected(hdlg); + if (zdlv_current_sel == old_sel) + return FALSE; + + if (zdlv_current_sel == -1) { + rd_ignore_change = 1; + zdlv_current_sel = old_sel; + ListView_SetItemState(h, zdlv_current_sel, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); + rd_ignore_change = 0; + return FALSE; + } + rd_ignore_change = 1; + + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); + b = temp_zip_drives[zdlv_current_sel].bus_type; + SendMessage(h, CB_SETCURSEL, b, 0); + zip_recalc_location_controls(hdlg, 0); + h = GetDlgItem(hdlg, IDC_CHECK250); + SendMessage(h, BM_SETCHECK, + temp_zip_drives[zdlv_current_sel].is_250, 0); + } + rd_ignore_change = 0; + break; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_COMBO_ZIP_BUS: + if (rd_ignore_change) + return FALSE; + + rd_ignore_change = 1; + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_BUS); + b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); + if (temp_zip_drives[zdlv_current_sel].bus_type == b) + goto zip_bus_skip; + zip_untrack(zdlv_current_sel); + assign = (temp_zip_drives[zdlv_current_sel].bus_type == b) ? 0 : 1; + temp_zip_drives[zdlv_current_sel].bus_type = b; + zip_recalc_location_controls(hdlg, assign); + zip_track(zdlv_current_sel); + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_update_item(h, zdlv_current_sel); + zip_bus_skip: + rd_ignore_change = 0; + return FALSE; + + case IDC_COMBO_ZIP_ID: + if (rd_ignore_change) + return FALSE; + + rd_ignore_change = 1; + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_ID); + zip_untrack(zdlv_current_sel); + b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); + temp_zip_drives[zdlv_current_sel].bus_id.scsi.id = (uint8_t)b; + zip_track(zdlv_current_sel); + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_update_item(h, zdlv_current_sel); + rd_ignore_change = 0; + return FALSE; + + case IDC_COMBO_ZIP_LUN: + if (rd_ignore_change) + return FALSE; + + rd_ignore_change = 1; + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_LUN); + zip_untrack(zdlv_current_sel); + b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); + temp_zip_drives[zdlv_current_sel].bus_id.scsi.lun = (uint8_t)b; + zip_track(zdlv_current_sel); + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_update_item(h, zdlv_current_sel); + rd_ignore_change = 0; + return FALSE; + + case IDC_COMBO_ZIP_CHANNEL_IDE: + if (rd_ignore_change) + return FALSE; + + rd_ignore_change = 1; + h = GetDlgItem(hdlg, IDC_COMBO_ZIP_CHANNEL_IDE); + zip_untrack(zdlv_current_sel); + b = (int)SendMessage(h, CB_GETCURSEL, 0, 0); + temp_zip_drives[zdlv_current_sel].bus_id.ide_channel = (uint8_t)b; + zip_track(zdlv_current_sel); + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_update_item(h, zdlv_current_sel); + rd_ignore_change = 0; + return FALSE; + + case IDC_CHECK250: + if (rd_ignore_change) + return FALSE; + + rd_ignore_change = 1; + h = GetDlgItem(hdlg, IDC_CHECK250); + b = (int)SendMessage(h, BM_GETCHECK, 0, 0); + temp_zip_drives[zdlv_current_sel].is_250 = (int8_t)b; + h = GetDlgItem(hdlg, IDC_LIST_ZIP_DRIVES); + zip_update_item(h, zdlv_current_sel); + rd_ignore_change = 0; + return FALSE; + } + return FALSE; + + default: + break; + } + + return FALSE; +}