QGIS API Documentation  3.8.0-Zanzibar (11aff65)
qgsarchive.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsarchive.h
3  ----------------
4 
5  begin : July 07, 2017
6  copyright : (C) 2017 by Paul Blottiere
7  email : paul.blottiere@oslandia.com
8  ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #ifndef QGSARCHIVE_H
20 #define QGSARCHIVE_H
21 
22 #include "qgis_core.h"
23 
24 #include <QStringList>
25 #include <QTemporaryFile>
26 #include <QTemporaryDir>
27 #include <memory>
28 
35 class CORE_EXPORT QgsArchive
36 {
37  public:
38 
42  QgsArchive();
43 
47  QgsArchive( const QgsArchive &other );
48 
49  QgsArchive &operator=( const QgsArchive &other );
50 
54  virtual ~QgsArchive() = default;
55 
61  bool zip( const QString &zipFilename );
62 
69  virtual bool unzip( const QString &zipFilename );
70 
75  void clear();
76 
82  void addFile( const QString &filename );
83 
89  bool removeFile( const QString &filename );
90 
94  QStringList files() const;
95 
99  QString dir() const;
100 
101  private:
102  // content of the archive
103  QStringList mFiles;
104 
105  // used when unzip is performed
106  std::unique_ptr<QTemporaryDir> mDir;
107 };
108 
115 class CORE_EXPORT QgsProjectArchive : public QgsArchive
116 {
117  public:
118 
126  bool unzip( const QString &zipFilename ) override;
127 
131  QString projectFile() const;
132 
137  bool clearProjectFile();
138 
143  QString auxiliaryStorageFile() const;
144 };
145 
146 #endif
Class allowing to manage the zip/unzip actions.
Definition: qgsarchive.h:35
Class allowing to manage the zip/unzip actions on project file.
Definition: qgsarchive.h:115
CORE_EXPORT bool unzip(const QString &zip, const QString &dir, QStringList &files)
Unzip a zip file in an output directory.
Definition: qgsziputils.cpp:34
virtual bool unzip(const QString &zipFilename)
Clear the current content of this archive and unzip.
Definition: qgsarchive.cpp:86
CORE_EXPORT bool zip(const QString &zip, const QStringList &files)
Zip the list of files in the zip file.