diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2007-07-25 20:21:06 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2007-07-25 20:21:06 +0000 |
commit | 680408f4ac8b04d716fd8921c01b73d30a3c66c7 (patch) | |
tree | 08908a7d5e3b95daa9a1d3ed0703e64cff712022 /rbutil/rbutilqt/zip/unzip.h | |
parent | aa643db434e230643e18e454032fb708e0f1848d (diff) | |
download | rockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.tar.gz rockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.zip |
First stab at porting rbutil to Qt4. Currently only installing a current or archived build is working. To build, run qmake && make in the source folder. Beware that the syntax of rbutil.ini has slightly changed. Caching of the downloaded files is also still missing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13989 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/zip/unzip.h')
-rw-r--r-- | rbutil/rbutilqt/zip/unzip.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/zip/unzip.h b/rbutil/rbutilqt/zip/unzip.h new file mode 100644 index 0000000000..a48fbe8724 --- /dev/null +++ b/rbutil/rbutilqt/zip/unzip.h | |||
@@ -0,0 +1,144 @@ | |||
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/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, | ||
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, | ||
66 | |||
67 | Skip, SkipAll // internal use only | ||
68 | }; | ||
69 | |||
70 | enum ExtractionOption | ||
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 | |||
79 | enum CompressionMethod | ||
80 | { | ||
81 | NoCompression, Deflated, UnknownCompression | ||
82 | }; | ||
83 | |||
84 | enum FileType | ||
85 | { | ||
86 | File, Directory | ||
87 | }; | ||
88 | |||
89 | typedef struct ZipEntry | ||
90 | { | ||
91 | ZipEntry(); | ||
92 | |||
93 | QString filename; | ||
94 | QString comment; | ||
95 | |||
96 | quint32 compressedSize; | ||
97 | quint32 uncompressedSize; | ||
98 | quint32 crc32; | ||
99 | |||
100 | QDateTime lastModified; | ||
101 | |||
102 | CompressionMethod compression; | ||
103 | FileType type; | ||
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: | ||
139 | UnzipPrivate* d; | ||
140 | }; | ||
141 | |||
142 | Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions) | ||
143 | |||
144 | #endif // OSDAB_UNZIP__H | ||