qt: Update cdrom media menu to make it more consistent with floppy.
Add current image name to cdrom and floppy media menu. Don't display reload option unless previous image is set.
This commit is contained in:
@@ -115,13 +115,12 @@ void MediaMenu::refresh(QMenu *parentMenu) {
|
|||||||
cdromMutePos = menu->children().count();
|
cdromMutePos = menu->children().count();
|
||||||
menu->addAction(tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true);
|
menu->addAction(tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true);
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
cdromEmptyPos = menu->children().count();
|
menu->addAction(tr("&Image..."), [this, i]() { cdromMount(i); })->setCheckable(false);
|
||||||
menu->addAction(tr("E&mpty"), [this, i]() { cdromEject(i); })->setCheckable(true);
|
|
||||||
cdromReloadPos = menu->children().count();
|
cdromReloadPos = menu->children().count();
|
||||||
menu->addAction(tr("&Reload previous image"), [this, i]() { cdromReload(i); });
|
menu->addAction(tr("&Reload previous image"), [this, i]() { cdromReload(i); });
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
cdromImagePos = menu->children().count();
|
cdromImagePos = menu->children().count();
|
||||||
menu->addAction(tr("&Image"), [this, i]() { cdromMount(i); })->setCheckable(true);
|
menu->addAction(tr("E&ject"), [this, i]() { cdromEject(i); })->setCheckable(false);
|
||||||
cdromMenus[i] = menu;
|
cdromMenus[i] = menu;
|
||||||
cdromUpdateMenu(i);
|
cdromUpdateMenu(i);
|
||||||
});
|
});
|
||||||
@@ -344,6 +343,7 @@ void MediaMenu::floppyExportTo86f(int i) {
|
|||||||
|
|
||||||
void MediaMenu::floppyUpdateMenu(int i) {
|
void MediaMenu::floppyUpdateMenu(int i) {
|
||||||
QString name = floppyfns[i];
|
QString name = floppyfns[i];
|
||||||
|
QFileInfo fi(floppyfns[i]);
|
||||||
|
|
||||||
if (!floppyMenus.contains(i))
|
if (!floppyMenus.contains(i))
|
||||||
return;
|
return;
|
||||||
@@ -354,6 +354,7 @@ void MediaMenu::floppyUpdateMenu(int i) {
|
|||||||
auto* ejectMenu = dynamic_cast<QAction*>(childs[floppyEjectPos]);
|
auto* ejectMenu = dynamic_cast<QAction*>(childs[floppyEjectPos]);
|
||||||
auto* exportMenu = dynamic_cast<QAction*>(childs[floppyExportPos]);
|
auto* exportMenu = dynamic_cast<QAction*>(childs[floppyExportPos]);
|
||||||
ejectMenu->setEnabled(!name.isEmpty());
|
ejectMenu->setEnabled(!name.isEmpty());
|
||||||
|
ejectMenu->setText(QString::asprintf(tr("Eject %s").toUtf8().constData(), name.isEmpty() ? QString().toUtf8().constData() : fi.fileName().toUtf8().constData()));
|
||||||
exportMenu->setEnabled(!name.isEmpty());
|
exportMenu->setEnabled(!name.isEmpty());
|
||||||
|
|
||||||
int type = fdd_get_type(i);
|
int type = fdd_get_type(i);
|
||||||
@@ -428,6 +429,10 @@ void MediaMenu::cdromReload(int i) {
|
|||||||
|
|
||||||
void MediaMenu::cdromUpdateMenu(int i) {
|
void MediaMenu::cdromUpdateMenu(int i) {
|
||||||
QString name = cdrom[i].image_path;
|
QString name = cdrom[i].image_path;
|
||||||
|
QString prev_name = cdrom[i].prev_image_path;
|
||||||
|
QFileInfo fi(cdrom[i].image_path);
|
||||||
|
QFileInfo fi_prev(cdrom[i].prev_image_path);
|
||||||
|
|
||||||
if (!cdromMenus.contains(i))
|
if (!cdromMenus.contains(i))
|
||||||
return;
|
return;
|
||||||
auto* menu = cdromMenus[i];
|
auto* menu = cdromMenus[i];
|
||||||
@@ -437,12 +442,12 @@ void MediaMenu::cdromUpdateMenu(int i) {
|
|||||||
muteMenu->setChecked(cdrom[i].sound_on == 0);
|
muteMenu->setChecked(cdrom[i].sound_on == 0);
|
||||||
|
|
||||||
auto* imageMenu = dynamic_cast<QAction*>(childs[cdromImagePos]);
|
auto* imageMenu = dynamic_cast<QAction*>(childs[cdromImagePos]);
|
||||||
auto* emptyMenu = dynamic_cast<QAction*>(childs[cdromEmptyPos]);
|
imageMenu->setEnabled(!name.isEmpty());
|
||||||
imageMenu->setChecked(cdrom[i].host_drive == 200);
|
imageMenu->setText(QString::asprintf(tr("Eject %s").toUtf8().constData(), name.isEmpty() ? QString().toUtf8().constData() : fi.fileName().toUtf8().constData()));
|
||||||
emptyMenu->setChecked(cdrom[i].host_drive != 200);
|
|
||||||
|
|
||||||
auto* prevMenu = dynamic_cast<QAction*>(childs[cdromReloadPos]);
|
auto* prevMenu = dynamic_cast<QAction*>(childs[cdromReloadPos]);
|
||||||
prevMenu->setEnabled(cdrom[i].prev_host_drive != 0);
|
prevMenu->setText(QString::asprintf(tr("Reload %s").toUtf8().constData(), prev_name.isEmpty() ? tr("previous image").toUtf8().constData() : fi_prev.fileName().toUtf8().constData()));
|
||||||
|
prevMenu->setVisible(name.isEmpty() && cdrom[i].prev_host_drive != 0);
|
||||||
|
|
||||||
QString busName = tr("Unknown Bus");
|
QString busName = tr("Unknown Bus");
|
||||||
switch (cdrom[i].bus_type) {
|
switch (cdrom[i].bus_type) {
|
||||||
|
@@ -80,7 +80,6 @@ private:
|
|||||||
int floppyEjectPos;
|
int floppyEjectPos;
|
||||||
|
|
||||||
int cdromMutePos;
|
int cdromMutePos;
|
||||||
int cdromEmptyPos;
|
|
||||||
int cdromReloadPos;
|
int cdromReloadPos;
|
||||||
int cdromImagePos;
|
int cdromImagePos;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user