diff options
-rw-r--r-- | src/gui/setup.cpp | 213 | ||||
-rw-r--r-- | src/gui/setup.h | 97 |
2 files changed, 158 insertions, 152 deletions
diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index 52961038..d3a8e0ae 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -27,6 +27,11 @@ */ #include "setup.h" +#include "button.h" +#include "checkbox.h" +#include "scrollarea.h" +#include "listbox.h" +#include "radiobutton.h" #ifndef WIN32 extern Sound sound; @@ -36,158 +41,144 @@ struct Modes { int height, width; char *desc; }; + static Modes modes[] = { { 640,480, "640x480"}, { 800,600, "800x600" }, { 1024,768, "1024x768" } }; -/* - * Metod returns the number of elements in container - */ -int ModesListModel::getNumberOfElements() { - //TODO after moving to SDL - return 3; +int ModeListModel::getNumberOfElements() { + // TODO after moving to SDL + return 3; } -/* - * Metod returns element from container - */ -std::string ModesListModel::getElementAt(int i) { - //TODO: after moving to SDL - return(modes[i].desc); +std::string ModeListModel::getElementAt(int i) { + // TODO: after moving to SDL + return modes[i].desc; } -/* - * Setup dialog constructor - */ Setup::Setup(gcn::Container *parent) - : Window(parent, "Setup") + : Window(parent, "Setup") { - modesListModel = new ModesListModel(); - displayLabel = new gcn::Label("Display settings"); - modesList = new ListBox(modesListModel); - scrollArea = new ScrollArea(modesList); - fsCheckBox = new CheckBox("Full screen", false); - soundLabel = new gcn::Label("Sound settings"); - soundCheckBox = new CheckBox("Sound", false); - disabledRadio = new RadioButton("Disabled", "Modes", false); - applyButton = new Button("Apply"); - cancelButton = new Button("Cancel"); - - /* Set dimension */ - scrollArea->setDimension(gcn::Rectangle(0,0,90,50)); - modesList->setDimension(gcn::Rectangle(0,0,60,50)); - displayLabel->setDimension(gcn::Rectangle(0,0,100,16)); - applyButton->setDimension(gcn::Rectangle(0,0,80, 16)); - cancelButton->setDimension(gcn::Rectangle(0,0,80, 16)); - - /* Set events */ - applyButton->setEventId("apply"); - cancelButton->setEventId("cancel"); - - /* Set position */ - scrollArea->setPosition(10,40); - displayLabel->setPosition(10,10); - soundLabel->setPosition(10,110); - fsCheckBox->setPosition(120,36); - soundCheckBox->setPosition(10,130); - disabledRadio->setPosition(10,140); - applyButton->setPosition(10,190); - cancelButton->setPosition(150,190); - - /* Listen for actions */ - applyButton->addActionListener(this); - cancelButton->addActionListener(this); - - /* Assemble dialog */ - add(scrollArea); - add(displayLabel); - add(fsCheckBox); - add(soundLabel); - add(soundCheckBox); - //add(disabledRadio); - add(applyButton); - add(cancelButton); - - setSize(240,216); - setLocationRelativeTo(getParent()); - - /* load default settings */ - modesList->setSelected(1); - if(config.getValue("screen",0) == 1) - fsCheckBox->setMarked(true); - soundCheckBox->setMarked(config.getValue("sound",0)); + modeListModel = new ModeListModel(); + displayLabel = new gcn::Label("Display settings"); + modeList = new ListBox(modeListModel); + scrollArea = new ScrollArea(modeList); + fsCheckBox = new CheckBox("Full screen", false); + soundLabel = new gcn::Label("Sound settings"); + soundCheckBox = new CheckBox("Sound", false); + disabledRadio = new RadioButton("Disabled", "Modes", false); + applyButton = new Button("Apply"); + cancelButton = new Button("Cancel"); + + + // Set events + applyButton->setEventId("apply"); + cancelButton->setEventId("cancel"); + + // Set dimensions/positions + setSize(240, 216); + scrollArea->setDimension(gcn::Rectangle(10, 40, 90, 50)); + modeList->setDimension(gcn::Rectangle(0, 0, 60, 50)); + displayLabel->setDimension(gcn::Rectangle(10, 10, 100,16)); + cancelButton->setPosition( + 240 - 5 - cancelButton->getWidth(), + 216 - 5 - cancelButton->getHeight()); + applyButton->setPosition( + cancelButton->getX() - 5 - applyButton->getWidth(), + 216 - 5 - applyButton->getHeight()); + soundLabel->setPosition(10, 110); + fsCheckBox->setPosition(120, 36); + soundCheckBox->setPosition(10, 130); + disabledRadio->setPosition(10, 140); + + // Listen for actions + applyButton->addActionListener(this); + cancelButton->addActionListener(this); + + // Assemble dialog + add(scrollArea); + add(displayLabel); + add(fsCheckBox); + add(soundLabel); + add(soundCheckBox); + //add(disabledRadio); + add(applyButton); + add(cancelButton); + + setLocationRelativeTo(getParent()); + + // load default settings + modeList->setSelected(1); + if (config.getValue("screen", 0) == 1) { + fsCheckBox->setMarked(true); + } + soundCheckBox->setMarked(config.getValue("sound", 0)); } -/* - * Destructor - */ Setup::~Setup() { - delete modesListModel; - delete modesList; - delete scrollArea; - delete fsCheckBox; - delete soundCheckBox; - delete soundLabel; - delete displayLabel; - delete applyButton; - delete cancelButton; + delete modeListModel; + delete modeList; + delete scrollArea; + delete fsCheckBox; + delete soundCheckBox; + delete soundLabel; + delete displayLabel; + delete applyButton; + delete cancelButton; } -/* - * Event handling method - */ void Setup::action(const std::string& eventId) { - int sel; if (eventId == "apply") { setVisible(false); - - /* Display settings */ - if (fsCheckBox->isMarked() == true && config.getValue("screen",0) == 2) { - config.setValue("screen",1); - set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,modes[sel].height,modes[sel].width,0,0); - - } else - if (fsCheckBox->isMarked() == false && config.getValue("screen",0) == 1) { - config.setValue("screen",2); - sel = modesList->getSelected(); - set_gfx_mode(GFX_AUTODETECT_WINDOWED,modes[sel].height,modes[sel].width,0,0); + int sel = modeList->getSelected(); + + // Display settings + if (fsCheckBox->isMarked() && config.getValue("screen", 0) == 2) + { + config.setValue("screen", 1); + set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, + modes[sel].height, modes[sel].width, 0, 0); + + } + else if (!fsCheckBox->isMarked() && config.getValue("screen", 0) == 1) + { + config.setValue("screen", 2); + set_gfx_mode(GFX_AUTODETECT_WINDOWED, + modes[sel].height, modes[sel].width, 0, 0); } - - /* Sound settings */ + + // Sound settings #ifndef WIN32 - if (soundCheckBox->isMarked() == true) { + if (soundCheckBox->isMarked()) { config.setValue("sound",1); try { sound.init(32, 20); - }catch(const char *err) { + } + catch (const char *err) { ok("Sound Engine", err); warning(err); } } else { - config.setValue("sound",0); + config.setValue("sound", 0); sound.close(); } #endif /* not WIN32 */ - } else if(eventId == "cancel") { + } else if (eventId == "cancel") { setVisible(false); } } -/* - * Static method for creating singleton objects - */ -Setup * Setup::ptr = NULL; -Setup * Setup::create_setup() { - if(ptr == NULL) { +Setup *Setup::ptr = NULL; +Setup *Setup::create_setup() { + if (ptr == NULL) { ptr = new Setup(guiTop); } else { ptr->setVisible(true); } - + return ptr; } - diff --git a/src/gui/setup.h b/src/gui/setup.h index d95e1e42..7cb6c120 100644 --- a/src/gui/setup.h +++ b/src/gui/setup.h @@ -25,55 +25,70 @@ #define tmw_included_setup_h #include "gui.h" -#include "button.h" -#include "checkbox.h" -#include "scrollarea.h" -#include "listbox.h" -#include "radiobutton.h" #include "../graphic/graphic.h" -#include <allegro.h> -#ifdef WIN32 -#include <winalleg.h> -#endif - #include "../sound/sound.h" +#include <allegro.h> -/* - * The list model for modes list +/** + * The list model for mode list. + * + * \ingroup GUI */ -class ModesListModel : public gcn::ListModel { - public: - int getNumberOfElements(); - std::string getElementAt(int i); +class ModeListModel : public gcn::ListModel { + public: + /** + * Returns the number of elements in container. + */ + int getNumberOfElements(); + + /** + * Returns element from container. + */ + std::string getElementAt(int i); }; -/* - * Setup dialog window +/** + * The setup dialog. + * + * \ingroup GUI */ class Setup : public Window, public gcn::ActionListener { - private: - /* Dialog parts */ - ModesListModel *modesListModel; - gcn::Label *displayLabel; - CheckBox *fsCheckBox; - gcn::Label *soundLabel; - CheckBox *soundCheckBox; - RadioButton *disabledRadio; - ScrollArea *scrollArea; - ListBox *modesList; - Button *applyButton; - Button *cancelButton; - - /* Setup dialog */ - static Setup *ptr; - - /* Methods */ - Setup(gcn::Container *parent); - virtual ~Setup(); - - public: - void action(const std::string& eventId); - static Setup * create_setup(); + private: + // Dialog parts + ModeListModel *modeListModel; + gcn::Label *displayLabel; + gcn::CheckBox *fsCheckBox; + gcn::Label *soundLabel; + gcn::CheckBox *soundCheckBox; + gcn::RadioButton *disabledRadio; + gcn::ScrollArea *scrollArea; + gcn::ListBox *modeList; + gcn::Button *applyButton; + gcn::Button *cancelButton; + + // Setup dialog + static Setup *ptr; + + /** + * Constructor. + */ + Setup(gcn::Container *parent); + + /** + * Destructor. + */ + virtual ~Setup(); + + public: + /** + * Event handling method. + */ + void action(const std::string& eventId); + + /** + * Static method for creating singleton object. + */ + static Setup *create_setup(); }; #endif |