ControllerManager::ControllerManager(ConfigObject<ConfigValue>* pConfig) : QObject(), m_pConfig(pConfig), // WARNING: Do not parent m_pControllerLearningEventFilter to // ControllerManager because the CM is moved to its own thread and runs // its own event loop. m_pControllerLearningEventFilter(new ControllerLearningEventFilter()), m_pollTimer(this) { qRegisterMetaType<ControllerPresetPointer>("ControllerPresetPointer"); // Create controller mapping paths in the user's home directory. QString userPresets = userPresetsPath(m_pConfig); if (!QDir(userPresets).exists()) { qDebug() << "Creating user controller presets directory:" << userPresets; QDir().mkpath(userPresets); } QString localPresets = localPresetsPath(m_pConfig); if (!QDir(localPresets).exists()) { qDebug() << "Creating local controller presets directory:" << localPresets; QDir().mkpath(localPresets); } // Initialize preset info parsers m_pPresetInfoManager = new PresetInfoEnumerator(m_pConfig); // Instantiate all enumerators m_enumerators.append(new PortMidiEnumerator()); #ifdef __HSS1394__ m_enumerators.append(new Hss1394Enumerator()); #endif #ifdef __BULK__ m_enumerators.append(new BulkEnumerator()); #endif #ifdef __HID__ m_enumerators.append(new HidEnumerator()); #endif m_pollTimer.setInterval(kPollIntervalMillis); connect(&m_pollTimer, SIGNAL(timeout()), this, SLOT(pollDevices())); m_pThread = new QThread; m_pThread->setObjectName("Controller"); // Moves all children (including the poll timer) to m_pThread moveToThread(m_pThread); // Controller processing needs to be prioritized since it can affect the // audio directly, like when scratching m_pThread->start(QThread::HighPriority); connect(this, SIGNAL(requestSetUpDevices()), this, SLOT(slotSetUpDevices())); connect(this, SIGNAL(requestShutdown()), this, SLOT(slotShutdown())); connect(this, SIGNAL(requestSave(bool)), this, SLOT(slotSavePresets(bool))); }
MainWnd::MainWnd( QWidget * parent ) : QMainWindow( parent ) { ui.setupUi( this ); connect( this, SIGNAL(sigLog(const QString &)), this, SLOT(slotLog(const QString &)), Qt::QueuedConnection ); connect( ui.console, SIGNAL(line_validate(const QString &)), this, SLOT(slotSend(const QString &)), Qt::QueuedConnection ); QObject::connect( ui.clearLog, SIGNAL(triggered()), this, SLOT(slotClearLog()) ); QObject::connect( ui.dontSleep, SIGNAL(triggered()), this, SLOT(slotDontSleep()) ); QObject::connect( ui.showFullLog, SIGNAL(triggered()), this, SLOT(slotShowFullLog()) ); QObject::connect( ui.queryStatus, SIGNAL(triggered()), this, SLOT(slotStatus()) ); QObject::connect( ui.queryOsc, SIGNAL(triggered()), this, SLOT(slotOsc()) ); QObject::connect( ui.shutdown, SIGNAL(triggered()), this, SLOT(slotShutdown()) ); QObject::connect( ui.setupPipe, SIGNAL(triggered()), this, SLOT(slotSetupPipe()) ); QObject::connect( ui.lightBtn, SIGNAL(clicked()), this, SLOT(slotLight()) ); QObject::connect( ui.motoEnBtn, SIGNAL(clicked()), this, SLOT(slotMotoEn()) ); QObject::connect( ui.fwdBtn, SIGNAL(pressed()), this, SLOT(slotForward()) ); QObject::connect( ui.bwdBtn, SIGNAL(pressed()), this, SLOT(slotBackward()) ); QObject::connect( ui.leftBtn, SIGNAL(pressed()), this, SLOT(slotLeft()) ); QObject::connect( ui.rightBtn, SIGNAL(pressed()), this, SLOT(slotRight()) ); QObject::connect( ui.fwdBtn, SIGNAL(released()), this, SLOT(slotStop()) ); QObject::connect( ui.bwdBtn, SIGNAL(released()), this, SLOT(slotStop()) ); QObject::connect( ui.leftBtn, SIGNAL(released()), this, SLOT(slotStop()) ); QObject::connect( ui.rightBtn, SIGNAL(released()), this, SLOT(slotStop()) ); QObject::connect( ui.showFullLog, SIGNAL(triggered()), this, SLOT(slotShowFullLog()) ); m_peer = new QXmppPeer( this ); QObject::connect( m_peer, SIGNAL(connected()), this, SLOT(slotConnected()) ); QObject::connect( m_peer, SIGNAL(disconnected()), this, SLOT(slotDisconnected()) ); QObject::connect( m_peer, SIGNAL(textmsg(QString)), this, SLOT(qxmppMessageReceived(QString)) ); m_video = new QXmppVideo( m_peer ); // It also connects frameReady() signal to an appropriate slot. ui.view->setVideo( m_video ); this->setCentralWidget( ui.view ); QSettings ini( CONFIG_FILE, QSettings::IniFormat ); ini.beginGroup( "main" ); QString selfJid = ini.value( "selfJid", "client@xmpp" ).toString(); QString destJid = ini.value( "destJid", "host@xmpp" ).toString(); QString password = ini.value( "password", "12345" ).toString(); QString host = ini.value( "host", QString() ).toString(); int port = ini.value( "port", -1 ).toInt(); bool tls = ini.value( "tls", true ).toBool(); bool updateDest = ini.value( "updateDest", true ).toBool(); m_peer->setTarget( destJid, updateDest ); m_video->setTarget( destJid ); m_peer->connect( selfJid, password, host, port, tls ); m_jidDest = destJid; m_pipe = new QXmppMsgPipe( m_peer, 1 ); m_pipe->setOutPipe( m_jidDest, 1234, 22, "localhost" ); m_dontSleepTimer = new QTimer( this ); m_dontSleepTimer->setInterval( 15000 ); QObject::connect( m_dontSleepTimer, SIGNAL(timeout()), this, SLOT(slotDontSleepTimeout()) ); }