QuaZip quazip-1-4
quazip.h
1#ifndef QUA_ZIP_H
2#define QUA_ZIP_H
3
4/*
5Copyright (C) 2005-2014 Sergey A. Tachenov
6
7This file is part of QuaZip.
8
9QuaZip is free software: you can redistribute it and/or modify
10it under the terms of the GNU Lesser General Public License as published by
11the Free Software Foundation, either version 2.1 of the License, or
12(at your option) any later version.
13
14QuaZip is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License
20along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
21
22See COPYING file for the full LGPL text.
23
24Original ZIP package is copyrighted by Gilles Vollant, see
25quazip/(un)zip.h files for details, basically it's zlib license.
26 **/
27
28#include <QtCore/QString>
29#include <QtCore/QStringList>
30#include "quazip_qt_compat.h"
31
32#include "zip.h"
33#include "unzip.h"
34
35#include "quazip_global.h"
36#include "quazipfileinfo.h"
37
38// just in case it will be defined in the later versions of the ZIP/UNZIP
39#ifndef UNZ_OPENERROR
40// define additional error code
41#define UNZ_OPENERROR -1000
42#endif
43
44class QuaZipPrivate;
45
47
84class QUAZIP_EXPORT QuaZip {
85 friend class QuaZipPrivate;
86 public:
88 enum Constants {
89 MAX_FILE_NAME_LENGTH=256
92 };
94 enum Mode {
98 mdAppend,
106 mdAdd
107 };
109
115 csDefault=0,
116 csSensitive=1,
117 csInsensitive=2
118 };
120
126 static Qt::CaseSensitivity convertCaseSensitivity(
127 CaseSensitivity cs);
128 private:
129 QuaZipPrivate *p;
130 public:
132
133 QuaZip();
135 QuaZip(const QString& zipName);
137
138 QuaZip(QIODevice *ioDevice);
139 // not (and will not be) implemented
140 QuaZip(const QuaZip& that) = delete;
141 // not (and will not be) implemented
142 QuaZip& operator=(const QuaZip& that) = delete;
144
145 ~QuaZip();
147
193 bool open(Mode mode, zlib_filefunc_def *ioApi =nullptr);
195
222 void close();
224
229 void setFileNameCodec(QTextCodec *fileNameCodec);
231
234 void setFileNameCodec(const char *fileNameCodecName);
236
240 void setOsCode(uint osCode);
242 uint getOsCode() const;
244 QTextCodec* getFileNameCodec() const;
246
248 void setCommentCodec(QTextCodec *commentCodec);
250
253 void setCommentCodec(const char *commentCodecName);
255 QTextCodec* getCommentCodec() const;
257
262 QString getZipName() const;
264
269 void setZipName(const QString& zipName);
271
275 QIODevice *getIoDevice() const;
277
282 void setIoDevice(QIODevice *ioDevice);
284 Mode getMode() const;
286 bool isOpen() const;
288
296 int getZipError() const;
298
301 int getEntriesCount() const;
303 QString getComment() const;
305
313 void setComment(const QString& comment);
315
318 bool goToFirstFile();
320
337 bool goToNextFile();
339
363 bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
365 bool hasCurrentFile() const;
367
388 bool getCurrentFileInfo(QuaZipFileInfo* info)const;
390
398 bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
400
406 QString getCurrentFileName()const;
408
423 unzFile getUnzFile();
425
429 zipFile getZipFile();
431
458 void setDataDescriptorWritingEnabled(bool enabled);
460
463 bool isDataDescriptorWritingEnabled() const;
465
471 QStringList getFileNameList() const;
473
485 QList<QuaZipFileInfo> getFileInfoList() const;
487
495 QList<QuaZipFileInfo64> getFileInfoList64() const;
497
510 void setZip64Enabled(bool zip64);
512
517 bool isZip64Enabled() const;
519
532 void setUtf8Enabled(bool utf8);
534
539 bool isUtf8Enabled() const;
541
544 bool isAutoClose() const;
546
566 void setAutoClose(bool autoClose) const;
568
597 static void setDefaultFileNameCodec(QTextCodec *codec);
603 static void setDefaultFileNameCodec(const char *codecName);
605
608 static void setDefaultOsCode(uint osCode);
610
613 static uint getDefaultOsCode();
614};
615
616#endif
All the internal stuff for the QuaZip class.
Definition: quazip.cpp:41
ZIP archive.
Definition: quazip.h:84
Mode
Open mode of the ZIP file.
Definition: quazip.h:94
@ mdCreate
ZIP file was created with open() call.
Definition: quazip.h:97
@ mdUnzip
ZIP file is open for reading files inside it.
Definition: quazip.h:96
@ mdNotOpen
ZIP file is not open. This is the initial mode.
Definition: quazip.h:95
CaseSensitivity
Case sensitivity for the file names.
Definition: quazip.h:114
Constants
Useful constants.
Definition: quazip.h:88
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:85
Information about a file inside archive.
Definition: quazipfileinfo.h:45