1//============================================================================
2//
3// SSSS tt lll lll
4// SS SS tt ll ll
5// SS tttttt eeee ll ll aaaa
6// SSSS tt ee ee ll ll aa
7// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
8// SS SS tt ee ll ll aa aa
9// SSSS ttt eeeee llll llll aaaaa
10//
11// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
12// and the Stella Team
13//
14// See the file "License.txt" for information on usage and redistribution of
15// this file, and for a DISCLAIMER OF ALL WARRANTIES.
16//============================================================================
17
18#ifndef OPTIONS_DIALOG_HXX
19#define OPTIONS_DIALOG_HXX
20
21class CommandSender;
22class DialogContainer;
23class GuiObject;
24class OSystem;
25class VideoDialog;
26class AudioDialog;
27class InputDialog;
28class UIDialog;
29class SnapshotDialog;
30class GameInfoDialog;
31class RomAuditDialog;
32#ifdef CHEATCODE_SUPPORT
33 class CheatCodeDialog;
34#endif
35class HelpDialog;
36class AboutDialog;
37class LoggerDialog;
38class DeveloperDialog;
39
40#include "Menu.hxx"
41#include "Dialog.hxx"
42
43class OptionsDialog : public Dialog
44{
45 public:
46 OptionsDialog(OSystem& osystem, DialogContainer& parent, GuiObject* boss,
47 int max_w, int max_h, Menu::AppMode mode);
48 virtual ~OptionsDialog();
49
50 private:
51 void loadConfig() override;
52 void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
53
54 private:
55 unique_ptr<VideoDialog> myVideoDialog;
56 unique_ptr<AudioDialog> myAudioDialog;
57 unique_ptr<InputDialog> myInputDialog;
58 unique_ptr<UIDialog> myUIDialog;
59 unique_ptr<SnapshotDialog> mySnapshotDialog;
60 unique_ptr<DeveloperDialog> myDeveloperDialog;
61 unique_ptr<GameInfoDialog> myGameInfoDialog;
62 #ifdef CHEATCODE_SUPPORT
63 unique_ptr<CheatCodeDialog> myCheatCodeDialog;
64 #endif
65 unique_ptr<RomAuditDialog> myRomAuditDialog;
66 unique_ptr<LoggerDialog> myLoggerDialog;
67 unique_ptr<HelpDialog> myHelpDialog;
68 unique_ptr<AboutDialog> myAboutDialog;
69
70 ButtonWidget* myRomAuditButton;
71 ButtonWidget* myGameInfoButton;
72 ButtonWidget* myCheatCodeButton;
73
74 // Indicates if this dialog is used for global (vs. in-game) settings
75 Menu::AppMode myMode;
76
77 enum {
78 kBasSetCmd = 'BAST',
79 kVidCmd = 'VIDO',
80 kAudCmd = 'AUDO',
81 kInptCmd = 'INPT',
82 kUsrIfaceCmd = 'URIF',
83 kSnapCmd = 'SNAP',
84 kAuditCmd = 'RAUD',
85 kInfoCmd = 'INFO',
86 kCheatCmd = 'CHET',
87 kLoggerCmd = 'LOGG',
88 kDevelopCmd = 'DEVL',
89 kHelpCmd = 'HELP',
90 kAboutCmd = 'ABOU',
91 kExitCmd = 'EXIM'
92 };
93
94 private:
95 // Following constructors and assignment operators not supported
96 OptionsDialog() = delete;
97 OptionsDialog(const OptionsDialog&) = delete;
98 OptionsDialog(OptionsDialog&&) = delete;
99 OptionsDialog& operator=(const OptionsDialog&) = delete;
100 OptionsDialog& operator=(OptionsDialog&&) = delete;
101};
102
103#endif
104