QuaZIP quazip-0-7-2
quazip.h
00001 #ifndef QUA_ZIP_H
00002 #define QUA_ZIP_H
00003 
00004 /*
00005 Copyright (C) 2005-2014 Sergey A. Tachenov
00006 
00007 This file is part of QuaZIP.
00008 
00009 QuaZIP is free software: you can redistribute it and/or modify
00010 it under the terms of the GNU Lesser General Public License as published by
00011 the Free Software Foundation, either version 2.1 of the License, or
00012 (at your option) any later version.
00013 
00014 QuaZIP is distributed in the hope that it will be useful,
00015 but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License
00020 along with QuaZIP.  If not, see <http://www.gnu.org/licenses/>.
00021 
00022 See COPYING file for the full LGPL text.
00023 
00024 Original ZIP package is copyrighted by Gilles Vollant, see
00025 quazip/(un)zip.h files for details, basically it's zlib license.
00026  **/
00027 
00028 #include <QString>
00029 #include <QStringList>
00030 #include <QTextCodec>
00031 
00032 #include "zip.h"
00033 #include "unzip.h"
00034 
00035 #include "quazip_global.h"
00036 #include "quazipfileinfo.h"
00037 
00038 // just in case it will be defined in the later versions of the ZIP/UNZIP
00039 #ifndef UNZ_OPENERROR
00040 // define additional error code
00041 #define UNZ_OPENERROR -1000
00042 #endif
00043 
00044 class QuaZipPrivate;
00045 
00047 
00084 class QUAZIP_EXPORT QuaZip {
00085   friend class QuaZipPrivate;
00086   public:
00088     enum Constants {
00089       MAX_FILE_NAME_LENGTH=256 
00092     };
00094     enum Mode {
00095       mdNotOpen, 
00096       mdUnzip, 
00097       mdCreate, 
00098       mdAppend, 
00106       mdAdd 
00107     };
00109 
00114     enum CaseSensitivity {
00115       csDefault=0, 
00116       csSensitive=1, 
00117       csInsensitive=2 
00118     };
00120 
00126     static Qt::CaseSensitivity convertCaseSensitivity(
00127             CaseSensitivity cs);
00128   private:
00129     QuaZipPrivate *p;
00130     // not (and will not be) implemented
00131     QuaZip(const QuaZip& that);
00132     // not (and will not be) implemented
00133     QuaZip& operator=(const QuaZip& that);
00134   public:
00136 
00137     QuaZip();
00139     QuaZip(const QString& zipName);
00141 
00142     QuaZip(QIODevice *ioDevice);
00144 
00145     ~QuaZip();
00147 
00193     bool open(Mode mode, zlib_filefunc_def *ioApi =NULL);
00195 
00217     void close();
00219 
00224     void setFileNameCodec(QTextCodec *fileNameCodec);
00226 
00229     void setFileNameCodec(const char *fileNameCodecName);
00231     QTextCodec* getFileNameCodec() const;
00233 
00235     void setCommentCodec(QTextCodec *commentCodec);
00237 
00240     void setCommentCodec(const char *commentCodecName);
00242     QTextCodec* getCommentCodec() const;
00244 
00249     QString getZipName() const;
00251 
00256     void setZipName(const QString& zipName);
00258 
00262     QIODevice *getIoDevice() const;
00264 
00269     void setIoDevice(QIODevice *ioDevice);
00271     Mode getMode() const;
00273     bool isOpen() const;
00275 
00283     int getZipError() const;
00285 
00288     int getEntriesCount() const;
00290     QString getComment() const;
00292 
00300     void setComment(const QString& comment);
00302 
00305     bool goToFirstFile();
00307 
00324     bool goToNextFile();
00326 
00350     bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
00352     bool hasCurrentFile() const;
00354 
00375     bool getCurrentFileInfo(QuaZipFileInfo* info)const;
00377 
00385     bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
00387 
00393     QString getCurrentFileName()const;
00395 
00410     unzFile getUnzFile();
00412 
00416     zipFile getZipFile();
00418 
00445     void setDataDescriptorWritingEnabled(bool enabled);
00447 
00450     bool isDataDescriptorWritingEnabled() const;
00452 
00458     QStringList getFileNameList() const;
00460 
00472     QList<QuaZipFileInfo> getFileInfoList() const;
00474 
00482     QList<QuaZipFileInfo64> getFileInfoList64() const;
00484 
00497     void setZip64Enabled(bool zip64);
00499 
00504     bool isZip64Enabled() const;
00506 
00509     bool isAutoClose() const;
00511 
00531     void setAutoClose(bool autoClose) const;
00533 
00562     static void setDefaultFileNameCodec(QTextCodec *codec);
00568     static void setDefaultFileNameCodec(const char *codecName);
00569 };
00570 
00571 #endif