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}