summaryrefslogtreecommitdiff
path: root/src/gui/setup.cpp
diff options
context:
space:
mode:
authorMateusz Kaduk <mateusz.kaduk@gmail.com>2004-12-22 14:22:45 +0000
committerMateusz Kaduk <mateusz.kaduk@gmail.com>2004-12-22 14:22:45 +0000
commite47508bf6a5bab7e88ac24a4746c2d4c94faf9c7 (patch)
tree12f3b42ba66f54bc4ceaa67a7be0f271bc396b45 /src/gui/setup.cpp
parent4280a5f8f16701e6fd4b3431024a77214724d207 (diff)
downloadmana-e47508bf6a5bab7e88ac24a4746c2d4c94faf9c7.tar.gz
mana-e47508bf6a5bab7e88ac24a4746c2d4c94faf9c7.tar.bz2
mana-e47508bf6a5bab7e88ac24a4746c2d4c94faf9c7.tar.xz
mana-e47508bf6a5bab7e88ac24a4746c2d4c94faf9c7.zip
Added modes list to setup
Diffstat (limited to 'src/gui/setup.cpp')
-rw-r--r--src/gui/setup.cpp56
1 files changed, 50 insertions, 6 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;
}
+