Salome HOME
#571 - Land Cover: calculation of Strickler coefficient
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_CalculationDlg.cxx
index b170a72b63634d4b2b4598d846668812815c4465..7e1530197d4783f896faab2911b5cb548298be71 100644 (file)
@@ -490,7 +490,7 @@ QWizardPage* HYDROGUI_CalculationDlg::createLandCoverZonesPage() {
 
   QGridLayout* aLayout = new QGridLayout( aPage );
   
-  myLandCoverBrowser = new HYDROGUI_DataBrowser( module(), NULL, aPage );
+  myLandCoverBrowser = new HYDROGUI_DataBrowser( module(), NULL, aPage, true );
   myLandCoverBrowser->setAutoOpenLevel( 3 );
   aLayout->setMargin( 5 );
   aLayout->setSpacing( 5 );
@@ -503,8 +503,8 @@ QWizardPage* HYDROGUI_CalculationDlg::createLandCoverZonesPage() {
   myStricklerTypeLabel->setVisible( false );
   myStricklerTypeChoice->setVisible( false );  
 
-  aLayout->addWidget( myBathymetryLabel, 1, 0 );
-  aLayout->addWidget( myBathymetryChoice, 1, 1 );
+  aLayout->addWidget( myStricklerTypeLabel, 1, 0 );
+  aLayout->addWidget( myStricklerTypeChoice, 1, 1 );
 
   aPage->setLayout( aLayout );
 
@@ -626,7 +626,7 @@ void HYDROGUI_CalculationDlg::onSelected( SUIT_DataObject* theObject )
     myBathymetryChoice->addItem( tr("MERGE_UNKNOWN"), HYDROData_Zone::Merge_UNKNOWN );
     myBathymetryChoice->addItem( tr("MERGE_ZMIN"), HYDROData_Zone::Merge_ZMIN );
     myBathymetryChoice->addItem( tr("MERGE_ZMAX"), HYDROData_Zone::Merge_ZMAX );
-    QStringList aList = aZone->getAltitudes();
+    QStringList aList = aZone->getObjects();
     for ( int i = 0; i < aList.length(); i++ )
     {
       myBathymetryChoice->addItem( aList.at( i ), HYDROData_Zone::Merge_Object );
@@ -672,7 +672,7 @@ void HYDROGUI_CalculationDlg::onLandCoverZoneSelected( SUIT_DataObject* theObjec
     myCurrentZone = aZone;
     myStricklerTypeChoice->clear();
     myStricklerTypeChoice->addItem( tr("MERGE_UNKNOWN"), HYDROData_Zone::Merge_UNKNOWN );
-    /*QStringList aList = aZone->getStricklerTypes();
+    QStringList aList = aZone->getObjects();
     for ( int i = 0; i < aList.length(); i++ )
     {
       myStricklerTypeChoice->addItem( aList.at( i ), HYDROData_Zone::Merge_Object );
@@ -687,13 +687,13 @@ void HYDROGUI_CalculationDlg::onLandCoverZoneSelected( SUIT_DataObject* theObjec
       default:
         aCurIndex = 0; // Select unknown by default
     }
-    myStricklerTypeChoice->setCurrentIndex( aCurIndex );*/
+    myStricklerTypeChoice->setCurrentIndex( aCurIndex );
     myStricklerTypeChoice->blockSignals( prevBlock );
   }
 
   myStricklerTypeChoice->setVisible( doShow );
   myStricklerTypeChoice->setEnabled( getLandCoverMode() == HYDROData_CalculationCase::MANUAL );
-  myStricklerTypeChoice->setVisible( doShow );
+  myStricklerTypeLabel->setVisible( doShow );
 }
 
 void HYDROGUI_CalculationDlg::onMergeStricklerTypeSelected( int theIndex )
@@ -706,7 +706,35 @@ void HYDROGUI_CalculationDlg::onMergeStricklerTypeSelected( int theIndex )
 void HYDROGUI_CalculationDlg::onLandCoverZonesDropped( const QList<SUIT_DataObject*>& theList, 
     SUIT_DataObject* theTargetParent, int theTargetRow, Qt::DropAction theDropAction )
 {
-  // TODO: implement this function
+  QList<SUIT_DataObject*> aZonesList;
+  HYDROGUI_Zone* aZone;
+  // Get a list of dropped land cover zones
+  for ( int i = 0; i < theList.length(); i++ )
+  {
+    aZone = dynamic_cast<HYDROGUI_Zone*>( theList.at( i ) );
+    if ( aZone )
+    {
+      aZonesList.append( aZone );
+    }
+  }
+  if ( aZonesList.length() > 0 )
+  {
+    // Get the target region
+    HYDROGUI_NamedObject* aRegionsRoot = dynamic_cast<HYDROGUI_NamedObject*>(theTargetParent);
+    if ( aRegionsRoot )
+    {
+      // Create a new region
+      emit createLandCoverRegion( aZonesList );
+    }
+    else
+    {
+      HYDROGUI_Region* aRegion = dynamic_cast<HYDROGUI_Region*>(theTargetParent);
+      if ( aRegion )
+      {
+        emit moveZones( theTargetParent, aZonesList, true );
+      }
+    }
+  }
 }
 
 void HYDROGUI_CalculationDlg::setObjectName( const QString& theName )