diff --git a/source/frontends/qapple/options.cpp b/source/frontends/qapple/options.cpp index 1fb17655..2df91208 100644 --- a/source/frontends/qapple/options.cpp +++ b/source/frontends/qapple/options.cpp @@ -118,7 +118,7 @@ GlobalOptions GlobalOptions::fromQSettings() return options; } -void GlobalOptions::setData(const Preferences::Data & data) +void GlobalOptions::setData(const GlobalOptions & data) { if (this->msGap != data.msGap) { @@ -126,10 +126,10 @@ void GlobalOptions::setData(const Preferences::Data & data) QSettings().setValue(REG_TIMER, this->msGap); } - if (this->msFullSpeed != data.fullSpeedMs) + if (this->msFullSpeed != data.msFullSpeed) { - this->msFullSpeed = data.fullSpeedMs; - QSettings().setValue(REG_FULL_SPEED, this->msGap); + this->msFullSpeed = data.msFullSpeed; + QSettings().setValue(REG_FULL_SPEED, this->msFullSpeed); } if (this->screenshotTemplate != data.screenshotTemplate) @@ -138,21 +138,21 @@ void GlobalOptions::setData(const Preferences::Data & data) QSettings().setValue(REG_SCREENSHOT_TEMPLATE, this->screenshotTemplate); } - if (this->slot0Card != data.cardInSlot0) + if (this->slot0Card != data.slot0Card) { - this->slot0Card = data.cardInSlot0; + this->slot0Card = data.slot0Card; QSettings().setValue(REG_SLOT0_CARD, this->slot0Card); } - if (this->ramWorksMemorySize != data.ramWorksSize) + if (this->ramWorksMemorySize != data.ramWorksMemorySize) { - this->ramWorksMemorySize = data.ramWorksSize; + this->ramWorksMemorySize = data.ramWorksMemorySize; QSettings().setValue(REG_RAMWORKS_SIZE, this->ramWorksMemorySize); } - if (this->gamepadName != data.joystick) + if (this->gamepadName != data.gamepadName) { - this->gamepadName = data.joystick; + this->gamepadName = data.gamepadName; QSettings().setValue(REG_GAMEPAD_NAME, this->gamepadName); } @@ -175,20 +175,7 @@ void GlobalOptions::setData(const Preferences::Data & data) } } -void GlobalOptions::getData(Preferences::Data & data) const -{ - data.msGap = this->msGap; - data.fullSpeedMs = this->msFullSpeed; - data.cardInSlot0 = this->slot0Card; - data.ramWorksSize = this->ramWorksMemorySize; - data.screenshotTemplate = this->screenshotTemplate; - data.joystick = this->gamepadName; - data.audioLatency = this->audioLatency; - data.silenceDelay = this->silenceDelay; - data.volume = this->volume; -} - -void getAppleWinPreferences(Preferences::Data & data) +void getAppleWinPreferences(PreferenceData & data) { data.disks.resize(diskIDs.size()); for (size_t i = 0; i < diskIDs.size(); ++i) @@ -228,7 +215,7 @@ void getAppleWinPreferences(Preferences::Data & data) data.verticalBlend = IsVideoStyle(VS_COLOR_VERTICAL_BLEND); } -void setAppleWinPreferences(const Preferences::Data & currentData, const Preferences::Data & newData) +void setAppleWinPreferences(const PreferenceData & currentData, const PreferenceData & newData) { if (currentData.apple2Type != newData.apple2Type) { diff --git a/source/frontends/qapple/options.h b/source/frontends/qapple/options.h index 32c4b42b..5bd9a338 100644 --- a/source/frontends/qapple/options.h +++ b/source/frontends/qapple/options.h @@ -22,11 +22,31 @@ public: int silenceDelay; int volume; - void getData(Preferences::Data & data) const; - void setData(const Preferences::Data & data); + void setData(const GlobalOptions & data); }; -void getAppleWinPreferences(Preferences::Data & data); -void setAppleWinPreferences(const Preferences::Data & currentData, const Preferences::Data & newData); +struct PreferenceData +{ + GlobalOptions options; + + int apple2Type; + bool mouseInSlot4; + bool cpmInSlot5; + bool hdInSlot7; + + bool enhancedSpeed; + + int videoType; + bool scanLines; + bool verticalBlend; + + std::vector disks; + std::vector hds; + + QString saveState; +}; + +void getAppleWinPreferences(PreferenceData & data); +void setAppleWinPreferences(const PreferenceData & currentData, const PreferenceData & newData); #endif // CONFIGURATION_H diff --git a/source/frontends/qapple/preferences.cpp b/source/frontends/qapple/preferences.cpp index c083a5b7..f4449bff 100644 --- a/source/frontends/qapple/preferences.cpp +++ b/source/frontends/qapple/preferences.cpp @@ -5,6 +5,8 @@ #include "Common.h" #include "Memory.h" +#include "options.h" + #include #include #include @@ -130,7 +132,7 @@ Preferences::Preferences(QWidget *parent) : myHDs.push_back(ui->hd2); } -void Preferences::setup(const Data & data, QSettings & settings) +void Preferences::setup(const PreferenceData & data, QSettings & settings) { populateJoysticks(); setData(data); @@ -167,69 +169,66 @@ void Preferences::setSettings(QSettings & settings) ui->registryTree->expandAll(); } -void Preferences::setData(const Data & data) +void Preferences::setData(const PreferenceData & data) { + ui->lc_0->setCurrentIndex(data.options.slot0Card); + ui->timer_gap->setValue(data.options.msGap); + ui->full_ms->setValue(data.options.msFullSpeed); + ui->rw_size->setMaximum(kMaxExMemoryBanks); + ui->rw_size->setValue(data.options.ramWorksMemorySize); + ui->joystick->setCurrentText(data.options.gamepadName); + ui->screenshot->setText(data.options.screenshotTemplate); + ui->audio_latency->setValue(data.options.audioLatency); + ui->silence_delay->setValue(data.options.silenceDelay); + ui->volume->setValue(data.options.volume); + initialiseDisks(myDisks, data.disks); initialiseDisks(myHDs, data.hds); ui->enhanced_speed->setChecked(data.enhancedSpeed); ui->apple2Type->setCurrentIndex(data.apple2Type); - ui->lc_0->setCurrentIndex(data.cardInSlot0); ui->mouse_4->setChecked(data.mouseInSlot4); ui->cpm_5->setChecked(data.cpmInSlot5); ui->hd_7->setChecked(data.hdInSlot7); - ui->timer_gap->setValue(data.msGap); - ui->full_ms->setValue(data.fullSpeedMs); - - ui->rw_size->setMaximum(kMaxExMemoryBanks); - ui->rw_size->setValue(data.ramWorksSize); // synchronise on_hd_7_clicked(data.hdInSlot7); - ui->joystick->setCurrentText(data.joystick); - ui->save_state->setText(data.saveState); - ui->screenshot->setText(data.screenshotTemplate); - - ui->audio_latency->setValue(data.audioLatency); - ui->silence_delay->setValue(data.silenceDelay); - ui->volume->setValue(data.volume); - ui->video_type->setCurrentIndex(data.videoType); ui->scan_lines->setChecked(data.scanLines); ui->vertical_blend->setChecked(data.verticalBlend); } -Preferences::Data Preferences::getData() const +PreferenceData Preferences::getData() const { - Data data; + PreferenceData data; + + data.options.slot0Card = ui->lc_0->currentIndex(); + data.options.ramWorksMemorySize = ui->rw_size->value(); + data.options.msGap = ui->timer_gap->value(); + data.options.msFullSpeed = ui->full_ms->value(); + data.options.screenshotTemplate = ui->screenshot->text(); + data.options.audioLatency = ui->audio_latency->value(); + data.options.silenceDelay = ui->silence_delay->value(); + data.options.volume = ui->volume->value(); + + // because index = 0 is None + if (ui->joystick->currentIndex() >= 1) + { + data.options.gamepadName = ui->joystick->currentText(); + } fillData(myDisks, data.disks); fillData(myHDs, data.hds); data.enhancedSpeed = ui->enhanced_speed->isChecked(); data.apple2Type = ui->apple2Type->currentIndex(); - data.cardInSlot0 = ui->lc_0->currentIndex(); data.mouseInSlot4 = ui->mouse_4->isChecked(); data.cpmInSlot5 = ui->cpm_5->isChecked(); data.hdInSlot7 = ui->hd_7->isChecked(); - data.ramWorksSize = ui->rw_size->value(); - data.msGap = ui->timer_gap->value(); - data.fullSpeedMs = ui->full_ms->value(); - - // because index = 0 is None - if (ui->joystick->currentIndex() >= 1) - { - data.joystick = ui->joystick->currentText(); - } data.saveState = ui->save_state->text(); - data.screenshotTemplate = ui->screenshot->text(); - - data.audioLatency = ui->audio_latency->value(); - data.silenceDelay = ui->silence_delay->value(); - data.volume = ui->volume->value(); data.videoType = ui->video_type->currentIndex(); data.scanLines = ui->scan_lines->isChecked(); diff --git a/source/frontends/qapple/preferences.h b/source/frontends/qapple/preferences.h index d4ff9691..47a7948f 100644 --- a/source/frontends/qapple/preferences.h +++ b/source/frontends/qapple/preferences.h @@ -7,6 +7,7 @@ class QComboBox; class QSettings; +struct PreferenceData; namespace Ui { class Preferences; @@ -18,41 +19,10 @@ class Preferences : public QDialog public: - struct Data - { - int apple2Type; - int cardInSlot0; - bool mouseInSlot4; - bool cpmInSlot5; - bool hdInSlot7; - int msGap; - int fullSpeedMs; - - int ramWorksSize; - - QString joystick; - - bool enhancedSpeed; - - int audioLatency; - int silenceDelay; - int volume; - - int videoType; - bool scanLines; - bool verticalBlend; - - std::vector disks; - std::vector hds; - - QString saveState; - QString screenshotTemplate; - }; - explicit Preferences(QWidget *parent); - void setup(const Data & data, QSettings & settings); - Data getData() const; + void setup(const PreferenceData & data, QSettings & settings); + PreferenceData getData() const; private slots: void on_disk1_activated(int index); @@ -74,7 +44,7 @@ private: std::vector myHDs; void setSettings(QSettings & settings); - void setData(const Data & data); + void setData(const PreferenceData & data); void populateJoysticks(); void browseDisk(const std::vector & vdisks, const size_t id); diff --git a/source/frontends/qapple/qapple.cpp b/source/frontends/qapple/qapple.cpp index deb59a5e..fbded00f 100644 --- a/source/frontends/qapple/qapple.cpp +++ b/source/frontends/qapple/qapple.cpp @@ -386,18 +386,18 @@ void QApple::on_actionOptions_triggered() // but often it forces to terminate the emulator PauseEmulator pause(this); - Preferences::Data currentData; + PreferenceData currentData; getAppleWinPreferences(currentData); - myOptions.getData(currentData); + currentData.options = myOptions; QSettings settings; // the function will "modify" it myPreferences->setup(currentData, settings); if (myPreferences->exec()) { - const Preferences::Data newData = myPreferences->getData(); + const PreferenceData newData = myPreferences->getData(); setAppleWinPreferences(currentData, newData); - myOptions.setData(newData); + myOptions.setData(newData.options); reloadOptions(); }