00001
00002 #include "OscMapper.h"
00003 namespace MarsyasQt
00004 {
00005 OscMapper::OscMapper(QHostAddress inputHost, quint16 inputPort, QHostAddress outputHost, quint16 outputPort, QObject* p, MarSystemQtWrapper *mwr)
00006 {
00007 mwr_=mwr;
00008
00009 oscServer_ = new QOscServer (inputHost, inputPort, p);
00010 QObject::connect(oscServer_, SIGNAL( data( QString, QVariant ) ), this, SLOT( updctrl (QString, QVariant)));
00011
00012 oscClient_ = new QOscClient (outputHost, outputPort, p);
00013 QObject::connect(mwr_, SIGNAL( ctrlChanged ( MarControlPtr ) ), this, SLOT( ctrlChanged ( MarControlPtr )));
00014 }
00015
00016 OscMapper::~OscMapper()
00017 {
00018 delete oscServer_;
00019 delete oscClient_;
00020 }
00021
00022 void OscMapper::registerInputQtSlot(QObject *object, QString path, QVariant::Type type)
00023 {
00024 PathObject* integerobj = new PathObject(path, type, oscServer_);
00025
00026 switch(type)
00027 {
00028 case QVariant::Bool:
00029 QObject::connect( integerobj, SIGNAL( data( bool ) ), object, SLOT( setValue( bool ) ) );
00030 break;
00031 case QVariant::Int:
00032 QObject::connect( integerobj, SIGNAL( data( int ) ), object, SLOT( setValue( int ) ) );
00033 break;
00034 case QVariant::Double:
00035 QObject::connect( integerobj, SIGNAL( data( double ) ), object, SLOT( setValue( double ) ) );
00036 break;
00037 case QVariant::String:
00038 QObject::connect( integerobj, SIGNAL( data( string ) ), object, SLOT( setValue( string ) ) );
00039 break;
00040 }
00041
00042 }
00043
00044 void OscMapper::registerOutputQtSlot(QObject *object, QString path, QVariant::Type type)
00045 {
00046 PathObject* integerobj = new PathObject(path, type, oscClient_);
00047
00048 switch(type)
00049 {
00050 case QVariant::Bool:
00051 QObject::connect( object, SIGNAL( valueChanged( bool ) ), integerobj, SLOT( send( bool ) ) );
00052 break;
00053 case QVariant::Int:
00054 QObject::connect( object, SIGNAL( valueChanged( int ) ), integerobj, SLOT( send( int ) ) );
00055 break;
00056 case QVariant::Double:
00057 QObject::connect( object, SIGNAL( valueChanged( double ) ), integerobj, SLOT( send( double ) ) );
00058 break;
00059 case QVariant::String:
00060 QObject::connect( object, SIGNAL( valueChanged( string ) ), integerobj, SLOT( send( string ) ));
00061 break;
00062 }
00063 }
00064 }
00065