all repos — mgba @ 458df43d1890b3918e5e19f2b319d11a524eb0de

mGBA Game Boy Advance Emulator

src/platform/qt/SettingsView.cpp (view raw)

 1/* Copyright (c) 2013-2014 Jeffrey Pfau
 2 *
 3 * This Source Code Form is subject to the terms of the Mozilla Public
 4 * License, v. 2.0. If a copy of the MPL was not distributed with this
 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 6#include "SettingsView.h"
 7
 8#include "ConfigController.h"
 9
10#include <QFileDialog>
11
12using namespace QGBA;
13
14SettingsView::SettingsView(ConfigController* controller, QWidget* parent)
15 	: QWidget(parent)
16 	, m_controller(controller)
17{
18	m_ui.setupUi(this);
19
20	loadSetting("bios", m_ui.bios);
21	loadSetting("skipBios", m_ui.skipBios);
22	loadSetting("audioBuffers", m_ui.audioBufferSize);
23	loadSetting("videoSync", m_ui.videoSync);
24	loadSetting("audioSync", m_ui.audioSync);
25	loadSetting("frameskip", m_ui.frameskip);
26	loadSetting("lockAspectRatio", m_ui.lockAspectRatio);
27	loadSetting("rewindBufferInterval", m_ui.rewindInterval);
28	loadSetting("rewindBufferCapacity", m_ui.rewindCapacity);
29	loadSetting("resampleVideo", m_ui.resampleVideo);
30
31	connect(m_ui.biosBrowse, SIGNAL(clicked()), this, SLOT(selectBios()));
32	connect(m_ui.buttonBox, SIGNAL(accepted()), this, SLOT(updateConfig()));
33}
34
35void SettingsView::selectBios() {
36	QString filename = QFileDialog::getOpenFileName(this, tr("Select BIOS"));
37	if (!filename.isEmpty()) {
38		m_ui.bios->setText(filename);
39	}
40}
41
42void SettingsView::updateConfig() {
43	saveSetting("bios", m_ui.bios);
44	saveSetting("skipBios", m_ui.skipBios);
45	saveSetting("audioBuffers", m_ui.audioBufferSize);
46	saveSetting("videoSync", m_ui.videoSync);
47	saveSetting("audioSync", m_ui.audioSync);
48	saveSetting("frameskip", m_ui.frameskip);
49	saveSetting("lockAspectRatio", m_ui.lockAspectRatio);
50	saveSetting("rewindBufferInterval", m_ui.rewindInterval);
51	saveSetting("rewindBufferCapacity", m_ui.rewindCapacity);
52	saveSetting("resampleVideo", m_ui.resampleVideo);
53	m_controller->write();
54
55	emit biosLoaded(m_ui.bios->text());
56}
57
58void SettingsView::saveSetting(const char* key, const QAbstractButton* field) {
59	m_controller->setOption(key, field->isChecked());
60	m_controller->updateOption(key);
61}
62
63void SettingsView::saveSetting(const char* key, const QComboBox* field) {
64	saveSetting(key, field->lineEdit());
65}
66
67void SettingsView::saveSetting(const char* key, const QLineEdit* field) {
68	m_controller->setOption(key, field->text());
69	m_controller->updateOption(key);
70}
71
72void SettingsView::saveSetting(const char* key, const QSpinBox* field) {
73	m_controller->setOption(key, field->cleanText());
74	m_controller->updateOption(key);
75}
76
77void SettingsView::loadSetting(const char* key, QAbstractButton* field) {
78	QString option = m_controller->getOption(key);
79	field->setChecked(option != "0");
80}
81
82void SettingsView::loadSetting(const char* key, QComboBox* field) {
83	loadSetting(key, field->lineEdit());
84}
85
86void SettingsView::loadSetting(const char* key, QLineEdit* field) {
87	QString option = m_controller->getOption(key);
88	field->setText(option);
89}
90
91void SettingsView::loadSetting(const char* key, QSpinBox* field) {
92	QString option = m_controller->getOption(key);
93	field->setValue(option.toInt());
94}