29 #include <QStandardPaths>
33 : mDir( new QTemporaryDir() )
38 : mFiles( other.mFiles )
39 , mDir( new QTemporaryDir() )
47 mFiles = other.mFiles;
48 mDir.reset(
new QTemporaryDir() );
61 mDir.reset(
new QTemporaryDir() );
67 QString tempPath = QStandardPaths::standardLocations( QStandardPaths::TempLocation ).at( 0 );
68 QString uuid = QUuid::createUuid().toString();
69 QFile tmpFile( tempPath + QDir::separator() + uuid );
74 QString err = QObject::tr(
"Unable to zip content" );
80 if ( QFile::exists( filename ) )
81 QFile::remove( filename );
86 dwAttrs = GetFileAttributes( tmpFile.fileName().toLocal8Bit( ).data( ) );
87 SetFileAttributes( tmpFile.fileName().toLocal8Bit( ).data( ), dwAttrs & ~ FILE_ATTRIBUTE_TEMPORARY );
91 if ( ! tmpFile.rename( filename ) )
93 QString err = QObject::tr(
"Unable to save zip file '%1'" ).arg( filename );
109 mFiles.append( file );
116 if ( !file.isEmpty() && mFiles.contains( file ) && QFile::exists( file ) )
117 rc = QFile::remove( file );
119 mFiles.removeOne( file );
131 const auto constFiles =
files();
132 for (
const QString &file : constFiles )
134 QFileInfo fileInfo( file );
135 if ( fileInfo.suffix().compare( QLatin1String(
"qgs" ), Qt::CaseInsensitive ) == 0 )
159 const QStringList fileList =
files();
160 for (
const QString &file : fileList )
162 const QFileInfo fileInfo( file );
163 if ( fileInfo.suffix().compare( extension, Qt::CaseInsensitive ) == 0 )
Class allowing to manage the zip/unzip actions.
QgsArchive & operator=(const QgsArchive &other)
virtual bool unzip(const QString &zipFilename)
Clear the current content of this archive and unzip.
bool zip(const QString &zipFilename)
Zip the content of this archive.
void clear()
Clear the current content of this archive and create a new temporary directory.
void addFile(const QString &filename)
Add a new file to this archive.
bool removeFile(const QString &filename)
Remove a file from this archive and from the filesystem.
QString dir() const
Returns the current temporary directory.
QStringList files() const
Returns the list of files within this archive.
static QString extension()
Returns the extension used for auxiliary databases.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
QString projectFile() const
Returns the current .qgs project file or an empty string if there's none.
QString auxiliaryStorageFile() const
Returns the current .qgd auxiliary storage file or an empty string if there's none.
bool clearProjectFile()
Remove the current .qgs project file from the temporary directory.
bool unzip(const QString &zipFilename) override
Clear the current content of this archive and unzip.
CORE_EXPORT bool unzip(const QString &zip, const QString &dir, QStringList &files)
Unzip a zip file in an output directory.
CORE_EXPORT bool zip(const QString &zip, const QStringList &files)
Zip the list of files in the zip file.