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}