]> Shamusworld >> Repos - virtualjaguar/blob - src/gui/configdialog.cpp
Minor changes to make the key definition dialog a bit nicer.
[virtualjaguar] / src / gui / configdialog.cpp
1 //
2 // configdialog.cpp - Configuration dialog
3 //
4 // by James L. Hammons
5 // (C) 2010 Underground Software
6 //
7 // JLH = James L. Hammons <jlhamm@acm.org>
8 //
9 // Who  When        What
10 // ---  ----------  -------------------------------------------------------------
11 // JLH  01/29/2010  Created this file
12 // JLH  06/23/2011  Added initial implementation
13 //
14
15 #include "configdialog.h"
16
17 #include "generaltab.h"
18 #include "controllertab.h"
19 #include "alpinetab.h"
20 #include "settings.h"
21
22
23 ConfigDialog::ConfigDialog(QWidget * parent/*= 0*/): QDialog(parent)
24 {
25         tabWidget = new QTabWidget;
26         generalTab = new GeneralTab(this);
27         controllerTab = new ControllerTab(this);
28
29         if (vjs.hardwareTypeAlpine)
30                 alpineTab = new AlpineTab(this);
31
32         tabWidget->addTab(generalTab, tr("General"));
33         tabWidget->addTab(controllerTab, tr("Controller"));
34
35         if (vjs.hardwareTypeAlpine)
36                 tabWidget->addTab(alpineTab, tr("Alpine"));
37
38         buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
39
40         connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
41         connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
42
43         QVBoxLayout * mainLayout = new QVBoxLayout;
44         mainLayout->addWidget(tabWidget);
45         mainLayout->addWidget(buttonBox);
46         setLayout(mainLayout);
47
48         setWindowTitle(tr("Virtual Jaguar Settings"));
49
50         LoadDialogFromSettings();
51         controllerTab->UpdateLabel();                           // Now it's safe to do this... ;-)
52 }
53
54 ConfigDialog::~ConfigDialog()
55 {
56 }
57
58 void ConfigDialog::LoadDialogFromSettings(void)
59 {
60         generalTab->edit1->setText(vjs.jagBootPath);
61         generalTab->edit2->setText(vjs.CDBootPath);
62         generalTab->edit3->setText(vjs.EEPROMPath);
63         generalTab->edit4->setText(vjs.ROMPath);
64
65         generalTab->useBIOS->setChecked(vjs.useJaguarBIOS);
66         generalTab->useDSP->setChecked(vjs.DSPEnabled);
67         generalTab->useHostAudio->setChecked(vjs.audioEnabled);
68
69         if (vjs.hardwareTypeAlpine)
70         {
71                 alpineTab->edit1->setText(vjs.alpineROMPath);
72                 alpineTab->edit2->setText(vjs.absROMPath);
73                 alpineTab->writeROM->setChecked(vjs.allowWritesToROM);
74         }
75
76         for(int i=0; i<21; i++)
77                 controllerTab->p1Keys[i] = vjs.p1KeyBindings[i];
78 }
79
80 void ConfigDialog::UpdateVJSettings(void)
81 {
82         strcpy(vjs.jagBootPath, generalTab->edit1->text().toAscii().data());
83         strcpy(vjs.CDBootPath,  generalTab->edit2->text().toAscii().data());
84         strcpy(vjs.EEPROMPath,  generalTab->edit3->text().toAscii().data());
85         strcpy(vjs.ROMPath,     generalTab->edit4->text().toAscii().data());
86
87         vjs.useJaguarBIOS = generalTab->useBIOS->isChecked();
88         vjs.DSPEnabled    = generalTab->useDSP->isChecked();
89         vjs.audioEnabled  = generalTab->useHostAudio->isChecked();
90
91         if (vjs.hardwareTypeAlpine)
92         {
93                 strcpy(vjs.alpineROMPath, alpineTab->edit1->text().toAscii().data());
94                 strcpy(vjs.absROMPath,    alpineTab->edit2->text().toAscii().data());
95                 vjs.allowWritesToROM = alpineTab->writeROM->isChecked();
96         }
97
98         for(int i=0; i<21; i++)
99                 vjs.p1KeyBindings[i] = controllerTab->p1Keys[i];
100 }