FFSM++  1.1.0
French Forest Sector Model ++
unzip.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Filename: unzip.h
3 ** Last updated [dd/mm/yyyy]: 28/01/2007
4 **
5 ** pkzip 2.0 decompression.
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_UNZIP__H
29 #define OSDAB_UNZIP__H
30 
31 #include <QtGlobal>
32 #include <QMap>
33 #include <QDateTime>
34 
35 #include <zlib.h>
36 
37 class UnzipPrivate;
38 class QIODevice;
39 class QFile;
40 class QDir;
41 class QStringList;
42 class QString;
43 
44 
45 class UnZip
46 {
47 public:
48  enum ErrorCode
49  {
50  Ok,
66 
67  Skip, SkipAll // internal use only
68  };
69 
71  {
72  //! Extracts paths (default)
73  ExtractPaths = 0x0001,
74  //! Ignores paths and extracts all the files to the same directory
75  SkipPaths = 0x0002
76  };
77  Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
78 
80  {
82  };
83 
84  enum FileType
85  {
87  };
88 
89  typedef struct ZipEntry
90  {
91  ZipEntry();
92 
93  QString filename;
94  QString comment;
95 
96  quint32 compressedSize;
98  quint32 crc32;
99 
100  QDateTime lastModified;
101 
104 
105  bool encrypted;
106  };
107 
108  UnZip();
109  virtual ~UnZip();
110 
111  bool isOpen() const;
112 
113  ErrorCode openArchive(const QString& filename);
114  ErrorCode openArchive(QIODevice* device);
115  void closeArchive();
116 
117  QString archiveComment() const;
118 
119  QString formatError(UnZip::ErrorCode c) const;
120 
121  bool contains(const QString& file) const;
122 
123  QStringList fileList() const;
124  QList<ZipEntry> entryList() const;
125 
126  ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
127  ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
128 
129  ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
130  ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
131  ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
132 
133  ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
134  ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
135 
136  void setPassword(const QString& pwd);
137 
138 private:
140 };
141 
142 Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
143 
144 #endif // OSDAB_UNZIP__H
QDateTime lastModified
Definition: unzip.h:100
ErrorCode extractAll(const QString &dirname, ExtractionOptions options=ExtractPaths)
Definition: unzip.cpp:325
ErrorCode
Definition: unzip.h:48
QString filename
Definition: unzip.h:93
QStringList fileList() const
Definition: unzip.cpp:281
bool isOpen() const
Definition: unzip.cpp:182
void closeArchive()
Definition: unzip.cpp:226
QList< ZipEntry > entryList() const
Definition: unzip.cpp:289
quint32 crc32
Definition: unzip.h:98
CompressionMethod compression
Definition: unzip.h:102
UnzipPrivate * d
Definition: unzip.h:139
virtual ~UnZip()
Definition: unzip.cpp:173
PKZip 2.0 file decompression. Compatibility with later versions is not ensured as they may use unsupp...
Definition: unzip.h:45
bool contains(const QString &file) const
Definition: unzip.cpp:270
quint32 uncompressedSize
Definition: unzip.h:97
bool encrypted
Definition: unzip.h:105
QString archiveComment() const
Definition: unzip.cpp:231
Ignores paths and extracts all the files to the same directory.
Definition: unzip.h:75
QString formatError(UnZip::ErrorCode c) const
Definition: unzip.cpp:241
Extracts paths (default)
Definition: unzip.h:73
quint32 compressedSize
Definition: unzip.h:96
ExtractionOption
Definition: unzip.h:70
FileType type
Definition: unzip.h:103
ErrorCode extractFile(const QString &filename, const QString &dirname, ExtractionOptions options=ExtractPaths)
Definition: unzip.cpp:380
QString comment
Definition: unzip.h:94
FileType
Definition: unzip.h:84
ErrorCode extractFiles(const QStringList &filenames, const QString &dirname, ExtractionOptions options=ExtractPaths)
Definition: unzip.cpp:423
ErrorCode openArchive(const QString &filename)
Definition: unzip.cpp:190
CompressionMethod
Definition: unzip.h:79
void setPassword(const QString &pwd)
Definition: unzip.cpp:463
UnZip()
Definition: unzip.cpp:165