summaryrefslogtreecommitdiff
path: root/client/builder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/builder.cc')
-rw-r--r--client/builder.cc243
1 files changed, 0 insertions, 243 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());
-}