QuaZip  quazip-1-2
quazip.h
1 #ifndef QUA_ZIP_H
2 #define QUA_ZIP_H
3 
4 /*
5 Copyright (C) 2005-2014 Sergey A. Tachenov
6 
7 This file is part of QuaZip.
8 
9 QuaZip is free software: you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation, either version 2.1 of the License, or
12 (at your option) any later version.
13 
14 QuaZip is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU Lesser General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License
20 along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
21 
22 See COPYING file for the full LGPL text.
23 
24 Original ZIP package is copyrighted by Gilles Vollant, see
25 quazip/(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 
44 class QuaZipPrivate;
45 
47 
84 class 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  // not (and will not be) implemented
131  QuaZip(const QuaZip& that);
132  // not (and will not be) implemented
133  QuaZip& operator=(const QuaZip& that);
134  public:
136 
137  QuaZip();
139  QuaZip(const QString& zipName);
141 
142  QuaZip(QIODevice *ioDevice);
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