Adds more explicit error message when auxiliary storage is saved

This commit is contained in:
Blottiere Paul 2018-10-01 09:57:27 +01:00 committed by Nyall Dawson
parent 119cd8ace9
commit 1ecc57d2a2
3 changed files with 35 additions and 10 deletions

View File

@ -626,15 +626,33 @@ bool QgsAuxiliaryStorage::duplicateTable( const QgsDataSourceUri &ogrUri, const
return rc;
}
bool QgsAuxiliaryStorage::saveAs( const QString &filename ) const
QString QgsAuxiliaryStorage::errorString() const
{
if ( QFile::exists( filename ) )
QFile::remove( filename );
return QFile::copy( currentFileName(), filename );
return mErrorString;
}
bool QgsAuxiliaryStorage::saveAs( const QgsProject &project ) const
bool QgsAuxiliaryStorage::saveAs( const QString &filename )
{
mErrorString.clear();
QFile dest( filename );
if ( dest.exists() && !dest.remove() )
{
mErrorString = dest.errorString();
return false;
}
QFile origin( currentFileName() );
if ( !origin.copy( filename ) )
{
mErrorString = origin.errorString();
return false;
}
return true;
}
bool QgsAuxiliaryStorage::saveAs( const QgsProject &project )
{
return saveAs( filenameForProject( project ) );
}

View File

@ -319,12 +319,14 @@ class CORE_EXPORT QgsAuxiliaryStorage
*/
QString currentFileName() const;
QString errorString() const;
/**
* Saves the current database to a new path.
*
* \returns true if everything is saved, false otherwise
*/
bool saveAs( const QString &filename ) const;
bool saveAs( const QString &filename );
/**
* Saves the current database to a new path for a specific project.
@ -333,7 +335,7 @@ class CORE_EXPORT QgsAuxiliaryStorage
*
* \returns true if everything is saved, false otherwise
*/
bool saveAs( const QgsProject &project ) const;
bool saveAs( const QgsProject &project );
/**
* Saves the current database.
@ -408,6 +410,7 @@ class CORE_EXPORT QgsAuxiliaryStorage
QString mFileName; // original filename
QString mTmpFileName; // temporary filename used in copy mode
bool mCopy = false;
QString mErrorString;
};
#endif

View File

@ -1649,7 +1649,10 @@ bool QgsProject::write()
// errors raised during writing project file are more important
if ( !asOk && writeOk )
setError( tr( "Unable to save auxiliary storage" ) );
{
const QString err = mAuxiliaryStorage->errorString();
setError( tr( "Unable to save auxiliary storage ('%1')" ).arg( err ) );
}
return asOk && writeOk;
}
@ -2614,7 +2617,8 @@ bool QgsProject::zip( const QString &filename )
if ( ! saveAuxiliaryStorage( asFileName ) )
{
setError( tr( "Unable to save auxiliary storage" ) );
const QString err = mAuxiliaryStorage->errorString();
setError( tr( "Unable to save auxiliary storage ('%1')" ).arg( err ) );
return false;
}