Exemple #1
0
void CDlgOrder::enableOrderDescFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned orderDescFields[] = {
		IDC_EDIT_ORDER_ACTION,
		IDC_EDIT_ORDER_SIZE,
		IDC_EDIT_ORDER_TYPE,
		//IDC_EDIT_ORDER_PRICE,
		//IDC_EDIT_ORDER_AUX_PRICE,
		IDC_EDIT_ORDER_GOOD_AFTER_TIME,
		IDC_EDIT_ORDER_GOOD_TILL_DATE,
	};

	static const size_t orderDescFieldsNum =
		sizeof(orderDescFields) / sizeof(orderDescFields[0]);

	bool enable = (dialogType == ORDER);
	enableFields(orderDescFields, orderDescFieldsNum, enable);

	static const unsigned orderDescCommonFields[] = {
		IDC_EDIT_ORDER_PRICE,
		IDC_EDIT_ORDER_AUX_PRICE,
	};

	static const size_t orderDescCommonFieldsNum =
		sizeof(orderDescCommonFields) / sizeof(orderDescCommonFields[0]);

	enable = (dialogType == ORDER || dialogType == CALC_IMPL_VOL || dialogType == CALC_OPTION_PRICE);
	enableFields(orderDescCommonFields, orderDescCommonFieldsNum, enable);
}
Exemple #2
0
void CDlgOrder::enableHistDataFields(const CDlgOrder::DialogType dialogType)
{
	{
		static const unsigned histDataCommonFields[] = {
			IDC_EDIT_WHAT_TO_SHOW,
			IDC_EDIT_USE_RTH,
		};

		static const size_t histDataCommonFieldsNum =
			sizeof(histDataCommonFields) / sizeof(histDataCommonFields[0]);

		bool enable = (dialogType == REQ_HISTORICAL_DATA || dialogType == REQ_REAL_TIME_BARS);
		enableFields(histDataCommonFields, histDataCommonFieldsNum, enable);
	}

	{
		static const unsigned histDataFields[] = {
			IDC_EDIT_HIST_END_DATE_TIME,
			IDC_EDIT_HIST_DURATION,
			//IDC_EDIT_WHAT_TO_SHOW,
			IDC_EDIT_BAR_SIZE,
			//IDC_EDIT_USE_RTH,
			IDC_EDIT_DATE_FORMAT,
		};
		static const size_t histDataFieldsNum =
			sizeof(histDataFields) / sizeof(histDataFields[0]);

		bool enable = (dialogType == REQ_HISTORICAL_DATA);
		enableFields(histDataFields, histDataFieldsNum, enable);
	}
}
Exemple #3
0
void PhotoDetails::updateImageInfo() {

    if (m_photo.count() == 0) {
        disableFields();
    } else if (m_photo.count() == 1) {
        enableFields();
        updateSingleImage();
    } else if (m_photo.count() > 1) {
        enableFields();
        updateMultipleImage();
    }

}
Exemple #4
0
void CDlgOrder::enableOptionsFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned optionsFields[] = {
		IDC_BTN_OPTIONS,
	};

	static const size_t optionsFieldsNum =
		sizeof(optionsFields) / sizeof(optionsFields[0]);

	bool enable = (dialogType == ORDER || dialogType == REQ_HISTORICAL_DATA ||
		dialogType == REQ_MKT_DATA || dialogType == REQ_MKT_DEPTH || dialogType == REQ_REAL_TIME_BARS);

	enableFields(optionsFields, optionsFieldsNum, enable);

	switch(dialogType){
		case ORDER:
			GetDlgItem(optionsFields[0])->SetWindowTextA("Order Misc Options");
			break;
		case REQ_HISTORICAL_DATA:
			GetDlgItem(optionsFields[0])->SetWindowTextA("Chart Options");
			break;
		case REQ_MKT_DATA:
			GetDlgItem(optionsFields[0])->SetWindowTextA("Mkt Data Options");
			break;
		case REQ_MKT_DEPTH:
			GetDlgItem(optionsFields[0])->SetWindowTextA("Mkt Depth Options");
			break;
		case REQ_REAL_TIME_BARS:
			GetDlgItem(optionsFields[0])->SetWindowTextA("RTB Options");
			break;
		default:
			GetDlgItem(optionsFields[0])->SetWindowTextA("Options");
			break;
	}
}
void NavigationModeControlTab::readPacket(std::shared_ptr<Packet> packet) {
    if (mControlMode)
        return;
    if (packet->instanceOfMessage()) {
        const Message& message = packet->messageCast();
        if (message.instanceOf<NavigationModeControl>()) {
            enableFields(true);
            const NavigationModeControl& msg =
                message.typeCast<NavigationModeControl>();
            switch (msg.mNavigationMode) {
            case 0:
                mUi->noOpRadioButton->setChecked(true);
                break;
            case 1:
                mUi->standbyRadioButton->setChecked(true);
                break;
            case 2:
                mUi->navigateRadioButton->setChecked(true);
                break;
            default:
                break;
            }
        }
    }
}
Exemple #6
0
void CDlgOrder::enableContractDescFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned contractDescFields[] = {
		IDC_EDIT_CONID,
		IDC_EDIT_SYMBOL,
		IDC_EDIT_SEC_TYPE,
		IDC_EDIT_EXPIRY,
		IDC_EDIT_STRIKE,
		IDC_EDIT_RIGHT,
		IDC_EDIT_MULT,
		IDC_EDIT_EXCH,
		IDC_EDIT_PRIM_EXCH,
		IDC_EDIT_CURRENCY,
		IDC_EDIT_LOCAL_SYMBOL,
		IDC_EDIT_IS_EXPIRED,
	};

	static const size_t contractDescFieldsNum =
		sizeof(contractDescFields) / sizeof(contractDescFields[0]);

	bool enable = (dialogType == ORDER || dialogType == REQ_MKT_DATA ||
		dialogType == REQ_MKT_DEPTH || dialogType == REQ_HISTORICAL_DATA ||
		dialogType == REQ_REAL_TIME_BARS || dialogType == REQ_CONTRACT_DETAILS ||
		dialogType == EXERCISE_OPTIONS || dialogType == CALC_IMPL_VOL || 
		dialogType == CALC_OPTION_PRICE);

	enableFields(contractDescFields, contractDescFieldsNum, enable);
}
//------------------------------------------------------------------------------
void SdoDialog::startRead()
{
    eObdType obdType;
    int size = 0;
    tOplkError ret;

    enableFields(false);
    readFields();

    obdType = pDataTypeBox->itemData(pDataTypeBox->currentIndex()).value<eObdType>();

    switch (obdType)
    {
        case kObdTypeUInt8:
        case kObdTypeInt8:
            size = 1;
            break;

        case kObdTypeUInt16:
        case kObdTypeInt16:
            size = 2;
            break;

        case kObdTypeUInt32:
        case kObdTypeInt32:
            size = 4;
            break;

        case kObdTypeUInt64:
        case kObdTypeInt64:
            size = 8;
            break;

        case kObdTypeVString:
        case kObdTypeDomain:
            size = 4096*1024;
            break;
    }
    data.resize(size);

    ret = oplk_postUserEvent(readButton);
    if (ret != kErrorOk)
    {
        enableFields(true);
    }
}
void KOCRBase::stopOCR()
{
    enableFields(true);

    enableButton( User1, true );   /* start ocr */
    enableButton( User2, false );  /* Cancel    */
    enableButton( Close, true );

    stopAnimation();

}
Exemple #9
0
void CDlgOrder::enableMarketDepthFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned marketDepthFields[] = {
		IDC_EDIT_NUM_MKT_DEPTH_ROWS,
	};

	static const size_t marketDepthFieldsNum =
		sizeof(marketDepthFields) / sizeof(marketDepthFields[0]);

	bool enable = (dialogType == REQ_MKT_DEPTH);
	enableFields(marketDepthFields, marketDepthFieldsNum, enable);
}
Exemple #10
0
void KOCRBase::startOCR()
{
    /* en- and disable the buttons */
    kdDebug(28000) << "Base: Starting OCR" << endl;

    enableFields(false);
    enableButton( User1, false );   /* Start OCR */
    enableButton( User2, true );    /* Stop OCR */
    enableButton( Close, true );

    startAnimation();
}
Exemple #11
0
void CDlgOrder::enableMarketDataTypeFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned marketDataTypeFields[] = {
		IDC_COMBO_MARKET_DATA_TYPE,
	};

	static const size_t marketDataTypeFieldsNum =
		sizeof(marketDataTypeFields) / sizeof(marketDataTypeFields[0]);

	bool enable = (dialogType == REQ_MARKET_DATA_TYPE);
	enableFields(marketDataTypeFields, marketDataTypeFieldsNum, enable);
}
Exemple #12
0
void TimeStatusTab::readPacket(std::shared_ptr<Packet> packet) {
  if (packet->instanceOfGroup()) {
    const Group& group = packet->groupCast();
    if (group.instanceOf<PPSTimeRecoveryStatus>()) {
      enableFields(true);
      const PPSTimeRecoveryStatus& msg =
        group.typeCast<PPSTimeRecoveryStatus>();
      mUi->gpsTimeSpinBox->setValue(msg.mTimeDistance.mTime1);
      mUi->posTimeSpinBox->setValue(msg.mTimeDistance.mTime2);
      mUi->distanceSpinBox->setValue(msg.mTimeDistance.mDistanceTag);
    }
  }
}
Exemple #13
0
void CDlgOrder::enableMarketDataFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned marketDataFields[] = {
		IDC_EDIT_GENERIC_TICKS,
		IDC_CHECK_SNAPSHOT_MKT_DATA,
	};

	static const size_t marketDataFieldsNum =
		sizeof(marketDataFields) / sizeof(marketDataFields[0]);

	bool enable = (dialogType == REQ_MKT_DATA);
	enableFields(marketDataFields, marketDataFieldsNum, enable);
}
Exemple #14
0
void CDlgOrder::enableComboFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned comboFields[] = {
		IDC_BTN_ADD_COMBO_LEGS,
		IDC_BTN_UNDER_COMP,
	};

	static const size_t comboFieldsNum =
		sizeof(comboFields) / sizeof(comboFields[0]);

	bool enable = (dialogType == ORDER || dialogType == REQ_MKT_DATA);
	enableFields(comboFields, comboFieldsNum, enable);
}
Exemple #15
0
void CDlgOrder::enableSecIdFields(const CDlgOrder::DialogType dialogType)
{
	{
		static const unsigned secIdFields[] = {
			IDC_EDIT_SEC_ID_TYPE,
			IDC_EDIT_SEC_ID
		};
		static const size_t secIdFieldsNum =
			sizeof(secIdFields) / sizeof(secIdFields[0]);

		bool enable = (dialogType == REQ_CONTRACT_DETAILS || dialogType == ORDER);
		enableFields(secIdFields, secIdFieldsNum, enable);
	}
}
Exemple #16
0
void CDlgOrder::enableExerciseOptionsFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned exerciseOptionsFields[] = {
		IDC_EDIT_EXERCISE_ACTION,
		IDC_EDIT_EXERCISE_QUANTITY,
		IDC_EDIT_EXERCISE_OVERRIDE,
	};

	static const size_t exerciseOptionsFieldsNum =
		sizeof(exerciseOptionsFields) / sizeof(exerciseOptionsFields[0]);

	bool enable = (dialogType == EXERCISE_OPTIONS);
	enableFields(exerciseOptionsFields, exerciseOptionsFieldsNum, enable);
}
void UserAccuracySpecTab::readPacket(std::shared_ptr<Packet> packet) {
  if (mControlMode)
    return;
  if (packet->instanceOfMessage()) {
    const Message& message = packet->messageCast();
    if (message.instanceOf<UserAccuracySpec>()) {
      enableFields(true);
      const UserAccuracySpec& msg = message.typeCast<UserAccuracySpec>();
      mUi->attAccSpinBox->setValue(msg.mAttitudeAccuracy);
      mUi->headingAccSpinBox->setValue(msg.mHeadingAccuracy);
      mUi->posAccSpinBox->setValue(msg.mPositionAccuracy);
      mUi->velAccSpinBox->setValue(msg.mVelocityAccuracy);
    }
  }
}
Exemple #18
0
void CDlgOrder::enableComboFields(const CDlgOrder::DialogType dialogType)
{
	static const unsigned comboFields[] = {
		IDC_BTN_ADD_COMBO_LEGS,
	};

	static const size_t comboFieldsNum =
		sizeof(comboFields) / sizeof(comboFields[0]);

	bool enable = (dialogType == ORDER ||
		dialogType == REQ_MKT_DATA ||
		dialogType == REQ_HISTORICAL_DATA);
	enableFields(comboFields, comboFieldsNum, enable);

	static const unsigned deltaNeutralFields[] = {
		IDC_BTN_UNDER_COMP,
	};

	static const size_t deltaNeutralFieldsNum =
		sizeof(deltaNeutralFields) / sizeof(deltaNeutralFields[0]);

	enable = (dialogType == ORDER || 
		dialogType == REQ_MKT_DATA);
	enableFields(deltaNeutralFields, deltaNeutralFieldsNum, enable);

	static const unsigned algoFields[] = {
		IDC_BTN_ALGO_PARAMS,
		IDC_BTN_SMART_COMBO_ROUTING_PARAMS,
	};

	static const size_t algoFieldsNum =
		sizeof(algoFields) / sizeof(algoFields[0]);

	enable = (dialogType == ORDER);
	enableFields(algoFields, algoFieldsNum, enable);
}
Exemple #19
0
void NavigationTab::readPacket(std::shared_ptr<Packet> packet) {
  if (packet->instanceOfGroup()) {
    const Group& group = packet->groupCast();
    if (group.instanceOf<VehicleNavigationSolution>()) {
      enableFields(true);
      const VehicleNavigationSolution& msg =
        group.typeCast<VehicleNavigationSolution>();
      mUi->latSpinBox->setValue(msg.mLatitude);
      mUi->longSpinBox->setValue(msg.mLongitude);
      mUi->altSpinBox->setValue(msg.mAltitude);
      mUi->velNorthSpinBox->setValue(msg.mNorthVelocity);
      mUi->velEastSpinBox->setValue(msg.mEastVelocity);
      mUi->velDownSpinBox->setValue(msg.mDownVelocity);
      mUi->rollSpinBox->setValue(msg.mRoll);
      mUi->pitchSpinBox->setValue(msg.mPitch);
      mUi->headingSpinBox->setValue(msg.mHeading);
      mUi->wanderSpinBox->setValue(msg.mWanderAngle);
      mUi->trackSpinBox->setValue(msg.mTrackAngle);
      mUi->speedSpinBox->setValue(msg.mSpeed);
      mUi->rateLongSpinBox->setValue(msg.mAngularRateLong);
      mUi->rateTransSpinBox->setValue(msg.mAngularRateTrans);
      mUi->rateDownSpinBox->setValue(msg.mAngularRateDown);
      mUi->accLongSpinBox->setValue(msg.mAccLong);
      mUi->accTransSpinBox->setValue(msg.mAccTrans);
      mUi->accDownSpinBox->setValue(msg.mAccDown);
      mUi->alignmentText->setText(mStatusMsg[msg.mAlignementStatus].c_str());
      emit updatePosition(msg.mLatitude, msg.mLongitude, msg.mAltitude);
    }
    else if (group.instanceOf<VehicleNavigationPerformance>()) {
      const VehicleNavigationPerformance& msg =
        group.typeCast<VehicleNavigationPerformance>();
      mUi->posNorthRMSSpinBox->setValue(msg.mNorthPositionRMSError);
      mUi->posEastRMSSpinBox->setValue(msg.mEastPositionRMSError);
      mUi->posDownRMSSpinBox->setValue(msg.mDownPositionRMSError);
      mUi->velNorthRMSSpinBox->setValue(msg.mNorthVelocityRMSError);
      mUi->velEastRMSSpinBox->setValue(msg.mEastVelocityRMSError);
      mUi->velDownRMSSpinBox->setValue(msg.mDownVelocityRMSError);
      mUi->rollRMSSpinBox->setValue(msg.mRollRMSError);
      mUi->pitchRMSSpinBox->setValue(msg.mPitchRMSError);
      mUi->headingRMSSpinBox->setValue(msg.mHeadingRMSError);
      mUi->semiMajorSpinBox->setValue(msg.mErrorEllipsoidSemiMajor);
      mUi->semiMinorSpinBox->setValue(msg.mErrorEllipsoidSemiMinor);
      mUi->orientationSpinBox->setValue(msg.mErrorEllipsoidOrientation);
      emit updateUncertainty(msg.mNorthPositionRMSError,
        msg.mEastPositionRMSError, msg.mDownPositionRMSError);
    }
  }
}
void AidingSensorInstallParamsTab::readPacket(std::shared_ptr<Packet>
    packet) {
  if (mControlMode)
    return;
  if (packet->instanceOfMessage()) {
    const Message& message = packet->messageCast();
    if (message.instanceOf<AidingSensorInstallParams>()) {
      enableFields(true);
      const AidingSensorInstallParams& msg =
        message.typeCast<AidingSensorInstallParams>();
      mUi->dmiScaleSpinBox->setValue(msg.mDMIScaleFactor);
      mUi->dmiXSpinBox->setValue(msg.mRefDMIX);
      mUi->dmiYSpinBox->setValue(msg.mRefDMIY);
      mUi->dmiZSpinBox->setValue(msg.mRefDMIZ);
    }
  }
}
Exemple #21
0
OcrEngine::EngineError KadmosDialog::setupGui()
{

    OcrEngine::EngineError err = OcrBaseDialog::setupGui();

    // setupPreprocessing( addVBoxPage(   i18n("Preprocessing")));
    // setupSegmentation(  addVBoxPage(   i18n("Segmentation")));
    // setupClassification( addVBoxPage( i18n("Classification")));

    /* continue page setup on the first page */
    KVBox *page = new KVBox(this);

    // FIXME: dynamic classifier reading.

    new QLabel(i18n("Please classify the font type and language of the text on the image:"), page);
    KHBox *locBox = new KHBox( page );
    m_bbFont = new Q3ButtonGroup(1, Qt::Horizontal, i18n("Font Type Selection"), locBox);

    m_rbMachine = new QRadioButton( i18n("Machine print"), m_bbFont );
    m_rbHand    = new QRadioButton( i18n("Hand writing"),  m_bbFont );
    m_rbNorm    = new QRadioButton( i18n("Norm font"),     m_bbFont );

    m_gbLang = new Q3GroupBox(1, Qt::Horizontal, i18n("Country"), locBox);


    m_cbLang = new QComboBox( m_gbLang );
    m_cbLang->setItemText(m_cbLang->currentIndex(), KLocale::defaultCountry());

    connect( m_bbFont, SIGNAL(clicked(int)), this, SLOT(slFontChanged(int) ));
    m_rbMachine->setChecked(true);

    /* --- */
    KHBox *innerBox = new KHBox( page );
    innerBox->setSpacing( KDialog::spacingHint());

    Q3ButtonGroup *cbGroup = new Q3ButtonGroup( 1, Qt::Horizontal, i18n("OCR Modifier"), innerBox );
    Q_CHECK_PTR(cbGroup);

    m_cbNoise = new QCheckBox( i18n( "Enable automatic noise reduction" ), cbGroup );
    m_cbAutoscale = new QCheckBox( i18n( "Enable automatic scaling"), cbGroup );

    addExtraSetupWidget(page);

    if( err != OcrEngine::ENG_OK )
    {
        enableFields(false);
        enableButton(User1, false );
    }

    if( m_ttfClassifier.count() == 0 )
    {
        m_rbMachine->setEnabled(false);
    }
    if( m_handClassifier.count() == 0 )
    {
        m_rbHand->setEnabled(false);
    }
    if( !m_haveNorm )
        m_rbNorm->setEnabled(false);

    if( (m_ttfClassifier.count() + m_handClassifier.count()) == 0 && ! m_haveNorm )
    {
        KMessageBox::error(0, i18n("The classifier files for KADMOS could not be found.\n"
                                   "OCR with KADMOS will not be possible.\n\n"
                                   "Change the OCR engine in the preferences dialog."),
                           i18n("Installation Error") );
        err = OcrEngine::ENG_BAD_SETUP;
    }
    else
        slotFontChanged( 0 ); // Load machine print font language list

    ocrShowInfo(QString::null);
    return err;
}
void CalibratedInstallationParamsTab::readPacket(std::shared_ptr<Packet>
        packet) {
    if (packet->instanceOfGroup()) {
        const Group& group = packet->groupCast();
        if (group.instanceOf<CalibratedInstallationParams>()) {
            enableFields(true);
            const CalibratedInstallationParams& msg =
                group.typeCast<CalibratedInstallationParams>();
            mUi->primGPSXSpinBox->setValue(msg.mReferenceToPrimaryGPSXLeverArm);
            mUi->primGPSYSpinBox->setValue(msg.mReferenceToPrimaryGPSYLeverArm);
            mUi->primGPSZSpinBox->setValue(msg.mReferenceToPrimaryGPSZLeverArm);
            mUi->primGPSFOMSpinBox->setValue(
                msg.mReferenceToPrimaryGPSLeverArmCalibrationFOM);
            mUi->aux1GPSXSpinBox->setValue(msg.mReferenceToAuxiliary1GPSXLeverArm);
            mUi->aux1GPSYSpinBox->setValue(msg.mReferenceToAuxiliary1GPSYLeverArm);
            mUi->aux1GPSZSpinBox->setValue(msg.mReferenceToAuxiliary1GPSZLeverArm);
            mUi->aux1GPSFOMSpinBox->setValue(
                msg.mReferenceToAuxiliary1GPSLeverArmCalibrationFOM);
            mUi->aux2GPSXSpinBox->setValue(msg.mReferenceToAuxiliary2GPSXLeverArm);
            mUi->aux2GPSYSpinBox->setValue(msg.mReferenceToAuxiliary2GPSYLeverArm);
            mUi->aux2GPSZSpinBox->setValue(msg.mReferenceToAuxiliary2GPSZLeverArm);
            mUi->aux2GPSFOMSpinBox->setValue(
                msg.mReferenceToAuxiliary2GPSLeverArmCalibrationFOM);
            mUi->dmiXSpinBox->setValue(msg.mReferenceToDMIXLeverArm);
            mUi->dmiYSpinBox->setValue(msg.mReferenceToDMIYLeverArm);
            mUi->dmiZSpinBox->setValue(msg.mReferenceToDMIZLeverArm);
            mUi->dmiFOMSpinBox->setValue(msg.mReferenceToDMILeverArmCalibrationFOM);
            mUi->dmiScaleSpinBox->setValue(msg.mDMIScaleFactor);
            mUi->dmiScaleFOMSpinBox->setValue(msg.mDMIScaleFactorCalibrationFOM);
            std::bitset<16> status(msg.mCalibrationStatus);
            for (size_t i = 0; i < 16; i++) {
                switch (i) {
                case 0:
                    if (status.test(i))
                        mUi->primGPSProgressLed->setColor(Qt::green);
                    else
                        mUi->primGPSProgressLed->setColor(Qt::red);
                    break;
                case 3:
                    if (status.test(i))
                        mUi->dmiLeverProgressLed->setColor(Qt::green);
                    else
                        mUi->dmiLeverProgressLed->setColor(Qt::red);
                    break;
                case 4:
                    if (status.test(i))
                        mUi->dmiScaleProgressLed->setColor(Qt::green);
                    else
                        mUi->dmiScaleProgressLed->setColor(Qt::red);
                    break;
                case 6:
                    if (status.test(i))
                        mUi->fixLeverProgressLed->setColor(Qt::green);
                    else
                        mUi->fixLeverProgressLed->setColor(Qt::red);
                    break;
                case 8:
                    if (status.test(i))
                        mUi->primGPSCompleteLed->setColor(Qt::green);
                    else
                        mUi->primGPSCompleteLed->setColor(Qt::red);
                    break;
                case 11:
                    if (status.test(i))
                        mUi->dmiLeverCompleteLed->setColor(Qt::green);
                    else
                        mUi->dmiLeverCompleteLed->setColor(Qt::red);
                    break;
                case 12:
                    if (status.test(i))
                        mUi->dmiScaleCompleteLed->setColor(Qt::green);
                    else
                        mUi->dmiScaleCompleteLed->setColor(Qt::red);
                    break;
                case 14:
                    if (status.test(i))
                        mUi->fixLeverCompleteLed->setColor(Qt::green);
                    else
                        mUi->fixLeverCompleteLed->setColor(Qt::red);
                    break;
                default:
                    break;
                }
            }
        }
    }
}
void PrimaryGPSStatusTab::readPacket(std::shared_ptr<Packet> packet) {
  if (packet->instanceOfGroup()) {
    const Group& group = packet->groupCast();
    if (group.instanceOf<PrimaryGPSStatus>()) {
      enableFields(true);
      const PrimaryGPSStatus& msg = group.typeCast<PrimaryGPSStatus>();
      mUi->navPrimGPSText->setText(
        mStatusMsg[msg.mNavigationSolutionStatus].c_str());
      mUi->satPrimGPSSpinBox->setValue(msg.mNumberOfSVTracked);
      mUi->primGPSTypeText->setText(mGPSTypeMsg[msg.mGPSReceiverType].c_str());
      mUi->geoidalPrimGPSSpinBox->setValue(msg.mGeoidalSeparation);
      mUi->hdopSpinBox->setValue(msg.mHDOP);
      mUi->vdopSpinBox->setValue(msg.mVDOP);
      mUi->dgpsIDSpinBox->setValue(msg.mDGPSReferenceID);
      mUi->corrLatencySpinBox->setValue(msg.mDGPSCorrectionLatency);
      mUi->navLatencySpinBox->setValue(msg.mGPSNavigationMessageLatency);
      mUi->weekSpinBox->setValue(msg.mGPSUTCWeekNumber);
      mUi->offsetSpinBox->setValue(msg.mGPSUTCTimeOffset);
      while (mUi->channelsTable->rowCount())
        mUi->channelsTable->removeRow(mUi->channelsTable->rowCount() - 1);
      for (size_t i = 0; i < msg.mChannelNumber; ++i) {
        mUi->channelsTable->insertRow(mUi->channelsTable->rowCount());
        QSpinBox* PRN = new QSpinBox;
        PRN->setReadOnly(true);
        PRN->setValue(msg.mChannelStatusData[i].mSVPRN);
        PRN->setButtonSymbols(QAbstractSpinBox::NoButtons);
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 0,
          PRN);
        QLineEdit* status = new QLineEdit;
        status->setReadOnly(true);
        status->setText(mChannelStatusMsg[
          msg.mChannelStatusData[i].mChannelTrackingStatus].c_str());
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 1,
          status);
        QDoubleSpinBox* azimuth = new QDoubleSpinBox;
        azimuth->setReadOnly(true);
        azimuth->setValue(msg.mChannelStatusData[i].mSVAzimuth);
        azimuth->setButtonSymbols(QAbstractSpinBox::NoButtons);
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 2,
          azimuth);
        QDoubleSpinBox* elevation = new QDoubleSpinBox;
        elevation->setReadOnly(true);
        elevation->setValue(msg.mChannelStatusData[i].mSVElevation);
        elevation->setButtonSymbols(QAbstractSpinBox::NoButtons);
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 3,
          elevation);
        QDoubleSpinBox* l1snr = new QDoubleSpinBox;
        l1snr->setReadOnly(true);
        l1snr->setValue(msg.mChannelStatusData[i].mSVL1SNR);
        l1snr->setButtonSymbols(QAbstractSpinBox::NoButtons);
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 4,
          l1snr);
        QDoubleSpinBox* l2snr = new QDoubleSpinBox;
        l2snr->setReadOnly(true);
        l2snr->setValue(msg.mChannelStatusData[i].mSVL2SNR);
        l2snr->setButtonSymbols(QAbstractSpinBox::NoButtons);
        mUi->channelsTable->setCellWidget(mUi->channelsTable->rowCount() - 1, 5,
          l2snr);
      }
    }
    if (group.instanceOf<PPSTimeRecoveryStatus>()) {
      const PPSTimeRecoveryStatus& msg =
        group.typeCast<PPSTimeRecoveryStatus>();
      mUi->ppsSpinBox->setValue(msg.mPPSCount);
      mUi->timeStatusText->setText(
        mTimeSyncMsg[msg.mTimeSynchroStatus].c_str());
    }
  }
}
//------------------------------------------------------------------------------
void SdoDialog::updateData(const QString& abortCode_p)
{
    QString dataString;
    eObdType obdType;

    if (abortCode_p != "")
    {
        pAbortCodeLabel->setText(abortCode_p);
    }

    obdType = pDataTypeBox->itemData(pDataTypeBox->currentIndex()).value<eObdType>();

    switch (obdType)
    {
        case kObdTypeUInt8:
            if (data.size() >= 1)
            {
                unsigned int val = *(unsigned char*)data.data();
                dataString = QString("0x%1 = %2")
                                .arg(val, 2, 16, QLatin1Char('0'))
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for UNSIGNED8";
            }
            break;

        case kObdTypeInt8:
            if (data.size() >= 1)
            {
                int val = *(INT8*)data.data();
                dataString = QString("%1")
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for INTEGER8";
            }
            break;

        case kObdTypeUInt16:
            if (data.size() >= 2)
            {
                unsigned int val = qFromLittleEndian<quint16>((const uchar*)data.data());
                dataString = QString("0x%1 = %2")
                                .arg(val, 4, 16, QLatin1Char('0'))
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for UNSIGNED16";
            }
            break;

        case kObdTypeInt16:
            if (data.size() >= 2)
            {
                int val = qFromLittleEndian<qint16>((const uchar*)data.data());
                dataString = QString("%1")
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for INTEGER16";
            }
            break;

        case kObdTypeUInt32:
            if (data.size() >= 4)
            {
                unsigned int val = qFromLittleEndian<quint32>((const uchar*)data.data());
                dataString = QString("0x%1 = %2")
                                .arg(val, 8, 16, QLatin1Char('0'))
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for UNSIGNED32";
            }
            break;

        case kObdTypeInt32:
            if (data.size() >= 4)
            {
                int val = qFromLittleEndian<qint32>((const uchar*)data.data());
                dataString = QString("%1")
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for INTEGER32";
            }
            break;

        case kObdTypeUInt64:
            if (data.size() >= 8)
            {
                qulonglong val = qFromLittleEndian<quint64>((const uchar*)data.data());
                dataString = QString("0x%1 = %2")
                                .arg(val, 16, 16, QLatin1Char('0'))
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for UNSIGNED64";
            }
            break;

        case kObdTypeInt64:
            if (data.size() >= 8)
            {
                qlonglong val = qFromLittleEndian<qint64>((const uchar*)data.data());
                dataString = QString("%1")
                                .arg(val);
            }
            else
            {
                dataString = "Too less data for INTEGER64";
            }
            break;

        case kObdTypeVString:
            dataString = QString(data);
            break;

        case kObdTypeDomain:
            dataString = QString(data.toHex());
            break;
    }
    pDataEdit->setText(dataString);

    enableFields(true);
}
//------------------------------------------------------------------------------
void SdoDialog::startWrite()
{
    eObdType obdType;
    int size = 0;
    tOplkError ret;

    enableFields(false);
    readFields();

    obdType = pDataTypeBox->itemData(pDataTypeBox->currentIndex()).value<eObdType>();

    switch (obdType)
    {
        case kObdTypeVString:
            data = pDataEdit->text().toAscii();
            break;

        case kObdTypeDomain:
            data = QByteArray::fromHex(pDataEdit->text().toAscii());
            break;

        default:
            QStringList list = pDataEdit->text().split(QRegExp("[^0-9a-fA-Fx]+"), QString::SkipEmptyParts);
            if (list.count() < 1)
            {
                QMessageBox::critical(this, "Data invalid",
                        "The specified data field does not consist of one number. Please correct and try again.");
                enableFields(true);
                return;
            }
            bool fConvOk = false;
            quint64 uval;
            qint64 val;
            switch (obdType)
            {
                case kObdTypeUInt8:
                case kObdTypeUInt16:
                case kObdTypeUInt32:
                case kObdTypeUInt64:
                    uval = list[0].toULongLong(&fConvOk, 0);
                    if (!fConvOk)
                    {
                        QMessageBox::critical(this, "Data invalid",
                                "The specified data format is not an unsigned integer. Please correct and try again.");
                        enableFields(true);
                        return;
                    }
                    data.resize(8);
                    qToLittleEndian<quint64>(uval, (uchar*)data.data());
                    break;

                case kObdTypeInt8:
                case kObdTypeInt16:
                case kObdTypeInt32:
                case kObdTypeInt64:
                    val = list[0].toLongLong(&fConvOk, 0);
                    if (!fConvOk)
                    {
                        QMessageBox::critical(this, "Data invalid",
                                "The specified data format is not a signed integer. Please correct and try again.");
                        enableFields(true);
                        return;
                    }
                    data.resize(8);
                    qToLittleEndian<qint64>(val, (uchar*)data.data());
                    break;
            }
            switch (obdType)
            {
                case kObdTypeUInt8:
                case kObdTypeInt8:
                    size = 1;
                    break;

                case kObdTypeUInt16:
                case kObdTypeInt16:
                    size = 2;
                    break;

                case kObdTypeUInt32:
                case kObdTypeInt32:
                    size = 4;
                    break;

                case kObdTypeUInt64:
                case kObdTypeInt64:
                    size = 8;
                    break;
            }
            data.resize(size);
    }

    ret = oplk_postUserEvent(writeButton);
    if (ret != kErrorOk)
    {
        enableFields(true);
    }
}