From 2e87c4608a9fb888fd7669756d8cb457ac305f71 Mon Sep 17 00:00:00 2001 From: senator Date: Mon, 24 Mar 2008 13:16:38 +0000 Subject: next button now works; listbox isValid check improved; start macro implemented --- client/builder.cc | 50 +++++++++++++++++++++++++++++++------------- client/builder.h | 2 ++ client/macro.cc | 25 +++++++++++----------- client/macro.h | 3 ++- client/main.cc | 16 +++++++++----- client/widgets/listbox.cc | 42 +++++++++++++++++++++++++++++++------ client/widgets/listbox.h | 1 + client/widgets/pushbutton.cc | 2 +- client/widgets/pushbutton.h | 2 +- 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 #include #include @@ -20,6 +21,9 @@ #include #include +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("\n"); - xml_string.append("\n"); + xml_string.append("\n"); xml_string.append(" \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(" 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 #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 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: -- cgit v1.2.3