@@ -6386,10 +6386,9 @@ void QgisApp::fileOpen()
6386
6386
QgsSettings settings;
6387
6387
QString lastUsedDir = settings.value( QStringLiteral( "UI/lastProjectDir" ), QDir::homePath() ).toString();
6388
6388
6389
-
6390
6389
QStringList fileFilters;
6391
6390
QStringList extensions;
6392
- fileFilters << tr( "QGIS files " ) + QStringLiteral( " (*.qgs *.qgz *.QGS *.QGZ )" );
6391
+ fileFilters << tr( "QGIS Project Formats " ) + QStringLiteral( " (*.qgz *.QGZ *.qgs *.QGS )" );
6393
6392
extensions << QStringLiteral( "qgs" ) << QStringLiteral( "qgz" );
6394
6393
for ( QgsCustomProjectOpenHandler *handler : std::as_const( mCustomProjectOpenHandlers ) )
6395
6394
{
@@ -6636,45 +6635,47 @@ bool QgisApp::fileSave()
6636
6635
QgsSettings settings;
6637
6636
QString lastUsedDir = settings.value( QStringLiteral( "UI/lastProjectDir" ), QDir::homePath() ).toString();
6638
6637
6639
- const QString qgsExt = tr( "QGIS files" ) + " (*.qgs)";
6640
- const QString zipExt = tr( "QGZ files" ) + " (*.qgz)";
6641
-
6642
- QString exts;
6643
6638
Qgis::ProjectFileFormat defaultProjectFileFormat = settings.enumValue( QStringLiteral( "/qgis/defaultProjectFileFormat" ), Qgis::ProjectFileFormat::Qgz );
6644
- switch ( defaultProjectFileFormat )
6645
- {
6646
- case Qgis::ProjectFileFormat::Qgs:
6647
- {
6648
- exts = qgsExt + QStringLiteral( ";;" ) + zipExt;
6649
- break;
6650
- }
6651
- case Qgis::ProjectFileFormat::Qgz:
6652
- {
6653
- exts = zipExt + QStringLiteral( ";;" ) + qgsExt;
6654
- }
6655
- }
6639
+ const QString qgisProjectExt = tr( "QGIS Project Formats" ) + ( defaultProjectFileFormat == Qgis::ProjectFileFormat::Qgz ? " (*.qgz *.QGZ *.qgs *.QGS)" : " (*.qgs *.QGS *.qgz *.QGZ)" );
6640
+ const QString qgzProjectExt = tr( "QGIS Bundled Project Format" ) + " (*.qgz *.QGZ)";
6641
+ const QString qgsProjectExt = tr( "QGIS XML Project Format" ) + " (*.qgs *.QGS)";
6642
+
6656
6643
QString filter;
6657
6644
QString path = QFileDialog::getSaveFileName(
6658
6645
this,
6659
6646
tr( "Choose a QGIS project file" ),
6660
6647
lastUsedDir + '/' + QgsProject::instance()->title(),
6661
- exts , &filter );
6648
+ qgisProjectExt + QStringLiteral( ";;" ) + qgzProjectExt + QStringLiteral( ";;" ) + qgsProjectExt , &filter );
6662
6649
if ( path.isEmpty() )
6663
6650
return false;
6664
6651
6665
- QFileInfo fullPath;
6666
- fullPath.setFile( path );
6652
+ QFileInfo fullPath( path ) ;
6653
+ QgsSettings().setValue( QStringLiteral( "UI/lastProjectDir" ), fullPath. path() );
6667
6654
6668
- // make sure we have the .qgs extension in the file name
6669
- if ( filter == zipExt )
6655
+ const QString ext = fullPath.suffix().toLower();
6656
+ if ( filter == qgisProjectExt && ext != QLatin1String( "qgz" ) && ext != QLatin1String( "qgs" ) )
6670
6657
{
6671
- if ( fullPath.suffix().compare( QLatin1String( "qgz" ), Qt::CaseInsensitive ) != 0 )
6672
- fullPath.setFile( fullPath.filePath() + ".qgz" );
6658
+ switch ( defaultProjectFileFormat )
6659
+ {
6660
+ case Qgis::ProjectFileFormat::Qgs:
6661
+ {
6662
+ fullPath.setFile( fullPath.filePath() + ".qgs" );
6663
+ break;
6664
+ }
6665
+ case Qgis::ProjectFileFormat::Qgz:
6666
+ {
6667
+ fullPath.setFile( fullPath.filePath() + ".qgz" );
6668
+ break;
6669
+ }
6670
+ }
6673
6671
}
6674
- else
6672
+ else if ( filter == qgzProjectExt && ext != QLatin1String( "qgz" ) )
6675
6673
{
6676
- if ( fullPath.suffix().compare( QLatin1String( "qgs" ), Qt::CaseInsensitive ) != 0 )
6677
- fullPath.setFile( fullPath.filePath() + ".qgs" );
6674
+ fullPath.setFile( fullPath.filePath() + ".qgz" );
6675
+ }
6676
+ else if ( filter == qgsProjectExt && ext != QLatin1String( "qgs" ) )
6677
+ {
6678
+ fullPath.setFile( fullPath.filePath() + ".qgs" );
6678
6679
}
6679
6680
6680
6681
QgsProject::instance()->setFileName( fullPath.filePath() );
@@ -6750,45 +6751,47 @@ void QgisApp::fileSaveAs()
6750
6751
defaultPath += QString( '/' + QgsProject::instance()->title() );
6751
6752
}
6752
6753
6753
- const QString qgsExt = tr( "QGIS files" ) + " (*.qgs *.QGS)";
6754
- const QString zipExt = tr( "QGZ files" ) + " (*.qgz)";
6755
-
6756
- QString exts;
6757
6754
Qgis::ProjectFileFormat defaultProjectFileFormat = settings.enumValue( QStringLiteral( "/qgis/defaultProjectFileFormat" ), Qgis::ProjectFileFormat::Qgz );
6758
- switch ( defaultProjectFileFormat )
6759
- {
6760
- case Qgis::ProjectFileFormat::Qgs:
6761
- {
6762
- exts = qgsExt + QStringLiteral( ";;" ) + zipExt;
6763
- break;
6764
- }
6765
- case Qgis::ProjectFileFormat::Qgz:
6766
- {
6767
- exts = zipExt + QStringLiteral( ";;" ) + qgsExt;
6768
- break;
6769
- }
6770
- }
6755
+ const QString qgisProjectExt = tr( "QGIS Project Formats" ) + ( defaultProjectFileFormat == Qgis::ProjectFileFormat::Qgz ? " (*.qgz *.QGZ *.qgs *.QGS)" : " (*.qgs *.QGS *.qgz *.QGZ)" );
6756
+ const QString qgzProjectExt = tr( "QGIS Bundled Project Format" ) + " (*.qgz *.QGZ)";
6757
+ const QString qgsProjectExt = tr( "QGIS XML Project Format" ) + " (*.qgs *.QGS)";
6758
+
6771
6759
QString filter;
6772
- QString path = QFileDialog::getSaveFileName( this,
6773
- tr( "Save Project As" ),
6774
- defaultPath,
6775
- exts, &filter );
6760
+ QString path = QFileDialog::getSaveFileName(
6761
+ this,
6762
+ tr( "Save Project As" ),
6763
+ defaultPath,
6764
+ qgisProjectExt + QStringLiteral( ";;" ) + qgzProjectExt + QStringLiteral( ";;" ) + qgsProjectExt, &filter );
6776
6765
if ( path.isEmpty() )
6777
6766
return;
6778
6767
6779
6768
QFileInfo fullPath( path );
6780
-
6781
6769
QgsSettings().setValue( QStringLiteral( "UI/lastProjectDir" ), fullPath.path() );
6782
6770
6783
- if ( filter == zipExt )
6771
+ const QString ext = fullPath.suffix().toLower();
6772
+ if ( filter == qgisProjectExt && ext != QLatin1String( "qgz" ) && ext != QLatin1String( "qgs" ) )
6784
6773
{
6785
- if ( fullPath.suffix().compare( QLatin1String( "qgz" ), Qt::CaseInsensitive ) != 0 )
6786
- fullPath.setFile( fullPath.filePath() + ".qgz" );
6774
+ switch ( defaultProjectFileFormat )
6775
+ {
6776
+ case Qgis::ProjectFileFormat::Qgs:
6777
+ {
6778
+ fullPath.setFile( fullPath.filePath() + ".qgs" );
6779
+ break;
6780
+ }
6781
+ case Qgis::ProjectFileFormat::Qgz:
6782
+ {
6783
+ fullPath.setFile( fullPath.filePath() + ".qgz" );
6784
+ break;
6785
+ }
6786
+ }
6787
6787
}
6788
- else // .qgs
6788
+ else if ( filter == qgzProjectExt && ext != QLatin1String( "qgz" ) )
6789
6789
{
6790
- if ( fullPath.suffix().compare( QLatin1String( "qgs" ), Qt::CaseInsensitive ) != 0 )
6791
- fullPath.setFile( fullPath.filePath() + ".qgs" );
6790
+ fullPath.setFile( fullPath.filePath() + ".qgz" );
6791
+ }
6792
+ else if ( filter == qgsProjectExt && ext != QLatin1String( "qgs" ) )
6793
+ {
6794
+ fullPath.setFile( fullPath.filePath() + ".qgs" );
6792
6795
}
6793
6796
6794
6797
QgsProject::instance()->setFileName( fullPath.filePath() );
0 commit comments