FFSM++  1.1.0
French Forest Sector Model ++
zip.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Filename: zip.h
3 ** Last updated [dd/mm/yyyy]: 01/02/2007
4 **
5 ** pkzip 2.0 file compression.
6 **
7 ** Some of the code has been inspired by other open source projects,
8 ** (mainly Info-Zip and Gilles Vollant's minizip).
9 ** Compression and decompression actually uses the zlib library.
10 **
11 ** Copyright (C) 2007 Angius Fabrizio. All rights reserved.
12 **
13 ** This file is part of the OSDaB project (http://osdab.sourceforge.net/).
14 **
15 ** This file may be distributed and/or modified under the terms of the
16 ** GNU General Public License version 2 as published by the Free Software
17 ** Foundation and appearing in the file LICENSE.GPL included in the
18 ** packaging of this file.
19 **
20 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
21 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22 **
23 ** See the file LICENSE.GPL that came with this software distribution or
24 ** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
25 **
26 **********************************************************************/
27 
28 #ifndef OSDAB_ZIP__H
29 #define OSDAB_ZIP__H
30 
31 #include <QtGlobal>
32 #include <QMap>
33 
34 #include <zlib.h>
35 
36 class ZipPrivate;
37 
38 class QIODevice;
39 class QFile;
40 class QDir;
41 class QStringList;
42 class QString;
43 
44 
45 class Zip
46 {
47 public:
48  enum ErrorCode
49  {
50  Ok,
60  };
61 
63  {
68  };
69 
71  {
72  //! Does not preserve absolute paths in the zip file when adding a file/directory (default)
73  RelativePaths = 0x0001,
74  //! Preserve absolute paths
75  AbsolutePaths = 0x0002,
76  //! Do not store paths. All the files are put in the (evtl. user defined) root of the zip file
77  IgnorePaths = 0x0004
78  };
79  Q_DECLARE_FLAGS(CompressionOptions, CompressionOption)
80 
81  Zip();
82  virtual ~Zip();
83 
84  bool isOpen() const;
85 
86  void setPassword(const QString& pwd);
87  void clearPassword();
88  QString password() const;
89 
90  ErrorCode createArchive(const QString& file, bool overwrite = true);
91  ErrorCode createArchive(QIODevice* device);
92 
93  QString archiveComment() const;
94  void setArchiveComment(const QString& comment);
95 
96  ErrorCode addDirectoryContents(const QString& path, CompressionLevel level = AutoFull);
97  ErrorCode addDirectoryContents(const QString& path, const QString& root, CompressionLevel level = AutoFull);
98 
99  ErrorCode addDirectory(const QString& path, CompressionOptions options = RelativePaths, CompressionLevel level = AutoFull);
100  ErrorCode addDirectory(const QString& path, const QString& root, CompressionLevel level = AutoFull);
101  ErrorCode addDirectory(const QString& path, const QString& root, CompressionOptions options = RelativePaths, CompressionLevel level = AutoFull);
102 
104 
105  QString formatError(ErrorCode c) const;
106 
107 private:
109 };
110 
111 Q_DECLARE_OPERATORS_FOR_FLAGS(Zip::CompressionOptions)
112 
113 #endif // OSDAB_ZIP__H
Zip file compression.
Definition: zip.h:45
Definition: zip.h:50
ErrorCode createArchive(const QString &file, bool overwrite=true)
Definition: zip.cpp:268
void setPassword(const QString &pwd)
Definition: zip.cpp:246
void setArchiveComment(const QString &comment)
Definition: zip.cpp:317
QString archiveComment() const
Definition: zip.cpp:308
bool isOpen() const
Definition: zip.cpp:235
Do not store paths. All the files are put in the (evtl. user defined) root of the zip file...
Definition: zip.h:77
CompressionOption
Definition: zip.h:70
ErrorCode closeArchive()
Definition: zip.cpp:465
QString password() const
Returns the currently used password.
Definition: zip.cpp:258
ZipPrivate * d
Definition: zip.h:108
ErrorCode
Definition: zip.h:48
Definition: zip.h:64
CompressionLevel
Definition: zip.h:62
ErrorCode addDirectory(const QString &path, CompressionOptions options=RelativePaths, CompressionLevel level=AutoFull)
Definition: zip.cpp:333
ErrorCode addDirectoryContents(const QString &path, CompressionLevel level=AutoFull)
Definition: zip.cpp:351
Preserve absolute paths.
Definition: zip.h:75
void clearPassword()
Convenience method, clears the current password.
Definition: zip.cpp:252
QString formatError(ErrorCode c) const
Definition: zip.cpp:475
Does not preserve absolute paths in the zip file when adding a file/directory (default) ...
Definition: zip.h:73