35
35
typedef QgsProjectVersion PFV;
36
36
37
37
38
- QgsProjectFileTransform::transform QgsProjectFileTransform::transformers [] =
38
+ QgsProjectFileTransform::TransformItem QgsProjectFileTransform::sTransformers [] =
39
39
{
40
40
{PFV ( 0 , 8 , 0 ), PFV ( 0 , 8 , 1 ), &QgsProjectFileTransform::transformNull},
41
41
{PFV ( 0 , 8 , 1 ), PFV ( 0 , 9 , 0 ), &QgsProjectFileTransform::transform081to090},
@@ -60,23 +60,27 @@ QgsProjectFileTransform::transform QgsProjectFileTransform::transformers[] =
60
60
{PFV ( 2 , 0 , 0 ), PFV ( 2 , 1 , 0 ), &QgsProjectFileTransform::transformNull},
61
61
{PFV ( 2 , 1 , 0 ), PFV ( 2 , 2 , 0 ), &QgsProjectFileTransform::transformNull},
62
62
{PFV ( 2 , 2 , 0 ), PFV ( 2 , 3 , 0 ), &QgsProjectFileTransform::transform2200to2300},
63
- {PFV ( 2 , 18 , 0 ), PFV ( 2 , 99 , 0 ), &QgsProjectFileTransform::transform2180to2990},
63
+ // A transformer with a NULL from version means that it should be run when upgrading
64
+ // from any version and will take care that it's not going to cause trouble if it's
65
+ // run several times on the same file.
66
+ {PFV (), PFV ( 2 , 99 , 0 ), &QgsProjectFileTransform::transform2990},
64
67
};
65
68
66
69
bool QgsProjectFileTransform::updateRevision ( const QgsProjectVersion& newVersion )
67
70
{
68
71
Q_UNUSED ( newVersion );
69
72
bool returnValue = false ;
70
73
71
- if ( ! mDom .isNull () )
74
+ if ( !mDom .isNull () )
72
75
{
73
- for ( std::size_t i = 0 ; i < sizeof ( transformers ) / sizeof ( transform ); i++ )
76
+ for ( std::size_t i = 0 ; i < sizeof ( sTransformers ) / sizeof ( TransformItem ); i++ )
74
77
{
75
- if ( transformers[i].from == mCurrentVersion )
78
+ const TransformItem& transformer = sTransformers [i];
79
+ if ( transformer.from == mCurrentVersion || transformer.from .isNull () )
76
80
{
77
81
// Run the transformer, and update the revision in every case
78
- ( this ->*( transformers[i] .transformFunc ) )();
79
- mCurrentVersion = transformers[i] .to ;
82
+ ( this ->*( transformer .transformFunc ) )();
83
+ mCurrentVersion = transformer .to ;
80
84
returnValue = true ;
81
85
}
82
86
}
@@ -614,7 +618,7 @@ void QgsProjectFileTransform::transform2200to2300()
614
618
}
615
619
}
616
620
617
- void QgsProjectFileTransform::transform2180to2990 ()
621
+ void QgsProjectFileTransform::transform2990 ()
618
622
{
619
623
QDomNodeList mapLayers = mDom .elementsByTagName ( QStringLiteral ( " maplayer" ) );
620
624
0 commit comments