quazip.h

    00001 #ifndef QUA_ZIP_H
    00002 #define QUA_ZIP_H
    00003
    00004 /*
    00005 Copyright (C) 2005-2011 Sergey A. Tachenov
    00006
    00007 This program is free software; you can redistribute it and/or modify it
    00008 under the terms of the GNU Lesser General Public License as published by
    00009 the Free Software Foundation; either version 2 of the License, or (at
    00010 your option) any later version.
    00011
    00012 This program is distributed in the hope that it will be useful, but
    00013 WITHOUT ANY WARRANTY; without even the implied warranty of
    00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
    00015 General Public License for more details.
    00016
    00017 You should have received a copy of the GNU Lesser General Public License
    00018 along with this program; if not, write to the Free Software Foundation,
    00019 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    00020
    00021 See COPYING file for the full LGPL text.
    00022
    00023 Original ZIP package is copyrighted by Gilles Vollant, see
    00024 quazip/(un)zip.h files for details, basically it's zlib license.
    00025  **/
    00026
    00027 #include <QString>
    00028 #include <QStringList>
    00029 #include <QTextCodec>
    00030
    00031 #include "zip.h"
    00032 #include "unzip.h"
    00033
    00034 #include "quazip_global.h"
    00035 #include "quazipfileinfo.h"
    00036
    00037 // just in case it will be defined in the later versions of the ZIP/UNZIP
    00038 #ifndef UNZ_OPENERROR
    00039 // define additional error code
    00040 #define UNZ_OPENERROR -1000
    00041 #endif
    00042
    00043 class QuaZipPrivate;
    00044
    00046
    00083 class QUAZIP_EXPORT QuaZip {
    00084   friend class QuaZipPrivate;
    00085   public:
    00087     enum Constants {
    00088       MAX_FILE_NAME_LENGTH=256
    00091     };
    00093     enum Mode {
    00094       mdNotOpen,
    00095       mdUnzip,
    00096       mdCreate,
    00097       mdAppend,
    00105       mdAdd
    00106     };
    00108
    00113     enum CaseSensitivity {
    00114       csDefault=0,
    00115       csSensitive=1,
    00116       csInsensitive=2
    00117     };
    00119
    00125     static Qt::CaseSensitivity convertCaseSensitivity(
    00126             CaseSensitivity cs);
    00127   private:
    00128     QuaZipPrivate *p;
    00129     // not (and will not be) implemented
    00130     QuaZip(const QuaZip& that);
    00131     // not (and will not be) implemented
    00132     QuaZip& operator=(const QuaZip& that);
    00133   public:
    00135
    00136     QuaZip();
    00138     QuaZip(const QString& zipName);
    00140
    00141     QuaZip(QIODevice *ioDevice);
    00143
    00144     ~QuaZip();
    00146
    00182     bool open(Mode mode, zlib_filefunc_def *ioApi =NULL);
    00184
    00187     void close();
    00189
    00194     void setFileNameCodec(QTextCodec *fileNameCodec);
    00196
    00199     void setFileNameCodec(const char *fileNameCodecName);
    00201     QTextCodec* getFileNameCodec() const;
    00203
    00205     void setCommentCodec(QTextCodec *commentCodec);
    00207
    00210     void setCommentCodec(const char *commentCodecName);
    00212     QTextCodec* getCommentCodec() const;
    00214
    00219     QString getZipName() const;
    00221
    00226     void setZipName(const QString& zipName);
    00228
    00232     QIODevice *getIoDevice() const;
    00234
    00239     void setIoDevice(QIODevice *ioDevice);
    00241     Mode getMode() const;
    00243     bool isOpen() const;
    00245
    00253     int getZipError() const;
    00255
    00258     int getEntriesCount() const;
    00260     QString getComment() const;
    00262
    00270     void setComment(const QString& comment);
    00272
    00275     bool goToFirstFile();
    00277
    00294     bool goToNextFile();
    00296
    00320     bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
    00322     bool hasCurrentFile() const;
    00324
    00339     bool getCurrentFileInfo(QuaZipFileInfo* info)const;
    00341
    00347     QString getCurrentFileName()const;
    00349
    00364     unzFile getUnzFile();
    00366
    00370     zipFile getZipFile();
    00372
    00395     void setDataDescriptorWritingEnabled(bool enabled);
    00397
    00400     bool isDataDescriptorWritingEnabled() const;
    00402
    00408     QStringList getFileNameList() const;
    00410
    00416     QList<QuaZipFileInfo> getFileInfoList() const;
    00417 };
    00418
    00419 #endif