win: Add the new Media menu handler

This commit is contained in:
David Hrdlička
2020-04-26 15:43:33 +02:00
parent 6838117fdd
commit 70503973eb
6 changed files with 206 additions and 18 deletions

View File

@@ -45,19 +45,39 @@ plat_cdrom_ui_update(uint8_t id, uint8_t reload)
cdrom_t *drv = &cdrom[id];
if (drv->host_drive == 0) {
ui_sb_check_menu_item(SB_CDROM|id, IDM_CDROM_EMPTY | id, MF_CHECKED);
ui_sb_check_menu_item(SB_CDROM|id, IDM_CDROM_IMAGE | id, MF_UNCHECKED);
ui_sb_update_icon_state(SB_CDROM|id, 1);
} else {
ui_sb_check_menu_item(SB_CDROM|id, IDM_CDROM_EMPTY | id, MF_UNCHECKED);
ui_sb_check_menu_item(SB_CDROM|id, IDM_CDROM_IMAGE | id, MF_CHECKED);
ui_sb_update_icon_state(SB_CDROM|id, 0);
}
ui_sb_enable_menu_item(SB_CDROM|id, IDM_CDROM_RELOAD | id, MF_BYCOMMAND | (reload ? MF_GRAYED : MF_ENABLED));
media_menu_update_cdrom(id);
ui_sb_update_tip(SB_CDROM|id);
}
void
cdrom_mount(uint8_t id, wchar_t *fn)
{
cdrom[id].prev_host_drive = cdrom[id].host_drive;
wcscpy(cdrom[id].prev_image_path, cdrom[id].image_path);
if (cdrom[id].ops && cdrom[id].ops->exit)
cdrom[id].ops->exit(&(cdrom[id]));
cdrom[id].ops = NULL;
memset(cdrom[id].image_path, 0, sizeof(cdrom[id].image_path));
cdrom_image_open(&(cdrom[id]), fn);
/* Signal media change to the emulated machine. */
if (cdrom[id].insert)
cdrom[id].insert(cdrom[id].priv);
cdrom[id].host_drive = (wcslen(cdrom[id].image_path) == 0) ? 0 : 200;
if (cdrom[id].host_drive == 200) {
ui_sb_update_icon_state(SB_CDROM | id, 0);
} else {
ui_sb_update_icon_state(SB_CDROM | id, 1);
}
media_menu_update_cdrom(id);
ui_sb_update_tip(SB_CDROM | id);
config_save();
}
void
mo_eject(uint8_t id)
{
@@ -70,8 +90,7 @@ mo_eject(uint8_t id)
}
ui_sb_update_icon_state(SB_MO | id, 1);
ui_sb_enable_menu_item(SB_MO|id, IDM_MO_EJECT | id, MF_BYCOMMAND | MF_GRAYED);
ui_sb_enable_menu_item(SB_MO|id, IDM_MO_RELOAD | id, MF_BYCOMMAND | MF_ENABLED);
media_menu_update_mo(id);
ui_sb_update_tip(SB_MO | id);
config_save();
}
@@ -87,6 +106,10 @@ mo_mount(uint8_t id, wchar_t *fn, uint8_t wp)
mo_load(dev, fn);
mo_insert(dev);
ui_sb_update_icon_state(SB_MO | id, wcslen(mo_drives[id].image_path) ? 0 : 1);
media_menu_update_mo(id);
ui_sb_update_tip(SB_MO | id);
config_save();
}
@@ -98,14 +121,12 @@ mo_reload(uint8_t id)
mo_disk_reload(dev);
if (wcslen(mo_drives[id].image_path) == 0) {
ui_sb_enable_menu_item(SB_MO|id, IDM_MO_EJECT | id, MF_BYCOMMAND | MF_GRAYED);
ui_sb_update_icon_state(SB_MO|id, 1);
} else {
ui_sb_enable_menu_item(SB_MO|id, IDM_MO_EJECT | id, MF_BYCOMMAND | MF_ENABLED);
ui_sb_update_icon_state(SB_MO|id, 0);
}
ui_sb_enable_menu_item(SB_MO|id, IDM_MO_RELOAD | id, MF_BYCOMMAND | MF_GRAYED);
media_menu_update_mo(id);
ui_sb_update_tip(SB_MO|id);
config_save();
@@ -123,8 +144,7 @@ zip_eject(uint8_t id)
}
ui_sb_update_icon_state(SB_ZIP | id, 1);
ui_sb_enable_menu_item(SB_ZIP|id, IDM_ZIP_EJECT | id, MF_BYCOMMAND | MF_GRAYED);
ui_sb_enable_menu_item(SB_ZIP|id, IDM_ZIP_RELOAD | id, MF_BYCOMMAND | MF_ENABLED);
media_menu_update_zip(id);
ui_sb_update_tip(SB_ZIP | id);
config_save();
}
@@ -140,6 +160,10 @@ zip_mount(uint8_t id, wchar_t *fn, uint8_t wp)
zip_load(dev, fn);
zip_insert(dev);
ui_sb_update_icon_state(SB_ZIP | id, wcslen(zip_drives[id].image_path) ? 0 : 1);
media_menu_update_zip(id);
ui_sb_update_tip(SB_ZIP | id);
config_save();
}
@@ -151,14 +175,12 @@ zip_reload(uint8_t id)
zip_disk_reload(dev);
if (wcslen(zip_drives[id].image_path) == 0) {
ui_sb_enable_menu_item(SB_ZIP|id, IDM_ZIP_EJECT | id, MF_BYCOMMAND | MF_GRAYED);
ui_sb_update_icon_state(SB_ZIP|id, 1);
} else {
ui_sb_enable_menu_item(SB_ZIP|id, IDM_ZIP_EJECT | id, MF_BYCOMMAND | MF_ENABLED);
ui_sb_update_icon_state(SB_ZIP|id, 0);
}
ui_sb_enable_menu_item(SB_ZIP|id, IDM_ZIP_RELOAD | id, MF_BYCOMMAND | MF_GRAYED);
media_menu_update_zip(id);
ui_sb_update_tip(SB_ZIP|id);
config_save();