From f9b24eea1d0adbe99bd8d1819cbbda4c48158481 Mon Sep 17 00:00:00 2001
From: Otmane Lahlou <otmane.lahlou@c-s.fr>
Date: Thu, 22 Sep 2011 17:34:46 +0200
Subject: [PATCH] ENH : implement missing method in the EmptyParamter class in
 the core and QtGUI wrapper

---
 .../otbWrapperEmptyParameter.h                | 32 +++++++++++++++++--
 .../otbWrapperQtWidgetEmptyParameter.cxx      | 16 ++++++++++
 .../otbWrapperQtWidgetEmptyParameter.h        |  3 ++
 3 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/Code/ApplicationEngine/otbWrapperEmptyParameter.h b/Code/ApplicationEngine/otbWrapperEmptyParameter.h
index f8ce212852..49e73812f1 100644
--- a/Code/ApplicationEngine/otbWrapperEmptyParameter.h
+++ b/Code/ApplicationEngine/otbWrapperEmptyParameter.h
@@ -44,10 +44,35 @@ public:
   /** RTTI support */
   itkTypeMacro(EmptyParameter, Parameter);
 
+  bool HasValue() const
+  {
+    return m_Value;
+  }
+  
+  virtual void ClearValue()
+  {
+    m_Value = false;
+  }
+
+  /** Set the value */
+  void SetValue( bool value)
+  {
+    // TODO check minimum/maximum
+    m_Value = value;
+    SetActive(true);
+  }
+
+  /** 
+    * Implement the reset method (replace value by default value = false)
+    */
+  virtual void Reset()
+  {
+    m_Value = false;
+  }
 
 protected:
   /** Constructor */
-  EmptyParameter()
+  EmptyParameter():m_Value(false)
   {}
 
   /** Destructor */
@@ -58,7 +83,10 @@ private:
   EmptyParameter(const EmptyParameter &); //purposely not implemented
   void operator =(const EmptyParameter&); //purposely not implemented
 
-}; // End class Parameter
+  /** Value */
+  bool         m_Value;
+
+}; // End class EmptyParameter
 
 } // End namespace Wrapper
 } // End namespace otb
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.cxx
index 22b2f0363f..6834692d89 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.cxx
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.cxx
@@ -46,6 +46,7 @@ void QtWidgetEmptyParameter::DoCreateWidget()
 
   m_QCheckBox = new QCheckBox;
   m_QCheckBox->setToolTip(m_EmptyParam->GetDescription());
+  connect(m_QCheckBox, SIGNAL(stateChanged(int)), this, SLOT(SetValue(int)));
 
   QString optionID(m_EmptyParam->GetName());
   m_QHBoxLayout->addWidget(m_QCheckBox);
@@ -54,5 +55,20 @@ void QtWidgetEmptyParameter::DoCreateWidget()
   this->setLayout(m_QHBoxLayout);
 }
 
+void QtWidgetEmptyParameter::SetValue( int value )
+{
+  switch(value)
+    {
+    case Qt::Unchecked:
+      m_EmptyParam->SetValue(false);
+      break;
+    case Qt::PartiallyChecked:
+      break;
+    case Qt::Checked:
+      m_EmptyParam->SetValue(true);
+      break;
+    }
+}
+
 }
 }
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.h
index d733bc868f..18eee1c0c4 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.h
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameter.h
@@ -38,6 +38,9 @@ public:
   QtWidgetEmptyParameter(EmptyParameter*, QtWidgetModel*);
   virtual ~QtWidgetEmptyParameter();
 
+protected slots:
+  void SetValue( int value );
+
 private:
   QtWidgetEmptyParameter(const QtWidgetEmptyParameter&); //purposely not implemented
   void operator=(const QtWidgetEmptyParameter&); //purposely not implemented
-- 
GitLab