diff options
-rw-r--r-- | client/builder.cc | 18 | ||||
-rw-r--r-- | client/builder.h | 1 | ||||
-rw-r--r-- | client/macro.cc | 34 | ||||
-rw-r--r-- | client/macro.h | 9 | ||||
-rw-r--r-- | client/main.cc | 13 |
5 files changed, 68 insertions, 7 deletions
diff --git a/client/builder.cc b/client/builder.cc index 29c42c6..af44fd8 100644 --- a/client/builder.cc +++ b/client/builder.cc @@ -69,9 +69,11 @@ void Builder::recurser(QDomNode xml_node, QWidget *parent) } 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()), this, SLOT(cont("fisk"))); widget = pushbutton; } else if(xml_elem.tagName() == "textedit") { @@ -190,3 +192,19 @@ void Builder::cancel() { printf("Builder -> cancelling...\n"); } + +void Builder::cont(QString name) +{ + /* + QVector< Widget* >::iterator i=widgets.begin(); + while (i != widgets.end()) { + Widget* w = *i; + + if(w->getName() + xml_string.append(" <field name=\"" + w->getName() + + "\" value=\"" + w->getValue() + "\"/>\n"); + i++; + } + */ + printf("%s : Builder -> continuing...\n", name.toStdString().c_str()); +} diff --git a/client/builder.h b/client/builder.h index 586370d..534480f 100644 --- a/client/builder.h +++ b/client/builder.h @@ -47,6 +47,7 @@ public slots: void commit(); void reset(); void cancel(); + void cont(QString name); private: void recurser(QDomNode xml_node, QWidget *parent); diff --git a/client/macro.cc b/client/macro.cc index ec520f0..654557d 100644 --- a/client/macro.cc +++ b/client/macro.cc @@ -28,10 +28,22 @@ #include "builder.h" #include "sendrecieve.h" #include <QDomDocument> +#include <QApplication> + +#define MY_EVENT_ID 65432 + +class MyEvent : public QEvent { +public: + MyEvent(QString macro) : QEvent((QEvent::Type)MY_EVENT_ID) + { + this->macro = macro; + } + QString macro; +}; static QDomDocument xml_request(QString name); -void macro(QString name) +void create_macro(QString name) { // Build the XML request QDomDocument xml_req = xml_request(name); @@ -55,6 +67,26 @@ void macro(QString name) Builder *builder = new Builder(&xml_doc); } +bool MyEventHandler::eventFilter( QObject *o, QEvent *e ) +{ + + if ( e->type() == MY_EVENT_ID ) { + MyEvent *event = (MyEvent*)e; + create_macro(event->macro); + // ... DO SOMETHING WITH EVENT + return TRUE; // eat event + } else { + // standard event processing + return FALSE; + } +} + +void new_macro(QString macro) +{ + MyEvent *event = new MyEvent(macro); + qApp->postEvent(qApp, event); +} + static QDomDocument xml_request(QString name) { // Create the xml request array diff --git a/client/macro.h b/client/macro.h index 36f4f4f..9863d3a 100644 --- a/client/macro.h +++ b/client/macro.h @@ -28,7 +28,14 @@ #define __PRACRO_MACRO_H__ #include <QString> +#include <QObject> +#include <QEvent> -void macro(QString name); +class MyEventHandler : public QObject { +protected: + bool eventFilter( QObject *o, QEvent *e ); +}; + +void new_macro(QString name); #endif/*__PRACRO_MACRO_H__*/ diff --git a/client/main.cc b/client/main.cc index a37ed1e..025b713 100644 --- a/client/main.cc +++ b/client/main.cc @@ -25,16 +25,19 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include "macro.h" -#include "sendrecieve.h" #include <QApplication> +#include <QObject> +#include <QEvent> +#include "macro.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); - - macro("example"); + + MyEventHandler *eventhandler = new MyEventHandler(); + app.installEventFilter( eventhandler ); + + new_macro("example"); return app.exec(); } - |