diff options
-rw-r--r-- | client/builder.cc | 243 | ||||
-rw-r--r-- | client/builder.h | 61 |
2 files changed, 0 insertions, 304 deletions
diff --git a/client/builder.cc b/client/builder.cc deleted file mode 100644 index bdbb85b..0000000 --- a/client/builder.cc +++ /dev/null @@ -1,243 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * builder.cc - * - * Fri Aug 31 12:27:45 CEST 2007 - * Copyright 2007 Lars Bisballe Jensen and Bent Bisballe Nyeng - * elsenator@gmail.com and deva@aasimon.org - ****************************************************************************/ - -/* - * 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 "builder.h" -#include "sendrecieve.h" -#include "widgets.h" -#include "macro.h" -#include <QVBoxLayout> -#include <QMessageBox> -#include <QDomDocument> -#include <QDomElement> -#include <QDomNode> -#include <QByteArray> - -extern QString cpr; -extern QString user; -extern QString host; -extern quint16 port; - -Builder::Builder(QDomDocument *xml_doc) - : QObject() -{ - // Execute the recursive function with documentElement - recurser(xml_doc->documentElement(), NULL); -} - -Builder::~Builder() -{ -} - -void Builder::recurser(QDomNode xml_node, QWidget *parent) -{ - QWidget *widget = NULL; - QDomElement xml_elem = xml_node.toElement(); - - if(xml_elem.tagName() == "macro") { - // Assign the macro name and version to QStrings for use when comitting - if(xml_elem.hasAttribute("name")) macro = xml_elem.attribute("name"); - if(xml_elem.hasAttribute("version")) version = xml_elem.attribute("version"); - - } 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")) { - GroupBox *frame = new GroupBox(xml_elem); - widget = frame; - } else { - Frame *frame = new Frame(xml_elem); - widget = frame; - } - - } else if(xml_elem.tagName() == "label") { - Label *label = new Label(xml_elem); - widget = label; - - } else if(xml_elem.tagName() == "lineedit") { - LineEdit *lineedit = new LineEdit(xml_elem); - widgets.push_back(lineedit); - widget = lineedit; - - } else if(xml_elem.tagName() == "button") { - PushButton *pushbutton = new PushButton(xml_elem); - //connect(pushbutton, SIGNAL(act_continue()), main, SLOT(get_macro())); - 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(QString)), this, SLOT(cont(QString))); - widget = pushbutton; - - } else if(xml_elem.tagName() == "textedit") { - TextEdit *textedit = new TextEdit(xml_elem); - widgets.push_back(textedit); - widget = textedit; - - } else if(xml_elem.tagName() == "checkbox") { - CheckBox *checkbox = new CheckBox(xml_elem); - widgets.push_back(checkbox); - widget = checkbox; - - } else if(xml_elem.tagName() == "radiobuttons") { - RadioButtons *radiobuttons = new RadioButtons(xml_elem); - widgets.push_back(radiobuttons); - widget = radiobuttons; - //return; // Don't iterate children - - } else if(xml_elem.tagName() == "combobox") { - ComboBox *combobox = new ComboBox(xml_elem); - widgets.push_back(combobox); - widget = combobox; - //return; // Don't iterate children - - } else if(xml_elem.tagName() == "listbox") { - ListBox *listbox = new ListBox(xml_elem); - widgets.push_back(listbox); - widget = listbox; - //return; // Don't iterate children - } - - QDomNodeList children = xml_node.childNodes(); - - for (int i=0; i<children.count();i++) { - QDomNode child = children.at(i); - recurser(child, widget); - } - - if(parent != NULL && widget != NULL) parent->layout()->addWidget(widget); - if(widget != NULL) widget->show(); -} - -bool Builder::doCommit() -{ - // Check for, and count, errors on all entries before comitting - int faulty = 0; // 0 initial errors - - QVector< Widget* >::iterator i=widgets.begin(); - while (i != widgets.end()) { - Widget* w = *i; - if(!w->isValid()) faulty++; // Regexp check, returns valid if entry passed - i++; - } - - // If all entries passed validation, continue commit - if(faulty == 0) { - printf("Builder -> committing...\n"); - - // 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=\"" + cpr + "\" user=\"" + user + "\">\n"); - xml_string.append(" <commit macro=\"" + macro + "\" version=\"" + - version + "\">\n"); - - // Iterate the different entries, and append their results to the commit string - QVector< Widget* >::iterator i=widgets.begin(); - while (i != widgets.end()) { - Widget* w = *i; - - xml_string.append(" <field name=\"" + w->getName() - + "\" value=\"" + w->getValue() + "\"/>\n"); - i++; - } - - xml_string.append(" </commit>\n"); - xml_string.append("</pracro>\n"); - - // Print commit to stdout for debug purposes - printf("%s\n", xml_string.toStdString().c_str()); - - // Convert the commit to Utf-8 charset - QByteArray xml_array = xml_string.toUtf8(); - QDomDocument xml_result; - - // Use setContent of QDomDocument to validate the xml commit - if (!xml_result.setContent(xml_array)) { - printf("Parse error: Invalid XML\n"); - } - - // Commit the xml data to the server - SendRecieve macro_commit(host, port); - macro_commit.makeConnection(&xml_result); - // Recieve answer from server whether successful or not - //QByteArray ba = macro_commit.getResult(); - QString ba = macro_commit.getResult(); - printf("Server returned result: %s", ba.toStdString().c_str()); - return true; - } else { - return false; - } -} - -void Builder::commit() -{ - if(doCommit()) { - mainwidget->close(); - } else { - QMessageBox::critical(NULL, "Fejl", - "Makroen er ikke udfyldt korrekt, prøv igen.\n" - , QMessageBox::Ok); - } -} - -void Builder::reset() -{ - QMessageBox::warning(NULL, tr("Reset"), - tr("Du har valgt at nulstille de indtastede data.\n" - "Er du sikker?"), - QMessageBox::Yes | QMessageBox::Cancel); - printf("Builder -> resetting...\n"); -} - -void Builder::cancel() -{ - printf("Builder -> cancelling...\n"); - 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() == name) { - macro = w->getValue(); - } - i++; - } - if(doCommit()) { - new_macro("FIXME", 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 deleted file mode 100644 index b7f6fb1..0000000 --- a/client/builder.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * builder.h - * - * Fri Aug 31 12:27:45 CEST 2007 - * Copyright 2007 Lars Bisballe Jensen and Bent Bisballe Nyeng - * elsenator@gmail.com and deva@aasimon.org - ****************************************************************************/ - -/* - * 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_BUILDER_H__ -#define __PRACRO_BUILDER_H__ - -#include "widgets/widget.h" -#include <QDomDocument> -#include <QWidget> -#include <QDomNode> -#include <QObject> -#include <QVector> - -class Builder : public QObject -{ - Q_OBJECT - -public: - Builder(QDomDocument *xml_doc); - ~Builder(); - -public slots: - void commit(); - void reset(); - void cancel(); - void cont(QString name); - -private: - bool doCommit(); - void recurser(QDomNode xml_node, QWidget *parent); - QVector< Widget* > widgets; - QString macro; - QString version; - QWidget *mainwidget; - -}; - -#endif/*__PRACRO_BUILDER_H__*/ |