diff options
Diffstat (limited to 'client/macro.cc')
-rw-r--r-- | client/macro.cc | 145 |
1 files changed, 0 insertions, 145 deletions
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 -} |