@ -20,6 +20,7 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
@@ -20,6 +20,7 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
ui ( new Ui : : QGCParamSlider )
{
ui - > setupUi ( this ) ;
ui - > intValueSpinBox - > hide ( ) ;
uas = NULL ;
scaledInt = ui - > valueSlider - > maximum ( ) - ui - > valueSlider - > minimum ( ) ;
@ -45,12 +46,14 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
@@ -45,12 +46,14 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
connect ( ui - > editSelectComponentComboBox , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( selectComponent ( int ) ) ) ;
connect ( ui - > editSelectParamComboBox , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( selectParameter ( int ) ) ) ;
connect ( ui - > valueSlider , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( setSliderValue ( int ) ) ) ;
connect ( ui - > valueSpinBox , SIGNAL ( valueChanged ( double ) ) , this , SLOT ( setParamValue ( double ) ) ) ;
connect ( ui - > doubleValueSpinBox , SIGNAL ( valueChanged ( double ) ) , this , SLOT ( setParamValue ( double ) ) ) ;
connect ( ui - > intValueSpinBox , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( setParamValue ( int ) ) ) ;
connect ( ui - > editNameLabel , SIGNAL ( textChanged ( QString ) ) , ui - > nameLabel , SLOT ( setText ( QString ) ) ) ;
connect ( ui - > readButton , SIGNAL ( clicked ( ) ) , this , SLOT ( requestParameter ( ) ) ) ;
connect ( ui - > editRefreshParamsButton , SIGNAL ( clicked ( ) ) , this , SLOT ( refreshParamList ( ) ) ) ;
// Set the current UAS if present
connect ( UASManager : : instance ( ) , SIGNAL ( activeUASSet ( UASInterface * ) ) , this , SLOT ( setActiveUAS ( UASInterface * ) ) ) ;
setActiveUAS ( UASManager : : instance ( ) - > getActiveUAS ( ) ) ;
// Get param value
@ -66,21 +69,26 @@ void QGCParamSlider::refreshParamList()
@@ -66,21 +69,26 @@ void QGCParamSlider::refreshParamList()
{
ui - > editSelectParamComboBox - > setEnabled ( true ) ;
ui - > editSelectComponentComboBox - > setEnabled ( true ) ;
if ( uas ) {
if ( uas )
{
uas - > getParamManager ( ) - > requestParameterList ( ) ;
}
}
void QGCParamSlider : : setActiveUAS ( UASInterface * activeUas )
{
if ( activeUas ) {
if ( uas ) {
disconnect ( uas , SIGNAL ( parameterChanged ( int , int , int , int , QString , float ) ) , this , SLOT ( setParameterValue ( int , int , int , int , QString , float ) ) ) ;
if ( activeUas )
{
if ( uas )
{
disconnect ( uas , SIGNAL ( parameterChanged ( int , int , int , int , QString , QVariant ) ) , this , SLOT ( setParameterValue ( int , int , int , int , QString , QVariant ) ) ) ;
}
// Connect buttons and signals
connect ( activeUas , SIGNAL ( parameterChanged ( int , int , int , int , QString , floa t) ) , this , SLOT ( setParameterValue ( int , int , int , int , QString , floa t) ) , Qt : : UniqueConnection ) ;
connect ( activeUas , SIGNAL ( parameterChanged ( int , int , int , int , QString , QVarian t) ) , this , SLOT ( setParameterValue ( int , int , int , int , QString , QVarian t) ) , Qt : : UniqueConnection ) ;
uas = activeUas ;
// Update current param value
requestParameter ( ) ;
}
}
@ -98,6 +106,12 @@ void QGCParamSlider::setParamValue(double value)
@@ -98,6 +106,12 @@ void QGCParamSlider::setParamValue(double value)
ui - > valueSlider - > setValue ( floatToScaledInt ( value ) ) ;
}
void QGCParamSlider : : setParamValue ( int value )
{
parameterValue = value ;
ui - > valueSlider - > setValue ( floatToScaledInt ( value ) ) ;
}
void QGCParamSlider : : selectComponent ( int componentIndex )
{
this - > component = ui - > editSelectComponentComboBox - > itemData ( componentIndex ) . toInt ( ) ;
@ -111,7 +125,8 @@ void QGCParamSlider::selectParameter(int paramIndex)
@@ -111,7 +125,8 @@ void QGCParamSlider::selectParameter(int paramIndex)
void QGCParamSlider : : startEditMode ( )
{
ui - > valueSlider - > hide ( ) ;
ui - > valueSpinBox - > hide ( ) ;
ui - > doubleValueSpinBox - > hide ( ) ;
ui - > intValueSpinBox - > hide ( ) ;
ui - > nameLabel - > hide ( ) ;
ui - > writeButton - > hide ( ) ;
ui - > readButton - > hide ( ) ;
@ -156,7 +171,21 @@ void QGCParamSlider::endEditMode()
@@ -156,7 +171,21 @@ void QGCParamSlider::endEditMode()
ui - > writeButton - > show ( ) ;
ui - > readButton - > show ( ) ;
ui - > valueSlider - > show ( ) ;
ui - > valueSpinBox - > show ( ) ;
switch ( parameterValue . type ( ) )
{
case QVariant : : Int :
ui - > intValueSpinBox - > show ( ) ;
break ;
case QVariant : : UInt :
ui - > intValueSpinBox - > show ( ) ;
break ;
case QMetaType : : Float :
ui - > doubleValueSpinBox - > show ( ) ;
break ;
default :
qCritical ( ) < < " ERROR: NO VALID PARAM TYPE " ;
return ;
}
ui - > nameLabel - > show ( ) ;
isInEditMode = false ;
emit editingFinished ( ) ;
@ -164,10 +193,20 @@ void QGCParamSlider::endEditMode()
@@ -164,10 +193,20 @@ void QGCParamSlider::endEditMode()
void QGCParamSlider : : sendParameter ( )
{
if ( uas ) {
if ( uas )
{
// Set value, param manager handles retransmission
uas - > getParamManager ( ) - > setParameter ( component , parameterName , parameterValue ) ;
} else {
if ( uas - > getParamManager ( ) )
{
uas - > getParamManager ( ) - > setParameter ( component , parameterName , parameterValue ) ;
}
else
{
qDebug ( ) < < " UAS HAS NO PARAM MANAGER, DOING NOTHING " ;
}
}
else
{
qDebug ( ) < < __FILE__ < < __LINE__ < < " NO UAS SET, DOING NOTHING " ;
}
}
@ -175,9 +214,21 @@ void QGCParamSlider::sendParameter()
@@ -175,9 +214,21 @@ void QGCParamSlider::sendParameter()
void QGCParamSlider : : setSliderValue ( int sliderValue )
{
parameterValue = scaledIntToFloat ( sliderValue ) ;
ui - > valueSpinBox - > setValue ( parameterValue ) ;
// QString unit("");
// ui->valueLabel->setText(QString("%1 %2").arg(parameterValue, 6, 'f', 6, ' ').arg(unit));
switch ( parameterValue . type ( ) )
{
case QVariant : : Int :
ui - > intValueSpinBox - > setValue ( parameterValue . toInt ( ) ) ;
break ;
case QVariant : : UInt :
ui - > intValueSpinBox - > setValue ( parameterValue . toUInt ( ) ) ;
break ;
case QMetaType : : Float :
ui - > doubleValueSpinBox - > setValue ( parameterValue . toFloat ( ) ) ;
break ;
default :
qCritical ( ) < < " ERROR: NO VALID PARAM TYPE " ;
return ;
}
}
/**
@ -186,38 +237,67 @@ void QGCParamSlider::setSliderValue(int sliderValue)
@@ -186,38 +237,67 @@ void QGCParamSlider::setSliderValue(int sliderValue)
* @ brief parameterName Key / name of the parameter
* @ brief value Value of the parameter
*/
void QGCParamSlider : : setParameterValue ( int uas , int component , int paramCount , int paramIndex , QString parameterName , floa t value )
void QGCParamSlider : : setParameterValue ( int uas , int component , int paramCount , int paramIndex , QString parameterName , QVarian t value )
{
Q_UNUSED ( paramCount ) ;
// Check if this component and parameter are part of the list
bool found = false ;
for ( int i = 0 ; i < ui - > editSelectComponentComboBox - > count ( ) ; + + i ) {
if ( component = = ui - > editSelectComponentComboBox - > itemData ( i ) . toInt ( ) ) {
for ( int i = 0 ; i < ui - > editSelectComponentComboBox - > count ( ) ; + + i )
{
if ( component = = ui - > editSelectComponentComboBox - > itemData ( i ) . toInt ( ) )
{
found = true ;
}
}
if ( ! found ) {
if ( ! found )
{
ui - > editSelectComponentComboBox - > addItem ( tr ( " Component #%1 " ) . arg ( component ) , component ) ;
}
// Parameter checking
found = false ;
for ( int i = 0 ; i < ui - > editSelectParamComboBox - > count ( ) ; + + i ) {
if ( parameterName = = ui - > editSelectParamComboBox - > itemText ( i ) ) {
for ( int i = 0 ; i < ui - > editSelectParamComboBox - > count ( ) ; + + i )
{
if ( parameterName = = ui - > editSelectParamComboBox - > itemText ( i ) )
{
found = true ;
}
}
if ( ! found ) {
if ( ! found )
{
ui - > editSelectParamComboBox - > addItem ( parameterName , paramIndex ) ;
}
Q_UNUSED ( uas ) ;
if ( component = = this - > component & & parameterName = = this - > parameterName ) {
if ( component = = this - > component & & parameterName = = this - > parameterName )
{
parameterValue = value ;
ui - > valueSpinBox - > setValue ( value ) ;
ui - > valueSlider - > setValue ( floatToScaledInt ( value ) ) ;
switch ( value . type ( ) )
{
case QVariant : : Int :
ui - > intValueSpinBox - > show ( ) ;
ui - > doubleValueSpinBox - > hide ( ) ;
ui - > intValueSpinBox - > setValue ( value . toDouble ( ) ) ;
ui - > intValueSpinBox - > setMinimum ( - ui - > intValueSpinBox - > maximum ( ) ) ;
break ;
case QVariant : : UInt :
ui - > intValueSpinBox - > show ( ) ;
ui - > doubleValueSpinBox - > hide ( ) ;
ui - > intValueSpinBox - > setValue ( value . toDouble ( ) ) ;
ui - > intValueSpinBox - > setMinimum ( 0 ) ;
break ;
case QMetaType : : Float :
ui - > doubleValueSpinBox - > setValue ( value . toDouble ( ) ) ;
ui - > doubleValueSpinBox - > show ( ) ;
ui - > intValueSpinBox - > hide ( ) ;
break ;
default :
qCritical ( ) < < " ERROR: NO VALID PARAM TYPE " ;
return ;
}
ui - > valueSlider - > setValue ( floatToScaledInt ( value . toDouble ( ) ) ) ;
}
}