diff options
| -rw-r--r-- | client/client.pro | 2 | ||||
| -rw-r--r-- | client/macro.cc | 145 | ||||
| -rw-r--r-- | client/macro.h | 43 | ||||
| -rw-r--r-- | client/macrowindow.cc | 10 | ||||
| -rw-r--r-- | client/macrowindow.h | 4 | ||||
| -rw-r--r-- | client/mainwindow.cc | 15 | ||||
| -rw-r--r-- | client/mainwindow.h | 2 | ||||
| -rw-r--r-- | client/netcom.cc | 21 | ||||
| -rw-r--r-- | client/resumewidget.cc | 32 | 
9 files changed, 55 insertions, 219 deletions
| diff --git a/client/client.pro b/client/client.pro index 28b0709..9cc726b 100644 --- a/client/client.pro +++ b/client/client.pro @@ -26,7 +26,6 @@ HEADERS += \  	collapser.h \          formatparser.h \          lua.h \ -        macro.h \          macrowindow.h \  	mainwindow.h \  	netcom.h \ @@ -55,7 +54,6 @@ SOURCES += \  	collapser.cc \          formatparser.cc \          lua.cc \ -        macro.cc \          macrowindow.cc \  	mainwindow.cc \  	netcom.cc \ diff --git a/client/macro.cc b/client/macro.cc deleted file mode 100644 index 8160c9f..0000000 --- a/client/macro.cc +++ /dev/null @@ -1,145 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            macro.cc - * - *  Fri Aug 31 13:40:17 CEST 2007 - *  Copyright 2007 Bent Bisballe Nyeng and Lars Bisballe Jensen - *  deva@aasimon.org and elsenator@gmail.com - ****************************************************************************/ - -/* - *  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 "macro.h" - -#include <QApplication> -#include <QDomDocument> -#include <QObject> -#include <QEvent> -#include <QLinkedList> - -#include "macrowindow.h" -#include "netcom.h" - -#define MACRO_EVENT_ID 65432 - -QLinkedList< MacroWindow * > macrowindows; - -extern QString cpr; -extern QString user; -extern QString host; -extern quint16 port; - -/** - * Macro Event used to trigger the creation of a new macro - */ -class MacroEvent : public QEvent { -public: -  MacroEvent(QString course, QString macro) : -    QEvent((QEvent::Type)MACRO_EVENT_ID), -    macro(macro), -    course(course) {} -  QString macro; -  QString course; -}; - -/** - * Macro Event Filter used to catch the Macro Events. - */ -class MacroEventFilter : public QObject { -protected: -  bool eventFilter( QObject *o, QEvent *e ); -}; - -/** - * The single global macro event filter. - * It is created the first time new_macro is called. - */ -static MacroEventFilter *macro_event_filter = NULL; - -/** - * Create the new macro - */ -static void create_macro(QString course, QString macro) -{ -  NetCom netcom("", 0, "", ""); -  QDomDocument xml_doc = netcom.send(course, macro); - -  cleanup_macros(); - -  // -  // TODO: This is where the dependency checking should occur. -  // - -  // Initiate the new macro window with the xml document and push -  //  it to the window list -  QDomNodeList courses = xml_doc.documentElement().childNodes(); -  QDomNode coursenode = courses.at(0); // There can be only one! (Swush, flomp) -  QDomNodeList macros = coursenode.childNodes(); -  for(int j = 0; j < macros.count(); j++) { -    QDomNode macronode = macros.at(j); -    // Only create if the macro contains something. -    if(macronode.childNodes().count()) -      macrowindows.push_back( new MacroWindow( netcom, macronode, "dims" ) ); -  } -} - -/** - * Event filter callback method - */ -bool MacroEventFilter::eventFilter(QObject *, QEvent *e) -{ -  if(e->type() == MACRO_EVENT_ID) { -    MacroEvent *event = (MacroEvent*)e; -    create_macro(event->course, event->macro); -    return TRUE; // eat event -  } else { -    return FALSE; -  } -} - -/** - * Delete all closed windows from window list - */ -void cleanup_macros() -{ -  QLinkedList< MacroWindow * >::iterator i = macrowindows.begin(); -  while(i != macrowindows.end()) { -    if( (*i)->isClosed() ) { -      delete *i; -      i = macrowindows.erase(i); -    } else { -      i++; -    } -  } -} - -/** - * Public macro creation function. - * Initiates the creation of a new macro. - */ -void new_macro(QString course, QString macro) -{ -  if(macro_event_filter == NULL) { -    macro_event_filter = new MacroEventFilter(); -    qApp->installEventFilter( macro_event_filter ); -  } - -  MacroEvent *event = new MacroEvent(course, macro); -  qApp->postEvent(qApp, event); -  qApp->processEvents(); // To prevent QT from closing when no windows are present -} diff --git a/client/macro.h b/client/macro.h deleted file mode 100644 index f00f172..0000000 --- a/client/macro.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            macro.h - * - *  Fri Aug 31 13:40:17 CEST 2007 - *  Copyright 2007 Bent Bisballe Nyeng and Lars Bisballe Jensen - *  deva@aasimon.org and elsenator@gmail.com - ****************************************************************************/ - -/* - *  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_MACRO_H__ -#define __PRACRO_MACRO_H__ - -#include <QString> - -/** - * Public macro creation function. - * Initiates the creation of a new macro. - */ -void new_macro(QString course, QString name); - -/** - * Delete all closed windows from window list - */ -void cleanup_macros(); - -#endif/*__PRACRO_MACRO_H__*/ diff --git a/client/macrowindow.cc b/client/macrowindow.cc index 3a6d3c7..18ed218 100644 --- a/client/macrowindow.cc +++ b/client/macrowindow.cc @@ -33,7 +33,6 @@  #include <QDomNode>  #include <QByteArray> -#include "macro.h"  #include "widgets/widget.h"  #include "widgets/window.h"  #include "widgetbuilder.h" @@ -44,10 +43,11 @@ extern QString user;  extern QString host;  extern quint16 port; -MacroWindow::MacroWindow(NetCom &n, QDomNode &xml_doc, QString course, bool collapsed) -  : Collapser(), netcom(n) +MacroWindow::MacroWindow(NetCom *netcom, QDomNode &xml_doc, QString course, bool collapsed) +  : Collapser()  {    this->course = course; +  this->netcom = netcom;    setCollapsedWidget(new ResumeWidget()); @@ -145,7 +145,7 @@ bool MacroWindow::doCommit()    // If all entries passed validation, continue commit    if(faulty == 0) { -    netcom.send(widgets, macro, version); +    netcom->send(widgets, macro, version);      emit updateOnCommit();      setCollapsed(true);      return true; @@ -278,7 +278,7 @@ void MacroWindow::toggleMacro()      auxwidgets.clear();      luaprograms.clear(); -    QDomDocument xml_doc = netcom.send(course, macro); +    QDomDocument xml_doc = netcom->send(course, macro);      //      // TODO: This is where the dependency checking should occur. diff --git a/client/macrowindow.h b/client/macrowindow.h index aad54a9..f42a5a1 100644 --- a/client/macrowindow.h +++ b/client/macrowindow.h @@ -47,7 +47,7 @@ class MacroWindow : public Collapser  {  Q_OBJECT  public: -  MacroWindow(NetCom &netcom, QDomNode &xml_doc, QString course, bool collapsed = true); +  MacroWindow(NetCom *netcom, QDomNode &xml_doc, QString course, bool collapsed = true);    ~MacroWindow();    bool isClosed(); @@ -90,7 +90,7 @@ private:    bool isclosed;    void close(); -  NetCom &netcom; +  NetCom *netcom;  };  #endif/*__PRACRO_MACROWINDOW_H__*/ diff --git a/client/mainwindow.cc b/client/mainwindow.cc index efd4c31..619a24e 100644 --- a/client/mainwindow.cc +++ b/client/mainwindow.cc @@ -82,7 +82,7 @@ void MainWindow::update()        if(macros.find(macroname) == macros.end()) {          bool isstatic = false;          if(xml_elem.attribute("static", "false") == "true") isstatic = true; -        macros[macroname] = new MacroWindow(netcom, macronode, course, !isstatic); +        macros[macroname] = new MacroWindow(&netcom, macronode, course, !isstatic);          QGroupBox *g = new QGroupBox("   " + xml_elem.attribute("caption", macroname));          g->setCheckable(false); @@ -90,12 +90,11 @@ void MainWindow::update()          ((QBoxLayout*)w->layout())->addWidget(g);          if(!isstatic) { -          QPushButton *b = new QPushButton(">>", g); +          QPushButton *b = new QPushButton("+", g);            b->setFixedSize(16,16);            b->show();            b->move(0,0); -          connect(b, SIGNAL(clicked()), this, SLOT(closeAll()));            connect(b, SIGNAL(clicked()), macros[macroname], SLOT(toggleMacro()));          } @@ -118,13 +117,3 @@ void MainWindow::update()    }  } -void MainWindow::closeAll() -{ -  /* -  QMap<QString, MacroWindow*>::iterator i = macros.begin(); -  while(i != macros.end()) { -    i.value()->setCollapsed(true); -    i++; -  } -  */ -} diff --git a/client/mainwindow.h b/client/mainwindow.h index 15c95f0..37afa5b 100644 --- a/client/mainwindow.h +++ b/client/mainwindow.h @@ -29,6 +29,7 @@  #include <QMainWindow>  #include <QMap> +#include <QPushButton>  #include "netcom.h"  #include "macrowindow.h" @@ -40,7 +41,6 @@ public:  public slots:    void update(); -  void closeAll();  private:    QString course; diff --git a/client/netcom.cc b/client/netcom.cc index 755357e..ab2446e 100644 --- a/client/netcom.cc +++ b/client/netcom.cc @@ -37,6 +37,7 @@ NetCom::NetCom(QString host, quint16 port, QString user, QString cpr)    this->cpr = cpr;    socket.connectToHost(host, port);    connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead())); +  socket.waitForConnected();    transmitting = false;  } @@ -47,6 +48,9 @@ NetCom::~NetCom()  QDomDocument NetCom::send(QString course, QString macro)  { +  printf("Socket state: %d\n", socket.state()); +  if(socket.state() != 3) printf("Socket state not connected: %s\n", socket.errorString().toStdString().c_str()); +    if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(false);    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); @@ -66,10 +70,10 @@ QDomDocument NetCom::send(QString course, QString macro)    if(macro != "") request_elem.setAttribute("macro", macro);    pracro_elem.appendChild(request_elem); -  printf("\nSending:\n%s", doc.toString().toStdString().c_str()); +  printf("\nSending request:\n%s", doc.toString().toStdString().c_str());    socket.write(doc.toByteArray()); -  socket.waitForReadyRead(); +  //  socket.waitForReadyRead();    do {      qApp->processEvents(); @@ -79,7 +83,7 @@ QDomDocument NetCom::send(QString course, QString macro)    QDomElement elem = res_doc.documentElement(); -  printf("\nRecieved:\n%s", res_doc.toString().toStdString().c_str()); +  printf("\nRecieved request:\n%s", res_doc.toString().toStdString().c_str());    QApplication::restoreOverrideCursor();    if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(true); @@ -94,6 +98,9 @@ void NetCom::readyRead()  void NetCom::send(QVector< Widget* > widgets, QString macro, QString version)  { +  printf("Socket state: %d\n", socket.state()); +  if(socket.state() != 3) printf("Socket state not connected: %s\n", socket.errorString().toStdString().c_str()); +    qApp->activeWindow()->setEnabled(false);    if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(false); @@ -126,10 +133,10 @@ void NetCom::send(QVector< Widget* > widgets, QString macro, QString version)      i++;    } -  printf("\nSending:\n%s", doc.toString().toStdString().c_str()); +  printf("\nSending commit:\n%s", doc.toString().toStdString().c_str());    socket.write(doc.toByteArray()); -  socket.waitForReadyRead(); +  //  socket.waitForReadyRead();    //    // Wait for the (hopefully) empty answer. @@ -140,9 +147,9 @@ void NetCom::send(QVector< Widget* > widgets, QString macro, QString version)    buffer = ""; -  QDomElement elem = res_doc.documentElement(); +  //QDomElement elem = res_doc.documentElement(); -  printf("\nRecieved:\n%s", res_doc.toString().toStdString().c_str()); +  printf("\nRecieved commit:\n%s", res_doc.toString().toStdString().c_str());    QApplication::restoreOverrideCursor();    if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(true); diff --git a/client/resumewidget.cc b/client/resumewidget.cc index 80643db..b991ccf 100644 --- a/client/resumewidget.cc +++ b/client/resumewidget.cc @@ -27,16 +27,46 @@  #include "resumewidget.h"  #include <QHBoxLayout> +#include <QBoxLayout> + +//#define RICH  ResumeWidget::ResumeWidget()  {    setLayout(new QHBoxLayout()); -  resume = new QLabel(); +  layout()->setContentsMargins(10,2,2,2); +  resume = new QLabel("Endnu ikke udfyldt"); + +#ifdef RICH +  resume->setTextFormat(Qt::RichText); +#endif +    resume->setWordWrap(true); +  resume->setEnabled(false); +  /* +  resume->setFixedWidth(300); +  ((QBoxLayout*)layout())->addStretch(); +  */    layout()->addWidget(resume);  }  void ResumeWidget::setText(QString text)  { +  resume->setEnabled(true); + +#ifdef RICH +  QString f; + +  for(int i = 0; i < text.length(); i++) { +    if(text[i] >= '0' && text[i] <= '9') f += "<font style='color: #55F;'>" + text[i] + "</font>"; +    else if(text[i] == '\n') f += "<br/>"; +    else if(text[i] == ' ') f += " "; +    else f += text[i]; +  } + +  resume->setText(f); +  resume->setWordWrap(true); +#else    resume->setText(text); +#endif  } | 
