1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-17 13:29:02 +00:00

Resolves duplicative enums.

This commit is contained in:
Thomas Harte 2020-06-28 22:50:24 -04:00
parent 404c35feb5
commit f6e5a2fb04
2 changed files with 23 additions and 28 deletions

View File

@ -38,7 +38,7 @@ std::unique_ptr<std::vector<uint8_t>> fileContentsAndClose(FILE *file) {
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
init(); init();
setVisibleWidgetSet(WidgetSet::MachinePicker); setUIPhase(UIPhase::SelectingMachine);
} }
MainWindow::MainWindow(const QString &fileName) { MainWindow::MainWindow(const QString &fileName) {
@ -81,10 +81,10 @@ MainWindow::~MainWindow() {
void MainWindow::closeEvent(QCloseEvent *event) { void MainWindow::closeEvent(QCloseEvent *event) {
// SDI behaviour, which may or may not be normal (?): if the user is closing a // SDI behaviour, which may or may not be normal (?): if the user is closing a
// final window, and it contains a machine, send them back to the machine picker. // final window, and it is anywher ebeyond the machine picker, send them back
// i.e. assume they were closing that document, not the application. // to the start. i.e. assume they were closing that document, not the application.
if(mainWindowCount == 1 && machine) { if(mainWindowCount == 1 && uiPhase != UIPhase::SelectingMachine) {
setVisibleWidgetSet(WidgetSet::MachinePicker); setUIPhase(UIPhase::SelectingMachine);
deleteMachine(); deleteMachine();
event->ignore(); event->ignore();
return; return;
@ -260,8 +260,7 @@ void MainWindow::launchMachine() {
switch(error) { switch(error) {
default: break; default: break;
case Machine::Error::MissingROM: { case Machine::Error::MissingROM: {
setVisibleWidgetSet(WidgetSet::ROMRequester); setUIPhase(UIPhase::RequestingROMs);
uiPhase = UIPhase::RequestingROMs;
// Populate request text. // Populate request text.
QString requestText = romRequestBaseText; QString requestText = romRequestBaseText;
@ -287,8 +286,7 @@ void MainWindow::launchMachine() {
return; return;
} }
setVisibleWidgetSet(WidgetSet::RunningMachine); setUIPhase(UIPhase::RunningMachine);
uiPhase = UIPhase::RunningMachine;
// Supply the scan target. // Supply the scan target.
// TODO: in the future, hypothetically, deal with non-scan producers. // TODO: in the future, hypothetically, deal with non-scan producers.
@ -636,7 +634,7 @@ void MainWindow::dropEvent(QDropEvent* event) {
event->accept(); event->accept();
switch(uiPhase) { switch(uiPhase) {
case UIPhase::NoFileSelected: { case UIPhase::SelectingMachine: {
// Treat exactly as a File -> Open... . // Treat exactly as a File -> Open... .
const auto fileName = event->mimeData()->urls()[0].toLocalFile(); const auto fileName = event->mimeData()->urls()[0].toLocalFile();
launchFile(fileName); launchFile(fileName);
@ -710,25 +708,27 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
return QObject::eventFilter(obj, event); return QObject::eventFilter(obj, event);
} }
void MainWindow::setVisibleWidgetSet(WidgetSet set) { void MainWindow::setUIPhase(UIPhase phase) {
uiPhase = phase;
// The volume slider is never visible by default; a running machine // The volume slider is never visible by default; a running machine
// will show and hide it dynamically. // will show and hide it dynamically.
ui->volumeSlider->setVisible(false); ui->volumeSlider->setVisible(false);
// Show or hide the missing ROMs box. // Show or hide the missing ROMs box.
ui->missingROMsBox->setVisible(set == WidgetSet::ROMRequester); ui->missingROMsBox->setVisible(phase == UIPhase::RequestingROMs);
// Show or hide the various machine-picking chrome. // Show or hide the various machine-picking chrome.
ui->machineSelectionTabs->setVisible(set == WidgetSet::MachinePicker); ui->machineSelectionTabs->setVisible(phase == UIPhase::SelectingMachine);
ui->startMachineButton->setVisible(set == WidgetSet::MachinePicker); ui->startMachineButton->setVisible(phase == UIPhase::SelectingMachine);
ui->topTipLabel->setVisible(set == WidgetSet::MachinePicker); ui->topTipLabel->setVisible(phase == UIPhase::SelectingMachine);
// Consider setting a window title, if it's knowable. // Consider setting a window title, if it's knowable.
switch(set) { switch(phase) {
case WidgetSet::MachinePicker: case UIPhase::SelectingMachine:
setWindowTitle(tr("Select a machine...")); setWindowTitle(tr("Select a machine..."));
break; break;
case WidgetSet::ROMRequester: case UIPhase::RequestingROMs:
setWindowTitle(tr("Provide ROMs...")); setWindowTitle(tr("Provide ROMs..."));
break; break;
default: default:
@ -737,7 +737,7 @@ void MainWindow::setVisibleWidgetSet(WidgetSet set) {
// Set appropriate focus if necessary; e.g. this ensures that machine-picker // Set appropriate focus if necessary; e.g. this ensures that machine-picker
// widgets aren't still selectable after a machine starts. // widgets aren't still selectable after a machine starts.
if(set != WidgetSet::MachinePicker) { if(phase != UIPhase::SelectingMachine) {
ui->openGLWidget->setFocus(); ui->openGLWidget->setFocus();
} }
} }

View File

@ -41,8 +41,10 @@ class MainWindow : public QMainWindow, public Outputs::Speaker::Speaker::Delegat
// Initial setup stuff. // Initial setup stuff.
Analyser::Static::TargetList targets; Analyser::Static::TargetList targets;
enum class UIPhase { enum class UIPhase {
NoFileSelected, RequestingROMs, RunningMachine SelectingMachine, RequestingROMs, RunningMachine
} uiPhase = UIPhase::NoFileSelected; } uiPhase = UIPhase::SelectingMachine;
void setUIPhase(UIPhase);
void launchMachine(); void launchMachine();
QString romRequestBaseText; QString romRequestBaseText;
@ -64,13 +66,6 @@ class MainWindow : public QMainWindow, public Outputs::Speaker::Speaker::Delegat
bool processEvent(QKeyEvent *); bool processEvent(QKeyEvent *);
enum class WidgetSet {
MachinePicker,
ROMRequester,
RunningMachine,
};
void setVisibleWidgetSet(WidgetSet);
private slots: private slots:
void startMachine(); void startMachine();