QuaZIP  quazip-0-6-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 3 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 <QString>
29 #include <QStringList>
30 #include <QTextCodec>
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 
187  bool open(Mode mode, zlib_filefunc_def *ioApi =NULL);
189 
211  void close();
213 
218  void setFileNameCodec(QTextCodec *fileNameCodec);
220 
223  void setFileNameCodec(const char *fileNameCodecName);
225  QTextCodec* getFileNameCodec() const;
227 
229  void setCommentCodec(QTextCodec *commentCodec);
231 
234  void setCommentCodec(const char *commentCodecName);
236  QTextCodec* getCommentCodec() const;
238 
243  QString getZipName() const;
245 
250  void setZipName(const QString& zipName);
252 
256  QIODevice *getIoDevice() const;
258 
263  void setIoDevice(QIODevice *ioDevice);
265  Mode getMode() const;
267  bool isOpen() const;
269 
277  int getZipError() const;
279 
282  int getEntriesCount() const;
284  QString getComment() const;
286 
294  void setComment(const QString& comment);
296 
299  bool goToFirstFile();
301 
318  bool goToNextFile();
320 
344  bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
346  bool hasCurrentFile() const;
348 
369  bool getCurrentFileInfo(QuaZipFileInfo* info)const;
371 
379  bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
381 
387  QString getCurrentFileName()const;
389 
404  unzFile getUnzFile();
406 
410  zipFile getZipFile();
412 
435  void setDataDescriptorWritingEnabled(bool enabled);
437 
440  bool isDataDescriptorWritingEnabled() const;
442 
448  QStringList getFileNameList() const;
450 
462  QList<QuaZipFileInfo> getFileInfoList() const;
464 
472  QList<QuaZipFileInfo64> getFileInfoList64() const;
474 
487  void setZip64Enabled(bool zip64);
489 
494  bool isZip64Enabled() const;
496 
499  bool isAutoClose() const;
501 
521  void setAutoClose(bool autoClose) const;
523 
552  static void setDefaultFileNameCodec(QTextCodec *codec);
558  static void setDefaultFileNameCodec(const char *codecName);
559 };
560 
561 #endif
Constants
Useful constants.
Definition: quazip.h:88
ZIP file is not open. This is the initial mode.
Definition: quazip.h:95
ZIP file was created with open() call.
Definition: quazip.h:97
Information about a file inside archive.
Definition: quazipfileinfo.h:37
Mode
Open mode of the ZIP file.
Definition: quazip.h:94
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:77
ZIP file is open for reading files inside it.
Definition: quazip.h:96
ZIP archive.
Definition: quazip.h:84
CaseSensitivity
Case sensitivity for the file names.
Definition: quazip.h:114
All the internal stuff for the QuaZip class.
Definition: quazip.cpp:39