[QGIS Commit] r15687 - trunk/qgis/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Apr 9 16:37:36 EDT 2011
Author: jef
Date: 2011-04-09 13:37:36 -0700 (Sat, 09 Apr 2011)
New Revision: 15687
Modified:
trunk/qgis/src/core/qgsvectorlayer.cpp
trunk/qgis/src/core/qgsvectorlayer.h
Log:
fix #3057
Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp 2011-04-09 20:35:06 UTC (rev 15686)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp 2011-04-09 20:37:36 UTC (rev 15687)
@@ -2679,14 +2679,14 @@
}
mJoinBuffer->readXml( layer_node );
+ updateFieldMap();
+
QString errorMsg;
if ( !readSymbology( layer_node, errorMsg ) )
{
return false;
}
- updateFieldMap();
-
return mValid; // should be true if read successfully
} // void QgsVectorLayer::readXml
@@ -3039,16 +3039,27 @@
if ( !aliasesNode.isNull() )
{
QDomElement aliasElem;
- int index;
QString name;
QDomNodeList aliasNodeList = aliasesNode.toElement().elementsByTagName( "alias" );
for ( int i = 0; i < aliasNodeList.size(); ++i )
{
aliasElem = aliasNodeList.at( i ).toElement();
- index = aliasElem.attribute( "index" ).toInt();
- name = aliasElem.attribute( "name" );
- mAttributeAliasMap.insert( index, name );
+
+ QString field;
+ if ( aliasElem.hasAttribute( "field" ) )
+ {
+ field = aliasElem.attribute( "field" );
+ }
+ else
+ {
+ int index = aliasElem.attribute( "index" ).toInt();
+
+ if ( pendingFields().contains( index ) )
+ field = pendingFields()[ index ].name();
+ }
+
+ mAttributeAliasMap.insert( field, aliasElem.attribute( "name" ) );
}
}
@@ -3217,11 +3228,16 @@
if ( mAttributeAliasMap.size() > 0 )
{
QDomElement aliasElem = doc.createElement( "aliases" );
- QMap<int, QString>::const_iterator a_it = mAttributeAliasMap.constBegin();
+ QMap<QString, QString>::const_iterator a_it = mAttributeAliasMap.constBegin();
for ( ; a_it != mAttributeAliasMap.constEnd(); ++a_it )
{
+ int idx = fieldNameIndex( a_it.key() );
+ if( idx < 0 )
+ continue;
+
QDomElement aliasEntryElem = doc.createElement( "alias" );
- aliasEntryElem.setAttribute( "index", QString::number( a_it.key() ) );
+ aliasEntryElem.setAttribute( "field", a_it.key() );
+ aliasEntryElem.setAttribute( "index", idx );
aliasEntryElem.setAttribute( "name", a_it.value() );
aliasElem.appendChild( aliasEntryElem );
}
@@ -3317,21 +3333,23 @@
void QgsVectorLayer::addAttributeAlias( int attIndex, QString aliasString )
{
- mAttributeAliasMap.insert( attIndex, aliasString );
+ if ( !pendingFields().contains( attIndex ) )
+ return;
+
+ QString name = pendingFields()[ attIndex ].name();
+
+ mAttributeAliasMap.insert( name, aliasString );
emit layerModified( false );
}
QString QgsVectorLayer::attributeAlias( int attributeIndex ) const
{
- QMap<int, QString>::const_iterator alias_it = mAttributeAliasMap.find( attributeIndex );
- if ( alias_it != mAttributeAliasMap.constEnd() )
- {
- return alias_it.value();
- }
- else
- {
- return QString();
- }
+ if ( !pendingFields().contains( attributeIndex ) )
+ return "";
+
+ QString name = pendingFields()[ attributeIndex ].name();
+
+ return mAttributeAliasMap.value( name, "" );
}
QString QgsVectorLayer::attributeDisplayName( int attributeIndex ) const
@@ -3369,7 +3387,6 @@
mDeletedAttributeIds.insert( index );
mAddedAttributeIds.remove( index );
mUpdatedFields.remove( index );
- mAttributeAliasMap.remove( index );
setModified( true, false );
Modified: trunk/qgis/src/core/qgsvectorlayer.h
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.h 2011-04-09 20:35:06 UTC (rev 15686)
+++ trunk/qgis/src/core/qgsvectorlayer.h 2011-04-09 20:37:36 UTC (rev 15687)
@@ -884,8 +884,8 @@
/** field map to commit */
QgsFieldMap mUpdatedFields;
- /**Map that stores the aliases for attributes. Key is the attribute index and value the alias for that attribute*/
- QMap<int, QString> mAttributeAliasMap;
+ /**Map that stores the aliases for attributes. Key is the attribute name and value the alias for that attribute*/
+ QMap< QString, QString > mAttributeAliasMap;
/** max field index */
int mMaxUpdatedIndex;
More information about the QGIS-commit
mailing list