Skip to content

Commit a332ff9

Browse files
committedDec 20, 2016
Apply editor widget project upgrades in any case
1 parent aa64688 commit a332ff9

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed
 

‎src/core/qgsprojectfiletransform.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
typedef QgsProjectVersion PFV;
3636

3737

38-
QgsProjectFileTransform::transform QgsProjectFileTransform::transformers[] =
38+
QgsProjectFileTransform::TransformItem QgsProjectFileTransform::sTransformers[] =
3939
{
4040
{PFV( 0, 8, 0 ), PFV( 0, 8, 1 ), &QgsProjectFileTransform::transformNull},
4141
{PFV( 0, 8, 1 ), PFV( 0, 9, 0 ), &QgsProjectFileTransform::transform081to090},
@@ -60,23 +60,27 @@ QgsProjectFileTransform::transform QgsProjectFileTransform::transformers[] =
6060
{PFV( 2, 0, 0 ), PFV( 2, 1, 0 ), &QgsProjectFileTransform::transformNull},
6161
{PFV( 2, 1, 0 ), PFV( 2, 2, 0 ), &QgsProjectFileTransform::transformNull},
6262
{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},
6467
};
6568

6669
bool QgsProjectFileTransform::updateRevision( const QgsProjectVersion& newVersion )
6770
{
6871
Q_UNUSED( newVersion );
6972
bool returnValue = false;
7073

71-
if ( ! mDom.isNull() )
74+
if ( !mDom.isNull() )
7275
{
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++ )
7477
{
75-
if ( transformers[i].from == mCurrentVersion )
78+
const TransformItem& transformer = sTransformers[i];
79+
if ( transformer.from == mCurrentVersion || transformer.from.isNull() )
7680
{
7781
// 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;
8084
returnValue = true;
8185
}
8286
}
@@ -614,7 +618,7 @@ void QgsProjectFileTransform::transform2200to2300()
614618
}
615619
}
616620

617-
void QgsProjectFileTransform::transform2180to2990()
621+
void QgsProjectFileTransform::transform2990()
618622
{
619623
QDomNodeList mapLayers = mDom.elementsByTagName( QStringLiteral( "maplayer" ) );
620624

‎src/core/qgsprojectfiletransform.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
#include <QString>
3030
#include <QDomDocument>
31-
#include <vector>
3231
#include "qgsprojectversion.h"
3332

3433
class QgsRasterLayer;
@@ -69,9 +68,9 @@ class CORE_EXPORT QgsProjectFileTransform
6968
QgsProjectVersion from;
7069
QgsProjectVersion to;
7170
void ( QgsProjectFileTransform::* transformFunc )();
72-
} transform;
71+
} TransformItem;
7372

74-
static transform transformers[];
73+
static TransformItem sTransformers[];
7574

7675
QDomDocument mDom;
7776
QgsProjectVersion mCurrentVersion;
@@ -88,7 +87,7 @@ class CORE_EXPORT QgsProjectFileTransform
8887
void transform1400to1500();
8988
void transform1800to1900();
9089
void transform2200to2300();
91-
void transform2180to2990();
90+
void transform2990();
9291

9392
//helper functions
9493
static int rasterBandNumber( const QDomElement &rasterPropertiesElem, const QString &bandName, QgsRasterLayer *rlayer );

‎src/core/qgsprojectversion.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,8 @@ QString QgsProjectVersion::text()
100100
return QStringLiteral( "%1.%2.%3-%4" ).arg( mMajor ).arg( mMinor ).arg( mSub ).arg( mName );
101101
}
102102
}
103+
104+
bool QgsProjectVersion::isNull() const
105+
{
106+
return mMajor == 0 && mMinor == 0 && mSub == 0;
107+
}

‎src/core/qgsprojectversion.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class CORE_EXPORT QgsProjectVersion
3232

3333
public:
3434

35+
/**
36+
* Creates a new NULL version
37+
*/
3538
QgsProjectVersion()
3639
: mMajor( 0 )
3740
, mMinor( 0 )
@@ -45,6 +48,11 @@ class CORE_EXPORT QgsProjectVersion
4548
int subVersion() { return mSub;}
4649
QString text();
4750

51+
/**
52+
* Returns true if this is a NULL project version.
53+
*/
54+
bool isNull() const;
55+
4856
/** Boolean equal operator
4957
*/
5058
bool operator==( const QgsProjectVersion &other ) const;

0 commit comments

Comments
 (0)
Please sign in to comment.