diff options
-rw-r--r-- | src/gui/setup.cpp | 56 | ||||
-rw-r--r-- | src/gui/setup.h | 3 |
2 files changed, 52 insertions, 7 deletions
diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index bd600654..1e75e82d 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -1,23 +1,51 @@ /*---------------------------------------------------------------- - * setup.c -- setup routines + * setup.cpp -- setup routines *---------------------------------------------------------------- * This module takes care of everything relating to the * setup dialog. */ #include "setup.h" +/* + * Metod returns the number of elements in container + */ +int ModesListModel::getNumberOfElements() { + return 3; +} + +/* + * Metod returns element from container + */ +std::string ModesListModel::getElementAt(int i) { + //TODO: change hardcoded modes after moving to SDL + struct Modes { + int height, width; + char *desc; + }; + static Modes modes[] = { + { 640,480, "640x480"}, + { 800,600, "800x600" }, + { 1024,768, "1024x768" } + }; + + return(modes[i].desc); +} /* - * Display setup dialog + * Setup dialog constructor */ Setup::Setup(gcn::Container *parent) : Window(parent, "Setup") { + modesListModel = new ModesListModel(); displayLabel = new gcn::Label("Display"); + modesList = new gcn::ListBox(modesListModel); + scrollArea = new gcn::ScrollArea(modesList); applyButton = new Button("Apply"); cancelButton = new Button("Cancel"); /* Set dimension */ + scrollArea->setDimension(gcn::Rectangle(0,0,120,50)); displayLabel->setDimension(gcn::Rectangle(0,0,80, 16)); applyButton->setDimension(gcn::Rectangle(0,0,80, 16)); cancelButton->setDimension(gcn::Rectangle(0,0,80, 16)); @@ -27,6 +55,7 @@ Setup::Setup(gcn::Container *parent) cancelButton->setEventId("cancel"); /* Set position */ + scrollArea->setPosition(10,40); displayLabel->setPosition(10,10); applyButton->setPosition(10,190); cancelButton->setPosition(150,190); @@ -36,33 +65,47 @@ Setup::Setup(gcn::Container *parent) cancelButton->addActionListener(this); /* Assemble dialog */ + add(scrollArea); add(displayLabel); add(applyButton); add(cancelButton); setSize(240,216); setLocationRelativeTo(getParent()); - - /* Is hidden */ - //setVisible(false); + + //TODO: load default settings + modesList->setSelected(1); } -Setup::~Setup() { +/* + * Destructor + */ +Setup::~Setup() { + delete modesListModel; + delete modesList; + delete scrollArea; delete displayLabel; delete applyButton; delete cancelButton; } +/* + * Event handling method + */ void Setup::action(const std::string& eventId) { if(eventId == "apply") { setVisible(false); + //TODO: Save&apply setup changes } else if(eventId == "cancel") { setVisible(false); } } +/* + * Static method for creating singleton objects + */ Setup * Setup::ptr = NULL; Setup * Setup::create_setup() { if(ptr == NULL) @@ -72,3 +115,4 @@ Setup * Setup::create_setup() { return ptr; } + diff --git a/src/gui/setup.h b/src/gui/setup.h index 55e66cc5..1cb766d0 100644 --- a/src/gui/setup.h +++ b/src/gui/setup.h @@ -31,7 +31,8 @@ class Setup : public Window, public gcn::ActionListener { /* Dialog parts */ ModesListModel *modesListModel; gcn::Label *displayLabel; - gcn::ListBox *modeslist; + gcn::ScrollArea *scrollArea; + gcn::ListBox *modesList; Button *applyButton; Button *cancelButton; |