Merge branch 'master' into app-list-itemsize
[kugel-rb.git] / rbutil / rbutilqt / zip / unzip.h
blob4839e1202706c2031e3289dcc77a998025bfa9b5
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.
11 ** Copyright (C) 2007-2008 Angius Fabrizio. All rights reserved.
13 ** This file is part of the OSDaB project (http://osdab.sourceforge.net/).
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.
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.
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.
26 **********************************************************************/
28 #ifndef OSDAB_UNZIP__H
29 #define OSDAB_UNZIP__H
31 #include <QtGlobal>
32 #include <QMap>
33 #include <QDateTime>
35 #include <zlib/zlib.h>
37 class UnzipPrivate;
38 class QIODevice;
39 class QFile;
40 class QDir;
41 class QStringList;
42 class QString;
45 class UnZip
47 public:
48 enum ErrorCode
50 Ok,
51 ZlibInit,
52 ZlibError,
53 OpenFailed,
54 PartiallyCorrupted,
55 Corrupted,
56 WrongPassword,
57 NoOpenArchive,
58 FileNotFound,
59 ReadFailed,
60 WriteFailed,
61 SeekFailed,
62 CreateDirFailed,
63 InvalidDevice,
64 InvalidArchive,
65 HeaderConsistencyError,
67 Skip, SkipAll // internal use only
70 enum ExtractionOption
72 //! Extracts paths (default)
73 ExtractPaths = 0x0001,
74 //! Ignores paths and extracts all the files to the same directory
75 SkipPaths = 0x0002
77 Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
79 enum CompressionMethod
81 NoCompression, Deflated, UnknownCompression
84 enum FileType
86 File, Directory
89 struct ZipEntry
91 ZipEntry();
93 QString filename;
94 QString comment;
96 quint32 compressedSize;
97 quint32 uncompressedSize;
98 quint32 crc32;
100 QDateTime lastModified;
102 CompressionMethod compression;
103 FileType type;
105 bool encrypted;
108 UnZip();
109 virtual ~UnZip();
111 bool isOpen() const;
113 ErrorCode openArchive(const QString& filename);
114 ErrorCode openArchive(QIODevice* device);
115 void closeArchive();
117 QString archiveComment() const;
119 QString formatError(UnZip::ErrorCode c) const;
121 bool contains(const QString& file) const;
123 QStringList fileList() const;
124 QList<ZipEntry> entryList() const;
126 ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
127 ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
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);
133 ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
134 ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
136 void setPassword(const QString& pwd);
138 private:
139 UnzipPrivate* d;
142 Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
144 #endif // OSDAB_UNZIP__H