ComponentDefinitionProto* ParticleComponentLoader::load(const TiXmlElement& element) { std::unique_ptr<ParticleComponentDefinitionProto> proto(new ParticleComponentDefinitionProto()); if ( element.QueryFloatAttribute("emitrate", &proto->emitRate) != TIXML_SUCCESS ) { return NULL; } proto->gravity = loadValue(element, "gravity"); const TiXmlElement* pXmlInitElement = element.FirstChildElement("init"); if ( pXmlInitElement != NULL ) { loadInit(*pXmlInitElement, *proto); } const TiXmlElement* pXmlUpdateElement = element.FirstChildElement("update"); if ( pXmlUpdateElement != NULL ) { loadUpdate(*pXmlUpdateElement, *proto); } return proto.release(); }
RealtimeWindow::RealtimeWindow(MainWindow *parent, TrainTool *trainTool, const QDir &home) : QWidget(parent) { // set home this->home = home; this->trainTool = trainTool; main = parent; deviceController = NULL; streamController = NULL; ergFile = NULL; // metric or imperial? boost::shared_ptr<QSettings> settings = GetApplicationSettings(); QVariant unit = settings->value(GC_UNIT); useMetricUnits = (unit.toString() == "Metric"); // main layout for the window main_layout = new QVBoxLayout(this); timer_layout = new QGridLayout(); // BUTTONS AND LCDS button_layout = new QHBoxLayout(); option_layout = new QHBoxLayout(); controls_layout = new QVBoxLayout(); deviceSelector = new QComboBox(this); streamSelector = new QComboBox(this); // get configured devices DeviceConfigurations all; Devices = all.getList(); streamSelector->addItem("No streaming", -1); for (int i=0; i<Devices.count(); i++) { // add streamers if ( Devices.at(i).type == DEV_GSERVER || Devices.at(i).type == DEV_GCLIENT ) streamSelector->addItem(Devices.at(i).name, i); // add data sources deviceSelector->addItem(Devices.at(i).name, i); } deviceSelector->setCurrentIndex(0); streamSelector->setCurrentIndex(0); recordSelector = new QCheckBox(this); recordSelector->setText(tr("Save")); recordSelector->setChecked(Qt::Checked); startButton = new QPushButton(tr("Start"), this); startButton->setMaximumHeight(100); pauseButton = new QPushButton(tr("Pause"), this); pauseButton->setMaximumHeight(100); stopButton = new QPushButton(tr("Stop"), this); stopButton->setMaximumHeight(100); button_layout->addWidget(startButton); button_layout->addWidget(pauseButton); button_layout->addWidget(stopButton); option_layout->addWidget(deviceSelector); option_layout->addSpacing(10); option_layout->addWidget(recordSelector); option_layout->addSpacing(10); option_layout->addWidget(streamSelector); // XXX NETWORK STREAMING DISABLED IN THIS RELEASE SO HIDE THE COMBO streamSelector->hide(); option_layout->addSpacing(10); controls_layout->addItem(option_layout); controls_layout->addItem(button_layout); // handle config changes connect(main, SIGNAL(configChanged()), this, SLOT(configUpdate())); connect(deviceSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(SelectDevice(int))); connect(recordSelector, SIGNAL(clicked()), this, SLOT(SelectRecord())); connect(streamSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(SelectStream(int))); connect(trainTool, SIGNAL(workoutSelected()), this, SLOT(SelectWorkout())); if (Devices.count() > 0) { connect(startButton, SIGNAL(clicked()), this, SLOT(Start())); connect(pauseButton, SIGNAL(clicked()), this, SLOT(Pause())); connect(stopButton, SIGNAL(clicked()), this, SLOT(Stop())); } else { connect(startButton, SIGNAL(clicked()), this, SLOT(warnnoConfig())); connect(pauseButton, SIGNAL(clicked()), this, SLOT(warnnoConfig())); connect(stopButton, SIGNAL(clicked()), this, SLOT(warnnoConfig())); } powerLabel = new QLabel(tr("WATTS"), this); powerLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); heartrateLabel = new QLabel(tr("BPM"), this); heartrateLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); speedLabel = new QLabel(useMetricUnits ? tr("KPH") : tr("MPH"), this); speedLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); cadenceLabel = new QLabel(tr("RPM"), this); cadenceLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); lapLabel = new QLabel(tr("Lap/Interval"), this); lapLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); loadLabel = new QLabel(tr("Load WATTS"), this); loadLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); distanceLabel = new QLabel(useMetricUnits ? tr("Distance (KM)") : tr("Distance (Miles)"), this); distanceLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); avgpowerLabel = new QLabel(tr("Avg WATTS"), this); avgpowerLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); avgheartrateLabel = new QLabel(tr("Avg BPM"), this); avgheartrateLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); avgspeedLabel = new QLabel(useMetricUnits ? tr("Avg KPH") : tr("Avg MPH"), this); avgspeedLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); avgcadenceLabel = new QLabel(tr("Avg RPM"), this); avgcadenceLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); avgloadLabel = new QLabel(tr("Avg Load WATTS"), this); avgloadLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); laptimeLabel = new QLabel(tr("LAP TIME"), this); laptimeLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); timeLabel = new QLabel(tr("TIME"), this); timeLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); powerLCD = new QLCDNumber(this); powerLCD->setSegmentStyle(QLCDNumber::Filled); heartrateLCD = new QLCDNumber(this); heartrateLCD->setSegmentStyle(QLCDNumber::Filled); speedLCD = new QLCDNumber(this); speedLCD->setSegmentStyle(QLCDNumber::Filled); cadenceLCD = new QLCDNumber(this); cadenceLCD->setSegmentStyle(QLCDNumber::Filled); lapLCD = new QLCDNumber(this); lapLCD->setSegmentStyle(QLCDNumber::Filled); loadLCD = new QLCDNumber(this); loadLCD->setSegmentStyle(QLCDNumber::Filled); distanceLCD = new QLCDNumber(this); distanceLCD->setSegmentStyle(QLCDNumber::Filled); avgpowerLCD = new QLCDNumber(this); avgpowerLCD->setSegmentStyle(QLCDNumber::Filled); avgheartrateLCD = new QLCDNumber(this); avgheartrateLCD->setSegmentStyle(QLCDNumber::Filled); avgspeedLCD = new QLCDNumber(this); avgspeedLCD->setSegmentStyle(QLCDNumber::Filled); avgcadenceLCD = new QLCDNumber(this); avgcadenceLCD->setSegmentStyle(QLCDNumber::Filled); avgloadLCD = new QLCDNumber(this); avgloadLCD->setSegmentStyle(QLCDNumber::Filled); laptimeLCD = new QLCDNumber(this); laptimeLCD->setSegmentStyle(QLCDNumber::Filled); laptimeLCD->setNumDigits(9); timeLCD = new QLCDNumber(this); timeLCD->setSegmentStyle(QLCDNumber::Filled); timeLCD->setNumDigits(9); gridLayout = new QGridLayout(); gridLayout->addWidget(powerLabel, 1, 0); gridLayout->addWidget(cadenceLabel, 1, 1); gridLayout->addWidget(heartrateLabel, 1, 2); gridLayout->addWidget(speedLabel, 1, 3); gridLayout->addWidget(distanceLabel, 1, 4); gridLayout->addWidget(lapLabel, 1, 5); gridLayout->addWidget(powerLCD, 2, 0); gridLayout->addWidget(cadenceLCD, 2, 1); gridLayout->addWidget(heartrateLCD, 2, 2); gridLayout->addWidget(speedLCD, 2, 3); gridLayout->addWidget(distanceLCD, 2, 4); gridLayout->addWidget(lapLCD, 2, 5); gridLayout->addWidget(avgpowerLabel, 3, 0); gridLayout->addWidget(avgcadenceLabel, 3, 1); gridLayout->addWidget(avgheartrateLabel, 3, 2); gridLayout->addWidget(avgspeedLabel, 3, 3); gridLayout->addWidget(avgloadLabel, 3, 4); gridLayout->addWidget(loadLabel, 3, 5); gridLayout->addWidget(loadLCD, 4, 5); gridLayout->addWidget(avgpowerLCD, 4, 0); gridLayout->addWidget(avgcadenceLCD, 4, 1); gridLayout->addWidget(avgheartrateLCD, 4, 2); gridLayout->addWidget(avgspeedLCD, 4, 3); gridLayout->addWidget(avgloadLCD, 4, 4); gridLayout->setRowStretch(2, 4); gridLayout->setRowStretch(4, 3); // timers etc timer_layout->addWidget(timeLabel, 0, 0); timer_layout->addWidget(laptimeLabel, 0, 3); timer_layout->addWidget(timeLCD, 1, 0); timer_layout->addItem(controls_layout, 1,1); timer_layout->addWidget(laptimeLCD, 1, 3); timer_layout->setRowStretch(0, 1); timer_layout->setRowStretch(1, 4); // REALTIME PLOT rtPlot = new RealtimePlot(); connect(main, SIGNAL(configChanged()), rtPlot, SLOT(configChanged())); // COURSE PLOT ergPlot = new ErgFilePlot(0); ergPlot->setVisible(false); // LAYOUT main_layout->addWidget(ergPlot); main_layout->addItem(timer_layout); main_layout->addItem(gridLayout); main_layout->addWidget(rtPlot); displaymode=2; main_layout->setStretch(0,1); main_layout->setStretch(1,1); main_layout->setStretch(2,2); main_layout->setStretch(3, displaymode); // now the GUI is setup lets sort our control variables gui_timer = new QTimer(this); disk_timer = new QTimer(this); stream_timer = new QTimer(this); load_timer = new QTimer(this); session_time = QTime(); session_elapsed_msec = 0; lap_time = QTime(); lap_elapsed_msec = 0; recordFile = NULL; status = 0; status |= RT_RECORDING; // recording is on by default! - add others here status |= RT_MODE_ERGO; // ergo mode by default displayWorkoutLap = displayLap = 0; pwrcount = 0; cadcount = 0; hrcount = 0; spdcount = 0; lodcount = 0; load_msecs = total_msecs = lap_msecs = 0; displayWorkoutDistance = displayDistance = displayPower = displayHeartRate = displaySpeed = displayCadence = displayGradient = displayLoad = 0; avgPower= avgHeartRate= avgSpeed= avgCadence= avgLoad= 0; connect(gui_timer, SIGNAL(timeout()), this, SLOT(guiUpdate())); connect(disk_timer, SIGNAL(timeout()), this, SLOT(diskUpdate())); connect(stream_timer, SIGNAL(timeout()), this, SLOT(streamUpdate())); connect(load_timer, SIGNAL(timeout()), this, SLOT(loadUpdate())); // setup the controller based upon currently selected device setDeviceController(); rtPlot->replot(); }
void CConfigUpdate::load(CConfigManager &ConfMan) { loadUpdate(ConfMan.GetSection(_T("Update")),ConfMan.GetCaldixSection(_T("Update"))); loadCaldixConf(ConfMan.GetCaldixSection(_T("conf"))); }