mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-19 23:29:05 +00:00
Resolves duplicative enums.
This commit is contained in:
parent
404c35feb5
commit
f6e5a2fb04
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user