/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * netcom.cc * * Mon Aug 18 09:33:26 CEST 2008 * Copyright 2008 Bent Bisballe Nyeng * 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 "netcom.h" #include NetCom *Global::netcom = NULL; NetCom::NetCom(QString host, quint16 port, QString user, QString cpr) { this->user = user; this->cpr = cpr; socket.connectToHost(host, port); connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead())); } NetCom::~NetCom() { socket.disconnectFromHost(); } QDomDocument NetCom::send(QString course, QString macro) { QDomDocument doc; QDomElement pracro_elem = doc.createElement("pracro"); pracro_elem.setAttribute("version", "1.0"); pracro_elem.setAttribute("cpr", cpr); pracro_elem.setAttribute("user", user); doc.appendChild(pracro_elem); QDomElement request_elem = doc.createElement("request"); request_elem.setAttribute("course", course); request_elem.setAttribute("macro", macro); pracro_elem.appendChild(request_elem); printf(doc.toString().toStdString().c_str()); socket.write(doc.toByteArray()); socket.waitForBytesWritten(10000); do { qApp->processEvents(); } while(!res_doc.setContent(buffer)); buffer = ""; QDomElement elem = res_doc.documentElement(); printf(res_doc.toString().toStdString().c_str()); return res_doc; } void NetCom::readyRead() { buffer.append(socket.readAll()); } void NetCom::send(QVector< Widget* > widgets, QString macro, QString version) { QDomDocument doc; QDomElement pracro_elem = doc.createElement("pracro"); pracro_elem.setAttribute("version", "1.0"); pracro_elem.setAttribute("cpr", cpr); pracro_elem.setAttribute("user", user); doc.appendChild(pracro_elem); QDomElement commit_elem = doc.createElement("commit"); commit_elem.setAttribute("macro", macro); commit_elem.setAttribute("version", version); pracro_elem.appendChild(commit_elem); // 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; QDomElement field_elem = doc.createElement("field"); field_elem.setAttribute("name", w->getName()); field_elem.setAttribute("value", w->getValue()); commit_elem.appendChild(field_elem); i++; } printf(doc.toString().toStdString().c_str()); socket.write(doc.toByteArray()); // qApp->processEvents(); socket.waitForBytesWritten(10000); }