summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/setup.cpp56
-rw-r--r--src/gui/setup.h3
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;