Qt: Simplify Change Disc menu logic

This commit is contained in:
Connor McLaughlin 2020-01-24 14:50:40 +10:00
parent 69841d0a09
commit 1998aa96a4
3 changed files with 40 additions and 20 deletions

View file

@ -129,27 +129,20 @@ void MainWindow::onStartDiscActionTriggered()
m_host_interface->bootSystem(std::move(filename), QString()); m_host_interface->bootSystem(std::move(filename), QString());
} }
void MainWindow::onChangeDiscActionTriggered() void MainWindow::onChangeDiscFromFileActionTriggered()
{ {
QMenu menu(tr("Change Disc..."), this);
QAction* from_file = menu.addAction(tr("From File..."));
QAction* from_game_list = menu.addAction(tr("From Game List"));
QAction* selected = menu.exec(QCursor::pos());
if (selected == from_file)
{
QString filename = QString filename =
QFileDialog::getOpenFileName(this, tr("Select Disc Image"), QString(), tr(DISC_IMAGE_FILTER), nullptr); QFileDialog::getOpenFileName(this, tr("Select Disc Image"), QString(), tr(DISC_IMAGE_FILTER), nullptr);
if (filename.isEmpty()) if (filename.isEmpty())
return; return;
m_host_interface->changeDisc(filename); m_host_interface->changeDisc(filename);
} }
else if (selected == from_game_list)
{ void MainWindow::onChangeDiscFromGameListActionTriggered()
{
m_host_interface->pauseSystem(true); m_host_interface->pauseSystem(true);
switchToGameListView(); switchToGameListView();
}
} }
void MainWindow::onStartBiosActionTriggered() void MainWindow::onStartBiosActionTriggered()
@ -217,6 +210,7 @@ void MainWindow::updateEmulationActions(bool starting, bool running)
m_ui.actionReset->setDisabled(starting || !running); m_ui.actionReset->setDisabled(starting || !running);
m_ui.actionPause->setDisabled(starting || !running); m_ui.actionPause->setDisabled(starting || !running);
m_ui.actionChangeDisc->setDisabled(starting || !running); m_ui.actionChangeDisc->setDisabled(starting || !running);
m_ui.menuChangeDisc->setDisabled(starting || !running);
m_ui.actionLoadState->setDisabled(starting); m_ui.actionLoadState->setDisabled(starting);
m_ui.actionSaveState->setDisabled(starting); m_ui.actionSaveState->setDisabled(starting);
@ -263,7 +257,10 @@ void MainWindow::connectSignals()
connect(m_ui.actionStartDisc, &QAction::triggered, this, &MainWindow::onStartDiscActionTriggered); connect(m_ui.actionStartDisc, &QAction::triggered, this, &MainWindow::onStartDiscActionTriggered);
connect(m_ui.actionStartBios, &QAction::triggered, this, &MainWindow::onStartBiosActionTriggered); connect(m_ui.actionStartBios, &QAction::triggered, this, &MainWindow::onStartBiosActionTriggered);
connect(m_ui.actionChangeDisc, &QAction::triggered, this, &MainWindow::onChangeDiscActionTriggered); connect(m_ui.actionChangeDisc, &QAction::triggered, [this] { m_ui.menuChangeDisc->exec(QCursor::pos()); });
connect(m_ui.actionChangeDiscFromFile, &QAction::triggered, this, &MainWindow::onChangeDiscFromFileActionTriggered);
connect(m_ui.actionChangeDiscFromGameList, &QAction::triggered, this,
&MainWindow::onChangeDiscFromGameListActionTriggered);
connect(m_ui.actionOpenDirectory, &QAction::triggered, this, &MainWindow::onOpenDirectoryActionTriggered); connect(m_ui.actionOpenDirectory, &QAction::triggered, this, &MainWindow::onOpenDirectoryActionTriggered);
connect(m_ui.actionPowerOff, &QAction::triggered, m_host_interface, &QtHostInterface::powerOffSystem); connect(m_ui.actionPowerOff, &QAction::triggered, m_host_interface, &QtHostInterface::powerOffSystem);
connect(m_ui.actionReset, &QAction::triggered, m_host_interface, &QtHostInterface::resetSystem); connect(m_ui.actionReset, &QAction::triggered, m_host_interface, &QtHostInterface::resetSystem);

View file

@ -33,6 +33,8 @@ private Q_SLOTS:
void onStartDiscActionTriggered(); void onStartDiscActionTriggered();
void onChangeDiscActionTriggered(); void onChangeDiscActionTriggered();
void onChangeDiscFromFileActionTriggered();
void onChangeDiscFromGameListActionTriggered();
void onStartBiosActionTriggered(); void onStartBiosActionTriggered();
void onOpenDirectoryActionTriggered(); void onOpenDirectoryActionTriggered();
void onExitActionTriggered(); void onExitActionTriggered();

View file

@ -37,13 +37,24 @@
<property name="title"> <property name="title">
<string>System</string> <string>System</string>
</property> </property>
<widget class="QMenu" name="menuChangeDisc">
<property name="title">
<string>Change Disc</string>
</property>
<property name="icon">
<iconset resource="resources/icons.qrc">
<normaloff>:/icons/media-optical.png</normaloff>:/icons/media-optical.png</iconset>
</property>
<addaction name="actionChangeDiscFromFile"/>
<addaction name="actionChangeDiscFromGameList"/>
</widget>
<addaction name="actionStartDisc"/> <addaction name="actionStartDisc"/>
<addaction name="actionStartBios"/> <addaction name="actionStartBios"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionPowerOff"/> <addaction name="actionPowerOff"/>
<addaction name="actionReset"/> <addaction name="actionReset"/>
<addaction name="actionPause"/> <addaction name="actionPause"/>
<addaction name="actionChangeDisc"/> <addaction name="menuChangeDisc"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionLoadState"/> <addaction name="actionLoadState"/>
<addaction name="actionSaveState"/> <addaction name="actionSaveState"/>
@ -340,6 +351,16 @@
<string>&amp;Settings...</string> <string>&amp;Settings...</string>
</property> </property>
</action> </action>
<action name="actionChangeDiscFromFile">
<property name="text">
<string>From File...</string>
</property>
</action>
<action name="actionChangeDiscFromGameList">
<property name="text">
<string>From Game List...</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="resources/icons.qrc"/> <include location="resources/icons.qrc"/>