Merge branch 'master' into app-list-itemsize
[kugel-rb.git] / rbutil / rbutilqt / zip / zip.h
blobdfe5deb0640ee0be10471f34b226630a36cd1a0a
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.
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_ZIP__H
29 #define OSDAB_ZIP__H
31 #include <QtGlobal>
32 #include <QMap>
34 #include <zlib/zlib.h>
36 class ZipPrivate;
38 class QIODevice;
39 class QFile;
40 class QDir;
41 class QStringList;
42 class QString;
45 class Zip
47 public:
48 enum ErrorCode
50 Ok,
51 ZlibInit,
52 ZlibError,
53 FileExists,
54 OpenFailed,
55 NoOpenArchive,
56 FileNotFound,
57 ReadFailed,
58 WriteFailed,
59 SeekFailed
62 enum CompressionLevel
64 Store,
65 Deflate1 = 1, Deflate2, Deflate3, Deflate4,
66 Deflate5, Deflate6, Deflate7, Deflate8, Deflate9,
67 AutoCPU, AutoMIME, AutoFull
70 enum CompressionOption
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
79 Q_DECLARE_FLAGS(CompressionOptions, CompressionOption)
81 Zip();
82 virtual ~Zip();
84 bool isOpen() const;
86 void setPassword(const QString& pwd);
87 void clearPassword();
88 QString password() const;
90 ErrorCode createArchive(const QString& file, bool overwrite = true);
91 ErrorCode createArchive(QIODevice* device);
93 QString archiveComment() const;
94 void setArchiveComment(const QString& comment);
96 ErrorCode addDirectoryContents(const QString& path, CompressionLevel level = AutoFull);
97 ErrorCode addDirectoryContents(const QString& path, const QString& root, CompressionLevel level = AutoFull);
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);
103 ErrorCode closeArchive();
105 QString formatError(ErrorCode c) const;
107 virtual void progress() {}
109 private:
110 ZipPrivate* d;
113 Q_DECLARE_OPERATORS_FOR_FLAGS(Zip::CompressionOptions)
115 #endif // OSDAB_ZIP__H