void QGeneralSettingWidget::RequestGeneralSetting( bool bDefault )
{
    if( !m_pT3kHandle )
        return;

    m_RequestSensorData.Stop();

    char cQ = bDefault ? '*' : '?';

    QString str( cQ );
    m_RequestSensorData.AddItem( cstrInputMode, str );
    bool bSupportDOCmd = QT3kUserData::GetInstance()->GetFirmwareVersion() >= MM_MIN_SUPPORT_DISPLAYORICMD_VERSION;
    if( bSupportDOCmd )
        m_RequestSensorData.AddItem( cstrDisplayOrientation, "?" );

    QCustomDefaultSensor* pInstance = QCustomDefaultSensor::Instance();
    if( pInstance->IsLoaded() )
        m_pT3kHandle->sendCommand( QString("%1%2").arg(cstrInputMode).arg(pInstance->GetDefaultData(cstrInputMode, str)), true );
    else
        m_pT3kHandle->sendCommand( QString("%1%2").arg(cstrInputMode).arg(cQ), true );

    if( bSupportDOCmd )
        m_pT3kHandle->sendCommand( QString("%1%2").arg(cstrDisplayOrientation).arg(cQ), true );

    m_RequestSensorData.Start( m_pT3kHandle );

    if( bDefault )
    {
        int nDefineIndex = QLangManager::instance()->getDefaultLanguage();
        for( int i=0; i<CBLLanguage->count(); i++ )
        {
            bool bOK = false;
            int nItemIdx = CBLLanguage->itemData( i ).toInt( &bOK );
            if( bOK && nItemIdx == nDefineIndex )
            {
                CBLLanguage->setCurrentIndex( i );
                on_CBLLanguage_activated( i );
                break;
            }
        }

        QSettings RegOption( "Habilience", "T3kCfg" );
        RegOption.beginGroup( "Options" );
        RegOption.setValue( "TrayIcon", false );
        RegOption.endGroup();

        chkTrayIcon->setChecked( false );

        if( !bSupportDOCmd )
            m_pT3kHandle->sendCommand( QString("%1*").arg(cstrCalibration), true );
    }

    m_RequestSensorData.AddItem( cstrUsbConfigMode, "?" );
    m_nChkUsbCfgMode = m_pT3kHandle->sendCommand( QString("%1?").arg(cstrUsbConfigMode), true );
}
void QNMouseProfileWidget::requestSensorData( bool bDefault )
{
    m_RequestCmdManager.Stop();

    m_bDefault = bDefault;

    char cQ = bDefault ? '*' : '?';

    QCustomDefaultSensor* pInstance = QCustomDefaultSensor::Instance();
    if( pInstance->IsLoaded() )
    {
        QString strQ = QString( cQ );
        QString strP1 = pInstance->GetDefaultData( cstrMouseProfile1, strQ );
        QString strP2 = pInstance->GetDefaultData( cstrMouseProfile2, strQ );

        m_RequestCmdManager.AddItem( cstrMouseProfile1, strP1 );
        m_RequestCmdManager.AddItem( cstrMouseProfile2, strP2 );
    }
    else
    {
        QString str( cQ );
        m_RequestCmdManager.AddItem( cstrMouseProfile1, str );
        m_RequestCmdManager.AddItem( cstrMouseProfile2, str );
    }

    m_RequestCmdManager.AddItem( cstrUsbConfigMode, "?" );
    m_nChkUsbCfgMode = m_pT3kHandle->sendCommand( QString("%1?").arg(cstrUsbConfigMode), true );

    int nRet = 3;
    do
    {
    if( !m_pT3kHandle->sendCommand( QString("%1?").arg(cstrInputMode), false ) )
        nRet--;
    else
        break;
    } while( nRet );

    if( !nRet ) m_RequestCmdManager.AddItem( cstrInputMode, "?" );

    m_RequestCmdManager.AddItem( cstrMouseProfile, "?" );

    m_RequestCmdManager.Start( m_pT3kHandle );
}