all repos — mgba @ f25821524d79469e3589ab23340d7e6b4ae6a27f

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("fpsTarget", m_ui.fpsTarget);
27	loadSetting("lockAspectRatio", m_ui.lockAspectRatio);
28	loadSetting("rewindBufferInterval", m_ui.rewindInterval);
29	loadSetting("rewindBufferCapacity", m_ui.rewindCapacity);
30	loadSetting("resampleVideo", m_ui.resampleVideo);
31
32	connect(m_ui.biosBrowse, SIGNAL(clicked()), this, SLOT(selectBios()));
33	connect(m_ui.buttonBox, SIGNAL(accepted()), this, SLOT(updateConfig()));
34}
35
36void SettingsView::selectBios() {
37	QString filename = QFileDialog::getOpenFileName(this, tr("Select BIOS"));
38	if (!filename.isEmpty()) {
39		m_ui.bios->setText(filename);
40	}
41}
42
43void SettingsView::updateConfig() {
44	saveSetting("bios", m_ui.bios);
45	saveSetting("skipBios", m_ui.skipBios);
46	saveSetting("audioBuffers", m_ui.audioBufferSize);
47	saveSetting("videoSync", m_ui.videoSync);
48	saveSetting("audioSync", m_ui.audioSync);
49	saveSetting("frameskip", m_ui.frameskip);
50	saveSetting("fpsTarget", m_ui.fpsTarget);
51	saveSetting("lockAspectRatio", m_ui.lockAspectRatio);
52	saveSetting("rewindBufferInterval", m_ui.rewindInterval);
53	saveSetting("rewindBufferCapacity", m_ui.rewindCapacity);
54	saveSetting("resampleVideo", m_ui.resampleVideo);
55	m_controller->write();
56
57	emit biosLoaded(m_ui.bios->text());
58}
59
60void SettingsView::saveSetting(const char* key, const QAbstractButton* field) {
61	m_controller->setOption(key, field->isChecked());
62	m_controller->updateOption(key);
63}
64
65void SettingsView::saveSetting(const char* key, const QComboBox* field) {
66	saveSetting(key, field->lineEdit());
67}
68
69void SettingsView::saveSetting(const char* key, const QLineEdit* field) {
70	m_controller->setOption(key, field->text());
71	m_controller->updateOption(key);
72}
73
74void SettingsView::saveSetting(const char* key, const QSpinBox* field) {
75	m_controller->setOption(key, field->cleanText());
76	m_controller->updateOption(key);
77}
78
79void SettingsView::loadSetting(const char* key, QAbstractButton* field) {
80	QString option = m_controller->getOption(key);
81	field->setChecked(option != "0");
82}
83
84void SettingsView::loadSetting(const char* key, QComboBox* field) {
85	loadSetting(key, field->lineEdit());
86}
87
88void SettingsView::loadSetting(const char* key, QLineEdit* field) {
89	QString option = m_controller->getOption(key);
90	field->setText(option);
91}
92
93void SettingsView::loadSetting(const char* key, QSpinBox* field) {
94	QString option = m_controller->getOption(key);
95	field->setValue(option.toInt());
96}