summaryrefslogtreecommitdiff
path: root/client/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'client/widgets')
-rw-r--r--client/widgets/combobox.cc35
-rw-r--r--client/widgets/combobox.h11
-rw-r--r--client/widgets/listbox.cc68
-rw-r--r--client/widgets/listbox.h48
-rw-r--r--client/widgets/radiobutton.cc28
-rw-r--r--client/widgets/radiobutton.h11
-rw-r--r--client/widgets/radiobuttons.cc88
-rw-r--r--client/widgets/radiobuttons.h51
8 files changed, 322 insertions, 18 deletions
diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc
index 5499d09..22efc96 100644
--- a/client/widgets/combobox.cc
+++ b/client/widgets/combobox.cc
@@ -2,7 +2,7 @@
/***************************************************************************
* combobox.cc
*
- * Wed Jul 18 09:39:40 CEST 2007
+ * Wed Jul 18 10:35:52 CEST 2007
* Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
* deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
****************************************************************************/
@@ -25,14 +25,45 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#include "combobox.h"
+#include <QDomNodeList>
ComboBox::ComboBox(QDomNode node)
: QComboBox(), Widget(node)
{
QDomElement elem = node.toElement();
+
+ if(elem.hasAttribute("width")) {
+ resize(elem.attribute("width").toInt(), height());
+ }
+
+ if(elem.hasAttribute("height")) {
+ resize(width(), elem.attribute("height").toInt());
+ }
+
+ QDomNodeList children = node.childNodes();
+ int default_found = 0;
+
+ for (int i=0; i<children.count();i++) {
+ QDomNode child = children.at(i);
+ QDomElement combo_elem = child.toElement();
+
+ if(combo_elem.hasAttribute("caption") && combo_elem.hasAttribute("value")) {
+ // insert item into current combobox
+ addItem(combo_elem.attribute("caption"), combo_elem.attribute("value"));
+ if(elem.attribute("value") == combo_elem.attribute("value")) {
+ setCurrentIndex(count() - 1);
+ default_found = 1;
+ }
+ } else {
+ printf("XML Error!!! Combobox item is missing one or more attributes...\n");
+ }
+ }
+ if(default_found == 0) setCurrentIndex(-1); // -1 is default for none selected
}
QString ComboBox::getValue()
{
- return "combobox";
+ QString value = "none";
+ if(currentIndex() != -1) value = itemData(currentIndex()).toString();
+ return value;
}
diff --git a/client/widgets/combobox.h b/client/widgets/combobox.h
index eb7d72e..f6baa67 100644
--- a/client/widgets/combobox.h
+++ b/client/widgets/combobox.h
@@ -2,7 +2,7 @@
/***************************************************************************
* combobox.h
*
- * Wed Jul 18 09:39:40 CEST 2007
+ * Wed Jul 18 10:35:52 CEST 2007
* Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
* deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
****************************************************************************/
@@ -28,18 +28,21 @@
#define __PRACRO_COMBOBOX_H__
#include "widget.h"
-#include <QComboBox>
#include <QDomNode>
+#include <QComboBox>
class ComboBox : public QComboBox, public Widget
{
public:
- ComboBox(QDomNode node);
+ ComboBox(QDomNode);
public slots:
QString getValue();
-
+
+private:
+ QString combo_value;
+
};
#endif/*__PRACRO_COMBOBOX_H__*/
diff --git a/client/widgets/listbox.cc b/client/widgets/listbox.cc
new file mode 100644
index 0000000..57de905
--- /dev/null
+++ b/client/widgets/listbox.cc
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * listbox.cc
+ *
+ * Wed Jul 18 10:35:52 CEST 2007
+ * Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
+ * deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "listbox.h"
+
+ListBox::ListBox(QDomNode node)
+ : QListWidget(), Widget(node)
+{
+ QDomElement elem = node.toElement();
+
+ if(elem.hasAttribute("width")) {
+ resize(elem.attribute("width").toInt(), height());
+ }
+
+ if(elem.hasAttribute("height")) {
+ resize(width(), elem.attribute("height").toInt());
+ }
+
+ QDomNodeList children = node.childNodes();
+ int default_found = 0;
+
+ for (int i=0; i < children.count(); i++) {
+ QDomNode child = children.at(i);
+ QDomElement list_elem = child.toElement();
+
+ if(list_elem.hasAttribute("caption") && list_elem.hasAttribute("value")) {
+ // insert item into current listbox
+ addItem(list_elem.attribute("caption"));
+ if(elem.attribute("value") == list_elem.attribute("value")) {
+ setCurrentRow(count() - 1);
+ default_found = 1;
+ }
+ } else {
+ printf("XML Error!!! Listbox item is missing one or more attributes...\n");
+ }
+ }
+ if(default_found == 0) setCurrentRow(-1); // -1 is default for none selected
+}
+
+QString ListBox::getValue()
+{
+ QString value = "none";
+ if(currentRow() != -1) value = currentItem()->text();
+ return value;
+}
diff --git a/client/widgets/listbox.h b/client/widgets/listbox.h
new file mode 100644
index 0000000..bf70420
--- /dev/null
+++ b/client/widgets/listbox.h
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * listbox.h
+ *
+ * Wed Jul 18 10:35:52 CEST 2007
+ * Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
+ * deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef __PRACRO_LISTBOX_H__
+#define __PRACRO_LISTBOX_H__
+
+#include "widget.h"
+#include <QDomNode>
+#include <QListWidget>
+
+class ListBox : public QListWidget, public Widget
+{
+
+public:
+ ListBox(QDomNode);
+
+public slots:
+ QString getValue();
+
+private:
+ QString list_value;
+
+};
+
+#endif/*__PRACRO_LISTBOX_H__*/
diff --git a/client/widgets/radiobutton.cc b/client/widgets/radiobutton.cc
index 0645745..00c12b9 100644
--- a/client/widgets/radiobutton.cc
+++ b/client/widgets/radiobutton.cc
@@ -25,30 +25,40 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#include "radiobutton.h"
+#include <QRadioButton>
-RadioButton::RadioButton(QDomNode node)
- : QRadioButton(), Widget(node)
+RadioButton::RadioButton(QDomNode node, bool radio_bool)
+ : QRadioButton()
{
QDomElement elem = node.toElement();
+ if(elem.hasAttribute("width")) {
+ resize(elem.attribute("width").toInt(), height());
+ }
+
+ if(elem.hasAttribute("height")) {
+ resize(width(), elem.attribute("height").toInt());
+ }
+
if(elem.hasAttribute("caption")) {
setText(elem.attribute("caption"));
} else {
setText("");
}
- if(elem.hasAttribute("value")) {
- if(elem.attribute("value") == "true") {
+ if(radio_bool) {
setChecked(true);
- } else if(elem.attribute("value") == "false") {
- setChecked(false);
- }
+ } else setChecked(false);
+
+ if(elem.hasAttribute("value")) {
+ radio_value = elem.attribute("value");
} else {
- setChecked(false);
+ printf("XML ERROR!!! Radiobutton item has no value\n");
+ radio_value = "none";
}
}
QString RadioButton::getValue()
{
- return "radiobutton";
+ return radio_value;
}
diff --git a/client/widgets/radiobutton.h b/client/widgets/radiobutton.h
index a2f06c5..74525a4 100644
--- a/client/widgets/radiobutton.h
+++ b/client/widgets/radiobutton.h
@@ -28,18 +28,23 @@
#define __PRACRO_RADIOBUTTON_H__
#include "widget.h"
-#include <QRadioButton>
+#include <QFrame>
#include <QDomNode>
+#include <QVector>
+#include <QRadioButton>
-class RadioButton : public QRadioButton, public Widget
+class RadioButton : public QRadioButton
{
public:
- RadioButton(QDomNode);
+ RadioButton(QDomNode, bool);
public slots:
QString getValue();
+private:
+ QString radio_value;
+
};
#endif/*__PRACRO_RADIOBUTTON_H__*/
diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc
new file mode 100644
index 0000000..47a32f4
--- /dev/null
+++ b/client/widgets/radiobuttons.cc
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * radiobuttons.cc
+ *
+ * Wed Jul 18 10:35:52 CEST 2007
+ * Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
+ * deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "radiobuttons.h"
+#include "radiobutton.h"
+#include <QRadioButton>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+
+RadioButtons::RadioButtons(QDomNode node)
+ : QFrame(), Widget(node)
+{
+ QDomElement elem = node.toElement();
+
+ if(elem.hasAttribute("layout")) {
+ if(elem.attribute("layout") == "hbox") {
+ QHBoxLayout *layout = new QHBoxLayout();
+ setLayout(layout);
+ } else if (elem.attribute("layout") == "vbox") {
+ QVBoxLayout *layout = new QVBoxLayout();
+ setLayout(layout);
+ }
+ }
+
+ if(elem.hasAttribute("width")) {
+ resize(elem.attribute("width").toInt(), height());
+ }
+
+ if(elem.hasAttribute("height")) {
+ resize(width(), elem.attribute("height").toInt());
+ }
+
+ QDomNodeList children = node.childNodes();
+
+ for (int i=0; i<children.count();i++) {
+ QDomNode child = children.at(i);
+ QDomElement radio_elem = child.toElement();
+ bool radio_bool = false;
+ if(elem.hasAttribute("value")) {
+ if(elem.attribute("value") == radio_elem.attribute("value")) {
+ radio_bool = true;
+ }
+ }
+ RadioButton *radiobutton = new RadioButton(child, radio_bool);
+
+ // Create radiobutton from child, insert in this
+ layout()->addWidget(radiobutton);
+ radiobutton_list.push_back(radiobutton);
+ }
+
+}
+
+QString RadioButtons::getValue()
+{
+ QVector< RadioButton* >::iterator i;
+ QString value = "none";
+ for (i = radiobutton_list.begin(); i != radiobutton_list.end(); ++i) {
+ RadioButton *widget = *i;
+ if(widget->isChecked()) {
+ printf("Radiobutton returned: %s\n", widget->getValue().toStdString().c_str());
+ value = widget->getValue();
+ }
+ }
+ return value;
+}
diff --git a/client/widgets/radiobuttons.h b/client/widgets/radiobuttons.h
new file mode 100644
index 0000000..34e90ce
--- /dev/null
+++ b/client/widgets/radiobuttons.h
@@ -0,0 +1,51 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * radiobuttons.h
+ *
+ * Wed Jul 18 10:35:52 CEST 2007
+ * Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup
+ * deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef __PRACRO_RADIOBUTTONS_H__
+#define __PRACRO_RADIOBUTTONS_H__
+
+#include "widget.h"
+#include "widgets/radiobutton.h"
+#include <QFrame>
+#include <QDomNode>
+#include <QVector>
+#include <QRadioButton>
+
+class RadioButtons : public QFrame, public Widget
+{
+
+public:
+ RadioButtons(QDomNode);
+
+public slots:
+ QString getValue();
+
+private:
+ QVector < RadioButton* > radiobutton_list;
+
+};
+
+#endif/*__PRACRO_RADIOBUTTONS_H__*/