Qt: Allow overrides to be saved before a game is loaded

This commit is contained in:
Vicki Pfau 2017-09-20 22:39:45 -07:00
parent 380bc189c3
commit 1414955da0
3 changed files with 14 additions and 5 deletions

View File

@ -33,6 +33,7 @@ Misc:
- SDL: Fix 2.0.5 build on macOS under some circumstances - SDL: Fix 2.0.5 build on macOS under some circumstances
- GBA: Detect hardware for Pokémon FireRed ROM hacks - GBA: Detect hardware for Pokémon FireRed ROM hacks
- CMake: Fix CPack dependencies for libpng 1.6 - CMake: Fix CPack dependencies for libpng 1.6
- Qt: Allow overrides to be saved before a game is loaded
0.6.0: (2017-07-16) 0.6.0: (2017-07-16)
Features: Features:

View File

@ -105,7 +105,6 @@ OverrideView::OverrideView(GameController* controller, ConfigController* config,
connect(m_ui.buttonBox, &QDialogButtonBox::accepted, this, &OverrideView::saveOverride); connect(m_ui.buttonBox, &QDialogButtonBox::accepted, this, &OverrideView::saveOverride);
connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close); connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close);
m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
if (controller->isLoaded()) { if (controller->isLoaded()) {
gameStarted(controller->thread()); gameStarted(controller->thread());
@ -149,10 +148,15 @@ bool OverrideView::eventFilter(QObject* obj, QEvent* event) {
} }
void OverrideView::saveOverride() { void OverrideView::saveOverride() {
if (!m_config) { Override* override = m_controller->override();
if (!override) {
return; return;
} }
m_config->saveOverride(*m_controller->override()); if (m_controller->isLoaded()) {
m_config->saveOverride(*override);
} else {
m_savePending = true;
}
} }
void OverrideView::updateOverrides() { void OverrideView::updateOverrides() {
@ -230,7 +234,6 @@ void OverrideView::gameStarted(mCoreThread* thread) {
} }
m_ui.tabWidget->setEnabled(false); m_ui.tabWidget->setEnabled(false);
m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(true);
switch (thread->core->platform(thread->core)) { switch (thread->core->platform(thread->core)) {
#ifdef M_CORE_GBA #ifdef M_CORE_GBA
@ -275,13 +278,17 @@ void OverrideView::gameStarted(mCoreThread* thread) {
case PLATFORM_NONE: case PLATFORM_NONE:
break; break;
} }
if (m_savePending) {
m_savePending = false;
saveOverride();
}
} }
void OverrideView::gameStopped() { void OverrideView::gameStopped() {
m_ui.tabWidget->setEnabled(true); m_ui.tabWidget->setEnabled(true);
m_ui.savetype->setCurrentIndex(0); m_ui.savetype->setCurrentIndex(0);
m_ui.idleLoop->clear(); m_ui.idleLoop->clear();
m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
m_ui.mbc->setCurrentIndex(0); m_ui.mbc->setCurrentIndex(0);
m_ui.gbModel->setCurrentIndex(0); m_ui.gbModel->setCurrentIndex(0);

View File

@ -44,6 +44,7 @@ private:
GameController* m_controller; GameController* m_controller;
ConfigController* m_config; ConfigController* m_config;
bool m_savePending = false;
#ifdef M_CORE_GB #ifdef M_CORE_GB
uint32_t m_gbColors[4]{}; uint32_t m_gbColors[4]{};