aboutsummaryrefslogtreecommitdiff
path: root/gui/options.cpp
blob: 7d4a4d4944365e6169ee3ea6569fa972d048c58b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* ScummVM - Scumm Interpreter
 * Copyright (C) 2002 The ScummVM project
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header$
 */

#include "stdafx.h"
#include "options.h"
#include "newgui.h"
#include "PopUpWidget.h"

#include "common/config-file.h"
//#include "common/engine.h"
//#include "common/gameDetector.h"

// TODO - allow changing options for:
// - the save path (use _browser!)
// - music & graphics driver (but see also the comments on EditGameDialog
//   for some techincal difficulties with this)
// - default volumes (sfx/master/music)

enum {
	kOKCmd = 'OK  '
};

GlobalOptionsDialog::GlobalOptionsDialog(NewGui *gui)
	: Dialog(gui, 10, 30, 320-2*10, 200-2*30)
{
	// The GFX mode popup & a label
	// TODO - add an API to query the list of available GFX modes, and to get/set the mode
	new StaticTextWidget(this, 10, 10+1, 90, kLineHeight, "Graphics: ", kTextAlignRight);
	PopUpWidget *gfxPopUp;
	gfxPopUp = new PopUpWidget(this, 100, 10, 200, kLineHeight);
	gfxPopUp->appendEntry("Normal (no scaling)");
	gfxPopUp->appendEntry("2x");
	gfxPopUp->appendEntry("3x");
	gfxPopUp->appendEntry("2xSAI");
	gfxPopUp->appendEntry("Super2xSAI");
	gfxPopUp->appendEntry("AuperEagle");
	gfxPopUp->appendEntry("AdvMAME2x");
	gfxPopUp->setSelected(0);

	// The MIDI mode popup & a label
	// TODO - add an API to query the list of available MIDI drivers
	new StaticTextWidget(this, 10, 26+1, 90, kLineHeight, "MIDI driver: ", kTextAlignRight);
	PopUpWidget *midiPopUp;
	midiPopUp = new PopUpWidget(this, 100, 26, 200, kLineHeight);
	midiPopUp->appendEntry("None");
	midiPopUp->appendEntry("Adlib");
	midiPopUp->appendEntry("CoreAudio");
	midiPopUp->appendEntry("QuickTime");
	midiPopUp->setSelected(0);


	//
	// Sound controllers
	//
	const int yoffset = 45;
	new StaticTextWidget(this, 10, yoffset+10, 90, 16, "Master volume: ", kTextAlignRight);
	new StaticTextWidget(this, 10, yoffset+26, 90, 16, "Music volume: ", kTextAlignRight);
	new StaticTextWidget(this, 10, yoffset+42, 90, 16, "SFX volume: ", kTextAlignRight);

	SliderWidget *masterVolumeSlider, *musicVolumeSlider, *sfxVolumeSlider;

	masterVolumeSlider = new SliderWidget(this, 110, yoffset+8, 80, 12, "Volume1", 0);
	musicVolumeSlider  = new SliderWidget(this, 110, yoffset+24, 80, 12, "Volume2", 0);
	sfxVolumeSlider    = new SliderWidget(this, 110, yoffset+40, 80, 12, "Volume3", 0);

	masterVolumeSlider->setMinValue(0);	masterVolumeSlider->setMaxValue(255);
	musicVolumeSlider->setMinValue(0);	musicVolumeSlider->setMaxValue(255);
	sfxVolumeSlider->setMinValue(0);	sfxVolumeSlider->setMaxValue(255);

	Widget *masterVolumeLabel, *musicVolumeLabel, *sfxVolumeLabel;
	
	masterVolumeLabel = new StaticTextWidget(this, 200, yoffset+10, 24, 16, "100%", kTextAlignLeft);
	musicVolumeLabel  = new StaticTextWidget(this, 200, yoffset+26, 24, 16, "100%", kTextAlignLeft);
	sfxVolumeLabel    = new StaticTextWidget(this, 200, yoffset+42, 24, 16, "100%", kTextAlignLeft);
	
	masterVolumeLabel->setFlags(WIDGET_CLEARBG);
	musicVolumeLabel->setFlags(WIDGET_CLEARBG);
	sfxVolumeLabel->setFlags(WIDGET_CLEARBG);


	// Add OK & Cancel buttons
	addButton(_w-2*(kButtonWidth+10), _h-24, "Cancel", kCloseCmd, 0);
	addButton(_w-(kButtonWidth+10), _h-24, "OK", kOKCmd, 0);
}

GlobalOptionsDialog::~GlobalOptionsDialog()
{
}

void GlobalOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data)
{
	if (cmd == kOKCmd) {
		// TODO Write back changes made to config object
		setResult(1);
		close();
	} else {
		Dialog::handleCommand(sender, cmd, data);
	}
}