int Menu::update(sf::Vector2i mousePos) { if (isBinding) { bindKey(); } else { for(unsigned int i = 0; i < mainMenu.size(); ++i) { if(mainMenu[i]->update(mousePos)) { switch(i) { case 0: //single player for (unsigned int a = 0; a < mainMenu.size(); ++a) { mainMenu[a]->setVisible(false); } for (unsigned int a = 0; a < singleMenu.size(); ++a) { singleMenu[a]->setVisible(true); } break; case 1: //multi player return 5; break; case 2: //go to settings for (unsigned int a = 0; a < mainMenu.size(); ++a) { mainMenu[a]->setVisible(false); } for (unsigned int a = 0; a < settingsMenu.size(); ++a) { settingsMenu[a]->setVisible(true); } background.setTexture(&settingsBackgroundTexture); isBinding = false; break; case 3: //exit return 10; break; } } } for(unsigned int i = 0; i < settingsMenu.size(); ++i) { if (settingsMenu[i]->update(mousePos)) { switch(i) { case 0: //back for (unsigned int a = 0; a < mainMenu.size(); ++a) { mainMenu[a]->setVisible(true); } for (unsigned int a = 0; a < settingsMenu.size(); ++a) { settingsMenu[a]->setVisible(false); } updateTips(); background.setTexture(&mainBackgroundTexture); writeSettings(); break; case 1: //music down settings.musicVolume--; if (settings.musicVolume < 0) { settings.musicVolume = 0; } updateSettings(); break; case 2: //music up settings.musicVolume++; if (settings.musicVolume > 10) { settings.musicVolume = 10; } updateSettings(); break; case 3: //effects down settings.effectVolume--; if (settings.effectVolume < 0) { settings.effectVolume = 0; } updateSettings(); break; case 4: //effects up settings.effectVolume++; if (settings.effectVolume > 10) { settings.effectVolume = 10; } updateSettings(); break; case 5: //enable mouse settings.enableMouse = !settings.enableMouse; updateSettings(); break; case 6: //select after upgrade settings.selectAfterUpgrade = !settings.selectAfterUpgrade; updateSettings(); break; default: sprintf(bindMessage, "Press the escape key to exit.\n\nPress the new key for %s", hotkeyNames[i - 7]); isBinding = true; currentKey = i; updateSettings(); break; } } } for (unsigned int i = 0; i < singleMenu.size(); ++i) { if(singleMenu[i]->update(mousePos)) { switch(i) { case 0: //back button for (unsigned int a = 0; a < mainMenu.size(); ++a) { mainMenu[a]->setVisible(true); } for (unsigned int a = 0; a < singleMenu.size(); ++a) { singleMenu[a]->setVisible(false); } updateTips(); break; case 1: //mission 1 return 1; break; case 2: //mission 2 return 2; break; case 3: //mission 3 return 3; break; case 4: //mission 4 return 4; break; } } } } return 0; }
ConfigInputWidget::ConfigInputWidget(QWidget *parent) : ConfigTaskWidget(parent) { m_config = new Ui_InputWidget(); m_config->setupUi(this); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectManager *objManager = pm->getObject<UAVObjectManager>(); // First of all, put all the channel widgets into lists, so that we can // manipulate those: inMaxLabels << m_config->ch0Max << m_config->ch1Max << m_config->ch2Max << m_config->ch3Max << m_config->ch4Max << m_config->ch5Max << m_config->ch6Max << m_config->ch7Max; inMinLabels << m_config->ch0Min << m_config->ch1Min << m_config->ch2Min << m_config->ch3Min << m_config->ch4Min << m_config->ch5Min << m_config->ch6Min << m_config->ch7Min; inSliders << m_config->inSlider0 << m_config->inSlider1 << m_config->inSlider2 << m_config->inSlider3 << m_config->inSlider4 << m_config->inSlider5 << m_config->inSlider6 << m_config->inSlider7; inRevCheckboxes << m_config->ch0Rev << m_config->ch1Rev << m_config->ch2Rev << m_config->ch3Rev << m_config->ch4Rev << m_config->ch5Rev << m_config->ch6Rev << m_config->ch7Rev; inChannelAssign << m_config->ch0Assign << m_config->ch1Assign << m_config->ch2Assign << m_config->ch3Assign << m_config->ch4Assign << m_config->ch5Assign << m_config->ch6Assign << m_config->ch7Assign; // Now connect the widget to the ManualControlCommand / Channel UAVObject UAVDataObject* obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("ManualControlCommand"))); connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateChannels(UAVObject*))); // Register for ManualControlSettings changes: obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("ManualControlSettings"))); connect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(refreshValues())); // Get the receiver types supported by OpenPilot and fill the corresponding // dropdown menu: obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("ManualControlSettings"))); UAVObjectField * field; // Fill in the dropdown menus for the channel RC Input assignement. QStringList channelsList; channelsList << "None"; QList<UAVObjectField*> fieldList = obj->getFields(); foreach (UAVObjectField* field, fieldList) { if (field->getUnits().contains("channel")) { channelsList.append(field->getName()); } } m_config->ch0Assign->addItems(channelsList); m_config->ch1Assign->addItems(channelsList); m_config->ch2Assign->addItems(channelsList); m_config->ch3Assign->addItems(channelsList); m_config->ch4Assign->addItems(channelsList); m_config->ch5Assign->addItems(channelsList); m_config->ch6Assign->addItems(channelsList); m_config->ch7Assign->addItems(channelsList); // And the flight mode settings: field = obj->getField(QString("FlightModePosition")); m_config->fmsModePos1->addItems(field->getOptions()); m_config->fmsModePos2->addItems(field->getOptions()); m_config->fmsModePos3->addItems(field->getOptions()); field = obj->getField(QString("Stabilization1Settings")); channelsList.clear(); channelsList.append(field->getOptions()); m_config->fmsSsPos1Roll->addItems(channelsList); m_config->fmsSsPos1Pitch->addItems(channelsList); m_config->fmsSsPos1Yaw->addItems(channelsList); m_config->fmsSsPos2Roll->addItems(channelsList); m_config->fmsSsPos2Pitch->addItems(channelsList); m_config->fmsSsPos2Yaw->addItems(channelsList); m_config->fmsSsPos3Roll->addItems(channelsList); m_config->fmsSsPos3Pitch->addItems(channelsList); m_config->fmsSsPos3Yaw->addItems(channelsList); // And the Armin configurations: field = obj->getField(QString("Arming")); m_config->armControl->clear(); m_config->armControl->addItems(field->getOptions()); connect(m_config->saveRCInputToSD, SIGNAL(clicked()), this, SLOT(saveRCInputObject())); connect(m_config->saveRCInputToRAM, SIGNAL(clicked()), this, SLOT(sendRCInputUpdate())); enableControls(false); refreshValues(); connect(parent, SIGNAL(autopilotConnected()),this, SLOT(onAutopilotConnect())); connect(parent, SIGNAL(autopilotDisconnected()), this, SLOT(onAutopilotDisconnect())); connect(m_config->ch0Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch1Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch2Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch3Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch4Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch5Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch6Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->ch7Rev, SIGNAL(toggled(bool)), this, SLOT(reverseCheckboxClicked(bool))); connect(m_config->doRCInputCalibration,SIGNAL(stateChanged(int)),this,SLOT(updateTips(int))); firstUpdate = true; // Connect the help button connect(m_config->inputHelp, SIGNAL(clicked()), this, SLOT(openHelp())); updateTips(Qt::Unchecked); }