29 #include <QStandardPaths> 33 : mDir( new QTemporaryDir() )
38 : mFiles( other.mFiles )
39 , mDir( new QTemporaryDir() )
46 mFiles = other.mFiles;
58 mDir.reset(
new QTemporaryDir() );
64 QString tempPath = QStandardPaths::standardLocations( QStandardPaths::TempLocation ).at( 0 );
65 QString uuid = QUuid::createUuid().toString();
66 QFile tmpFile( tempPath + QDir::separator() + uuid );
71 QString err = QObject::tr(
"Unable to zip content" );
77 if ( QFile::exists( filename ) )
78 QFile::remove( filename );
83 dwAttrs = GetFileAttributes( tmpFile.fileName().toLocal8Bit( ).data( ) );
84 SetFileAttributes( tmpFile.fileName().toLocal8Bit( ).data( ), dwAttrs & ~ FILE_ATTRIBUTE_TEMPORARY );
88 if ( ! tmpFile.rename( filename ) )
90 QString err = QObject::tr(
"Unable to save zip file '%1'" ).arg( filename );
106 mFiles.append( file );
113 if ( !file.isEmpty() && mFiles.contains( file ) && QFile::exists( file ) )
114 rc = QFile::remove( file );
116 mFiles.removeOne( file );
128 const auto constFiles =
files();
129 for (
const QString &file : constFiles )
131 QFileInfo fileInfo( file );
132 if ( fileInfo.suffix().compare( QLatin1String(
"qgs" ), Qt::CaseInsensitive ) == 0 )
142 return ! projectFile().isEmpty();
156 const QStringList fileList =
files();
157 for (
const QString &file : fileList )
159 const QFileInfo fileInfo( file );
160 if ( fileInfo.suffix().compare( extension, Qt::CaseInsensitive ) == 0 )
Class allowing to manage the zip/unzip actions.
bool unzip(const QString &zipFilename) override
Clear the current content of this archive and unzip.
void clear()
Clear the current content of this archive and create a new temporary directory.
bool removeFile(const QString &filename)
Remove a file from this archive and from the filesystem.
bool zip(const QString &zipFilename)
Zip the content of this archive.
static QString extension()
Returns the extension used for auxiliary databases.
CORE_EXPORT bool unzip(const QString &zip, const QString &dir, QStringList &files)
Unzip a zip file in an output directory.
QString projectFile() const
Returns the current .qgs project file or an empty string if there's none.
virtual bool unzip(const QString &zipFilename)
Clear the current content of this archive and unzip.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
QgsArchive & operator=(const QgsArchive &other)
void addFile(const QString &filename)
Add a new file to this archive.
QStringList files() const
Returns the list of files within this archive.
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.
CORE_EXPORT bool zip(const QString &zip, const QStringList &files)
Zip the list of files in the zip file.
QString dir() const
Returns the current temporary directory.