summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorsenator <senator>2008-03-24 13:16:38 +0000
committersenator <senator>2008-03-24 13:16:38 +0000
commit2e87c4608a9fb888fd7669756d8cb457ac305f71 (patch)
tree3e8ecbf49f42bac36128a3ae24a7c76722677272 /client
parent885e139e750fa13a581dff70b3d8d91a9170a772 (diff)
next button now works; listbox isValid check improved; start macro implemented
Diffstat (limited to 'client')
-rw-r--r--client/builder.cc50
-rw-r--r--client/builder.h2
-rw-r--r--client/macro.cc25
-rw-r--r--client/macro.h3
-rw-r--r--client/main.cc16
-rw-r--r--client/widgets/listbox.cc42
-rw-r--r--client/widgets/listbox.h1
-rw-r--r--client/widgets/pushbutton.cc2
-rw-r--r--client/widgets/pushbutton.h2
9 files changed, 102 insertions, 41 deletions
diff --git a/client/builder.cc b/client/builder.cc
index b30f225..29f58d0 100644
--- a/client/builder.cc
+++ b/client/builder.cc
@@ -13,6 +13,7 @@
#include "widgets/radiobutton.h"
#include "widgets/checkbox.h"
#include "widgets/window.h"
+#include "macro.h"
#include <QVBoxLayout>
#include <QMessageBox>
#include <QDomDocument>
@@ -20,6 +21,9 @@
#include <QDomNode>
#include <QByteArray>
+extern QString cpr;
+extern QString user;
+
Builder::Builder(QDomDocument *xml_doc)
: QObject()
{
@@ -48,6 +52,7 @@ void Builder::recurser(QDomNode xml_node, QWidget *parent)
} else if(xml_elem.tagName() == "window") {
Window *window = new Window(xml_elem);
widget = window;
+ mainwidget = window;
} else if(xml_elem.tagName() == "frame") {
if(xml_elem.hasAttribute("caption")) {
@@ -73,7 +78,7 @@ void Builder::recurser(QDomNode xml_node, QWidget *parent)
connect(pushbutton, SIGNAL(act_commit()), this, SLOT(commit()));
connect(pushbutton, SIGNAL(act_reset()), this, SLOT(reset()));
connect(pushbutton, SIGNAL(act_cancel()), this, SLOT(cancel()));
- //connect(pushbutton, SIGNAL(act_continue()), this, SLOT(cont("fisk")));
+ connect(pushbutton, SIGNAL(act_continue(QString)), this, SLOT(cont(QString)));
widget = pushbutton;
} else if(xml_elem.tagName() == "textedit") {
@@ -116,7 +121,7 @@ void Builder::recurser(QDomNode xml_node, QWidget *parent)
if(widget != NULL) widget->show();
}
-void Builder::commit()
+bool Builder::doCommit()
{
// Check for, and count, errors on all entries before comitting
int faulty = 0; // 0 initial errors
@@ -127,7 +132,7 @@ void Builder::commit()
if(!w->isValid()) faulty++; // Regexp check, returns valid if entry passed
// All selectable entries return "none" if nothing is selected
- if(w->getValue() == "none") faulty++; // Faulty+1 if error detected
+ //if(w->getValue() == "none") faulty++; // Faulty+1 if error detected
i++;
}
@@ -138,7 +143,7 @@ void Builder::commit()
// Build the XML commit
QString xml_string;
xml_string.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- xml_string.append("<pracro version=\"1.0\" cpr=\"1505050505\" user=\"tux\">\n");
+ xml_string.append("<pracro version=\"1.0\" cpr=\"" + cpr + "\" user=\"" + user + "\">\n");
xml_string.append(" <commit macro=\"" + macro + "\" version=\"" +
version + "\">\n");
@@ -174,9 +179,18 @@ void Builder::commit()
//QByteArray ba = macro_commit.getResult();
QString ba = macro_commit.getResult();
printf("Server returned result: %s", ba.toStdString().c_str());
- exit(1); // Probably bad exit. Implemented for test version.
+ return true;
+ } else {
+ return false;
+ }
+}
+
+void Builder::commit()
+{
+ if(doCommit()) {
+ mainwidget->close();
} else {
- QMessageBox::critical(NULL, "Fejl",
+ QMessageBox::critical(NULL, "Fejl",
"Makroen er ikke udfyldt korrekt, prøv igen.\n"
, QMessageBox::Ok);
}
@@ -184,7 +198,7 @@ void Builder::commit()
void Builder::reset()
{
-int ret = QMessageBox::warning(NULL, "Reset",
+ int ret = QMessageBox::warning(NULL, tr("Reset"),
tr("Du har valgt at nulstille de indtastede data.\n"
"Er du sikker?"),
QMessageBox::Yes | QMessageBox::Cancel);
@@ -194,21 +208,27 @@ int ret = QMessageBox::warning(NULL, "Reset",
void Builder::cancel()
{
printf("Builder -> cancelling...\n");
- exit(1); // Probably bad exit. Implemented for test version.
+ mainwidget->close();
}
void Builder::cont(QString name)
{
- /*
+ QString macro;
QVector< Widget* >::iterator i=widgets.begin();
while (i != widgets.end()) {
Widget* w = *i;
-
- if(w->getName()
- xml_string.append(" <field name=\"" + w->getName()
- + "\" value=\"" + w->getValue() + "\"/>\n");
+ if(w->getName() == name) {
+ macro = w->getValue();
+ }
i++;
}
- */
- printf("%s : Builder -> continuing...\n", name.toStdString().c_str());
+ if(doCommit()) {
+ new_macro(macro);
+ mainwidget->close();
+ } else {
+ QMessageBox::critical(NULL, "Fejl",
+ "Makroen er ikke udfyldt korrekt, prøv igen.\n"
+ , QMessageBox::Ok);
+ }
+ printf("%s : Builder -> continuing...\n", macro.toStdString().c_str());
}
diff --git a/client/builder.h b/client/builder.h
index 534480f..735b58d 100644
--- a/client/builder.h
+++ b/client/builder.h
@@ -50,11 +50,13 @@ public slots:
void cont(QString name);
private:
+ bool doCommit();
void recurser(QDomNode xml_node, QWidget *parent);
QDomDocument *xml_doc;
QVector< Widget* > widgets;
QString macro;
QString version;
+ QWidget *mainwidget;
};
diff --git a/client/macro.cc b/client/macro.cc
index 669674b..5e3b83d 100644
--- a/client/macro.cc
+++ b/client/macro.cc
@@ -32,25 +32,24 @@
#define MY_EVENT_ID 65432
+extern QString cpr;
+extern QString user;
+
class MyEvent : public QEvent {
public:
- MyEvent(QString macro, QString cpr, QString user) : QEvent((QEvent::Type)MY_EVENT_ID)
+ MyEvent(QString macro) : QEvent((QEvent::Type)MY_EVENT_ID)
{
this->macro = macro;
- this->cpr = cpr;
- this->user = user;
}
QString macro;
- QString cpr;
- QString user;
};
-static QDomDocument xml_request(QString name, QString cpr, QString user);
+static QDomDocument xml_request(QString name);
-void create_macro(QString name, QString cpr, QString user)
+void create_macro(QString name)
{
// Build the XML request
- QDomDocument xml_req = xml_request(name, cpr, user);
+ QDomDocument xml_req = xml_request(name);
// Fetch the XML document
SendRecieve xml_acquire;
@@ -76,7 +75,7 @@ bool MyEventHandler::eventFilter( QObject *o, QEvent *e )
if ( e->type() == MY_EVENT_ID ) {
MyEvent *event = (MyEvent*)e;
- create_macro(event->macro, event->cpr, event->user);
+ create_macro(event->macro);
// ... DO SOMETHING WITH EVENT
return TRUE; // eat event
} else {
@@ -85,13 +84,15 @@ bool MyEventHandler::eventFilter( QObject *o, QEvent *e )
}
}
-void new_macro(QString macro, QString cpr, QString user)
+void new_macro(QString macro)
{
- MyEvent *event = new MyEvent(macro, cpr, user);
+ MyEvent *event = new MyEvent(macro);
qApp->postEvent(qApp, event);
+ qApp->processEvents(); /* To prevent QT from closing when
+ no windows are present */
}
-static QDomDocument xml_request(QString name, QString cpr, QString user)
+static QDomDocument xml_request(QString name)
{
// Create the xml request array
QByteArray xml_array;
diff --git a/client/macro.h b/client/macro.h
index a3fadf5..8ddd963 100644
--- a/client/macro.h
+++ b/client/macro.h
@@ -36,6 +36,7 @@ protected:
bool eventFilter( QObject *o, QEvent *e );
};
-void new_macro(QString name, QString cpr, QString user);
+//void new_macro(QString name, QString cpr, QString user);
+void new_macro(QString name);
#endif/*__PRACRO_MACRO_H__*/
diff --git a/client/main.cc b/client/main.cc
index 0bd94d7..af3dbf5 100644
--- a/client/main.cc
+++ b/client/main.cc
@@ -30,6 +30,9 @@
#include <QEvent>
#include "macro.h"
+QString cpr;
+QString user;
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
@@ -38,8 +41,8 @@ int main(int argc, char *argv[])
app.installEventFilter( eventhandler );
char macro[100] = "example";
- char cpr[11] = "0000000000";
- char user[20] = "testuser";
+ char _cpr[11] = "0000000000";
+ char _user[20] = "testuser";
char config[30] = "pracro.ini";
int a;
@@ -73,7 +76,7 @@ int main(int argc, char *argv[])
printf("Missing argument for cpr, exiting...\n");
exit(1);
}
- strcpy(cpr, argv[a+1]);
+ strcpy(_cpr, argv[a+1]);
a++;
continue;
}
@@ -82,7 +85,7 @@ int main(int argc, char *argv[])
printf("Missing argument for user, exiting...\n");
exit(1);
}
- strcpy(user, argv[a+1]);
+ strcpy(_user, argv[a+1]);
a++;
continue;
}
@@ -97,7 +100,10 @@ int main(int argc, char *argv[])
}
}
- new_macro(macro, cpr, user);
+ cpr = _cpr;
+ user = _user;
+ new_macro("start");
+ //app.setQuitOnLastWindowClosed(false);
return app.exec();
}
diff --git a/client/widgets/listbox.cc b/client/widgets/listbox.cc
index 9435ac1..823a4bb 100644
--- a/client/widgets/listbox.cc
+++ b/client/widgets/listbox.cc
@@ -25,6 +25,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#include "listbox.h"
+#include <QListWidgetItem>
ListBox::ListBox(QDomNode node)
: QListWidget(), Widget(node)
@@ -47,21 +48,50 @@ ListBox::ListBox(QDomNode node)
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")) {
+
+ if(list_elem.hasAttribute("type")) {
+ if(list_elem.attribute("type") == "header") {
+ // create header element
+ QListWidgetItem *header = new
+ QListWidgetItem(list_elem.attribute("caption"));
+ //header->setBackground(Qt::HorPattern);
+ header->setFlags(0);
+ QFont headerfont;
+ headerfont.setBold(true);
+ headerfont.setItalic(true);
+ header->setFont(headerfont);
+ QBrush headerbrush(Qt::SolidPattern);
+ headerbrush.setColor(Qt::lightGray);
+ header->setBackground(headerbrush);
+ addItem(header);
+ } else if (list_elem.attribute("type") == "separator") {
+ // insert separator
+ QListWidgetItem *separator = new QListWidgetItem(" ");
+ //separator->setBackground(Qt::HorPattern);
+ separator->setFlags(0);
+ addItem(separator);
+ }
+ } else 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;
+ if(default_found == 0 && 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");
+ printf("XML Error!!! Listbox item is missing one or more "
+ "attributes...\n");
}
}
if(default_found == 0) setCurrentRow(-1); // -1 is default for none selected
}
+bool ListBox::isValid()
+{
+ return selectedItems().size() != 0;
+}
+
QString ListBox::getValue()
{
QString value = "none";
diff --git a/client/widgets/listbox.h b/client/widgets/listbox.h
index bf70420..30c4129 100644
--- a/client/widgets/listbox.h
+++ b/client/widgets/listbox.h
@@ -38,6 +38,7 @@ public:
ListBox(QDomNode);
public slots:
+ bool isValid();
QString getValue();
private:
diff --git a/client/widgets/pushbutton.cc b/client/widgets/pushbutton.cc
index 8d74e4e..26ae83c 100644
--- a/client/widgets/pushbutton.cc
+++ b/client/widgets/pushbutton.cc
@@ -92,6 +92,6 @@ void PushButton::cancel()
void PushButton::cont()
{
- emit act_continue();
+ emit act_continue(field);
printf("Emit: continue\n");
}
diff --git a/client/widgets/pushbutton.h b/client/widgets/pushbutton.h
index 663be79..4db5952 100644
--- a/client/widgets/pushbutton.h
+++ b/client/widgets/pushbutton.h
@@ -52,7 +52,7 @@ signals:
void act_commit();
void act_reset();
void act_cancel();
- void act_continue();
+ void act_continue(QString);
private: