From 42decec24537dfac1f9f1295b6e73d026932ec23 Mon Sep 17 00:00:00 2001 From: stv Date: Wed, 18 Jan 2006 14:23:15 +0000 Subject: [PATCH] no message --- src/QDS/QDS_CheckBox.cxx | 28 ++++++++++++++++++++++++---- src/QDS/QDS_CheckBox.h | 1 + src/QDS/QDS_Datum.cxx | 16 ++++++++++++++++ src/QDS/QDS_Datum.h | 5 +++++ 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/QDS/QDS_CheckBox.cxx b/src/QDS/QDS_CheckBox.cxx index 7f1924d97..f6a8bd450 100644 --- a/src/QDS/QDS_CheckBox.cxx +++ b/src/QDS/QDS_CheckBox.cxx @@ -23,7 +23,10 @@ QDS_CheckBox::~QDS_CheckBox() */ QString QDS_CheckBox::getString() const { - return checkBox() && checkBox()->isChecked() ? "1" : "0"; + QString val; + if ( checkBox() && checkBox()->state() != QButton::NoChange ) + val = checkBox()->isChecked() ? "1" : "0"; + return val; } /*! @@ -31,10 +34,20 @@ QString QDS_CheckBox::getString() const */ void QDS_CheckBox::setString( const QString& txt ) { - bool isOk; - int val = (int)txt.toDouble( &isOk ); - if ( checkBox() ) + if ( !checkBox() ) + return; + + if ( txt.isEmpty() ) + { + checkBox()->setTristate(); + checkBox()->setNoChange(); + } + else + { + bool isOk; + int val = (int)txt.toDouble( &isOk ); checkBox()->setChecked( isOk && val != 0 ); + } } /*! @@ -53,6 +66,7 @@ QWidget* QDS_CheckBox::createControl( QWidget* parent ) QCheckBox* cb = new QCheckBox( parent ); connect( cb, SIGNAL( stateChanged( int ) ), SLOT( onParamChanged() ) ); connect( cb, SIGNAL( toggled( bool ) ), SIGNAL( toggled( bool ) ) ); + connect( cb, SIGNAL( stateChanged( int ) ), this, SLOT( onStateChanged( int ) ) ); return cb; } @@ -64,6 +78,12 @@ void QDS_CheckBox::onParamChanged() emit paramChanged(); } +void QDS_CheckBox::onStateChanged( int state ) +{ + if ( state != QButton::NoChange && checkBox() ) + checkBox()->setTristate( false ); +} + void QDS_CheckBox::setChecked( const bool theState ) { if ( checkBox() ) diff --git a/src/QDS/QDS_CheckBox.h b/src/QDS/QDS_CheckBox.h index 7c04edaad..e6d7c541d 100644 --- a/src/QDS/QDS_CheckBox.h +++ b/src/QDS/QDS_CheckBox.h @@ -21,6 +21,7 @@ signals: private slots: void onParamChanged(); + void onStateChanged( int ); protected: QCheckBox* checkBox() const; diff --git a/src/QDS/QDS_Datum.cxx b/src/QDS/QDS_Datum.cxx index f2a4919ba..f7a76b649 100644 --- a/src/QDS/QDS_Datum.cxx +++ b/src/QDS/QDS_Datum.cxx @@ -283,6 +283,14 @@ QString QDS_Datum::shortDescription() const return sdStr; } +QVariant QDS_Datum::value() const +{ + QVariant val; + if ( !isEmpty() ) + val = stringValue(); + return val; +} + QString QDS_Datum::stringValue() const { initDatum(); @@ -382,6 +390,14 @@ void QDS_Datum::clear() } } +void QDS_Datum::setValue( const QVariant& val ) +{ + if ( val.isValid() && val.canCast( QVariant::String ) ) + setStringValue( val.toString() ); + else + clear(); +} + void QDS_Datum::setStringValue( const QString& txt ) { initDatum(); diff --git a/src/QDS/QDS_Datum.h b/src/QDS/QDS_Datum.h index a3a056d7d..cd0bdd62d 100644 --- a/src/QDS/QDS_Datum.h +++ b/src/QDS/QDS_Datum.h @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -41,6 +42,8 @@ public: QString minimumValue() const; QString maximumValue() const; + virtual QVariant value() const; + virtual QString stringValue() const; virtual double doubleValue() const; virtual int integerValue() const; @@ -52,6 +55,8 @@ public: virtual void reset(); virtual void clear(); + virtual void setValue( const QVariant& ); + virtual void setStringValue( const QString& ); virtual void setDoubleValue( const double ); virtual void setIntegerValue( const int ); -- 2.39.2