diff --git a/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h b/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h index ce0c2bdff632b08ced8aed91824fc8a4ec4ab6b2..b970cef9ced016345000b7060dd5ee14b835b3ba 100644 --- a/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h +++ b/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h @@ -139,6 +139,12 @@ public: */ void ToWgs84( const PointType &, PointType & wgs84, double & alt ) const; + /** Setter for the m_Name attribute ( should be initialized by subclasses )*/ + void SetName(const QString & name); + + /** Getter for the m_Name attribute */ + const QString & GetName() const; + /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/ // @@ -198,6 +204,7 @@ private: // Private attributes. private: + QString m_Name; /*-[ PRIVATE SLOTS SECTION ]-----------------------------------------------*/ // diff --git a/Modules/Visualization/MonteverdiCore/src/mvdAbstractLayerModel.cxx b/Modules/Visualization/MonteverdiCore/src/mvdAbstractLayerModel.cxx index caac49abe2f462224d343443057d2f3756ede2ef..84aefd2297d55080fac6423027ef6026412e3c40 100644 --- a/Modules/Visualization/MonteverdiCore/src/mvdAbstractLayerModel.cxx +++ b/Modules/Visualization/MonteverdiCore/src/mvdAbstractLayerModel.cxx @@ -114,7 +114,8 @@ GetSpatialReferenceType( const std::string & wkt, bool hasKwl ) AbstractLayerModel ::AbstractLayerModel( QObject* p ) : AbstractModel( p ), - VisibleInterface() + VisibleInterface(), + m_Name(QString()) { } @@ -180,6 +181,25 @@ AbstractLayerModel virtual_ToWgs84( p, wgs84, alt ); } +/*****************************************************************************/ +void +AbstractLayerModel +::SetName(const QString & name) +{ + if (name != m_Name) + { + m_Name = name; + } +} + +/*****************************************************************************/ +const QString & +AbstractLayerModel +::GetName() const +{ + return m_Name; +} + /*******************************************************************************/ bool AbstractLayerModel diff --git a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx index c60019e18f46af3927d9534b8907b09f87760878..378763d26e561bbc8bae2c0c51ac923dd80a3e58 100644 --- a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx +++ b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx @@ -94,6 +94,7 @@ VectorImageModel ::SetFilename( const QString& filename , int w, int h) { setObjectName( filename ); + SetName( QFileInfo( filename ).fileName() ); // 1. store the input filename FilenameInterface::SetFilename( filename ); diff --git a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx index e6c7a548b4f5d8257ee7c4b0e4cf4f3b1db68b2f..cc073ecd5faf604eb108b92a48e7eccfde4e58c6 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx @@ -423,6 +423,7 @@ LayerStackItemModel } break; + case Qt::EditRole: case Qt::DisplayRole: switch( idx.column() ) { @@ -447,21 +448,7 @@ LayerStackItemModel break; case COLUMN_NAME: - if( layer->inherits( - VectorImageModel::staticMetaObject.className() ) ) - { - const VectorImageModel * vectorImageModel = - qobject_cast< const VectorImageModel * >( layer ); - assert( vectorImageModel!=NULL ); - - // qDebug() << "filename:" << vectorImageModel->GetFilename(); - - return QFileInfo( vectorImageModel->GetFilename() ).fileName(); - } - else - { - qDebug() << "Unhandled AbstractLayerModel subclass."; - } + return layer->GetName(); break; case COLUMN_EFFECT: @@ -842,7 +829,7 @@ LayerStackItemModel // qDebug() // << this << "::setData(" << idx << "," << value << "," << role << ")"; - if( idx.column()==COLUMN_NAME && role==Qt::CheckStateRole ) + if( idx.column()==COLUMN_NAME ) { // qDebug() << idx.row() << "check-state:" << value; @@ -856,30 +843,45 @@ LayerStackItemModel assert( layer!=NULL ); assert( layer==dynamic_cast< VisibleInterface * >( layer ) ); - VisibleInterface * interface = dynamic_cast< VisibleInterface * >( layer ); assert( interface!=NULL ); - switch( value.toInt() ) + switch( role ) { - case Qt::Checked: - interface->SetVisible( true ); + case Qt::EditRole: + { + QString strValue = value.toString(); + if( !strValue.isEmpty() ) + { + layer->SetName( strValue ); + emit dataChanged( idx, idx ); + return true; + } + } break; - - case Qt::Unchecked: - interface->SetVisible( false ); + case Qt::CheckStateRole: + switch( value.toInt() ) + { + case Qt::Checked: + interface->SetVisible( true ); + break; + + case Qt::Unchecked: + interface->SetVisible( false ); + break; + + default: + assert( false && "Unhandled Qt::CheckedState value." ); + break; + } + emit dataChanged( idx, idx ); + return true; break; default: - assert( false && "Unhandled Qt::CheckedState value." ); break; } - - emit dataChanged( idx, idx ); - - return true; } - return false; }