QuaZIP  quazip-0-6-1
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 
192  void close();
194 
199  void setFileNameCodec(QTextCodec *fileNameCodec);
201 
204  void setFileNameCodec(const char *fileNameCodecName);
206  QTextCodec* getFileNameCodec() const;
208 
210  void setCommentCodec(QTextCodec *commentCodec);
212 
215  void setCommentCodec(const char *commentCodecName);
217  QTextCodec* getCommentCodec() const;
219 
224  QString getZipName() const;
226 
231  void setZipName(const QString& zipName);
233 
237  QIODevice *getIoDevice() const;
239 
244  void setIoDevice(QIODevice *ioDevice);
246  Mode getMode() const;
248  bool isOpen() const;
250 
258  int getZipError() const;
260 
263  int getEntriesCount() const;
265  QString getComment() const;
267 
275  void setComment(const QString& comment);
277 
280  bool goToFirstFile();
282 
299  bool goToNextFile();
301 
325  bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
327  bool hasCurrentFile() const;
329 
350  bool getCurrentFileInfo(QuaZipFileInfo* info)const;
352 
360  bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
362 
368  QString getCurrentFileName()const;
370 
385  unzFile getUnzFile();
387 
391  zipFile getZipFile();
393 
416  void setDataDescriptorWritingEnabled(bool enabled);
418 
421  bool isDataDescriptorWritingEnabled() const;
423 
429  QStringList getFileNameList() const;
431 
443  QList<QuaZipFileInfo> getFileInfoList() const;
445 
453  QList<QuaZipFileInfo64> getFileInfoList64() const;
455 
465  void setZip64Enabled(bool zip64);
467 
472  bool isZip64Enabled() const;
474 
503  static void setDefaultFileNameCodec(QTextCodec *codec);
509  static void setDefaultFileNameCodec(const char *codecName);
510 };
511 
512 #endif