QuaZIP quazip-0-7-3
|
00001 #ifndef QUA_ZIPFILE_H 00002 #define QUA_ZIPFILE_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 <QIODevice> 00029 00030 #include "quazip_global.h" 00031 #include "quazip.h" 00032 #include "quazipnewinfo.h" 00033 00034 class QuaZipFilePrivate; 00035 00037 00074 class QUAZIP_EXPORT QuaZipFile: public QIODevice { 00075 friend class QuaZipFilePrivate; 00076 Q_OBJECT 00077 private: 00078 QuaZipFilePrivate *p; 00079 // these are not supported nor implemented 00080 QuaZipFile(const QuaZipFile& that); 00081 QuaZipFile& operator=(const QuaZipFile& that); 00082 protected: 00084 qint64 readData(char *data, qint64 maxSize); 00086 qint64 writeData(const char *data, qint64 maxSize); 00087 public: 00089 00092 QuaZipFile(); 00094 00099 QuaZipFile(QObject *parent); 00101 00110 QuaZipFile(const QString& zipName, QObject *parent =NULL); 00112 00121 QuaZipFile(const QString& zipName, const QString& fileName, 00122 QuaZip::CaseSensitivity cs =QuaZip::csDefault, QObject *parent =NULL); 00124 00172 QuaZipFile(QuaZip *zip, QObject *parent =NULL); 00174 00177 virtual ~QuaZipFile(); 00179 00188 QString getZipName()const; 00190 00193 QuaZip* getZip()const; 00195 00207 QString getFileName() const; 00209 00220 QuaZip::CaseSensitivity getCaseSensitivity() const; 00222 00246 QString getActualFileName()const; 00248 00254 void setZipName(const QString& zipName); 00256 00260 bool isRaw() const; 00262 00270 void setZip(QuaZip *zip); 00272 00283 void setFileName(const QString& fileName, QuaZip::CaseSensitivity cs =QuaZip::csDefault); 00285 00292 virtual bool open(OpenMode mode); 00294 00298 inline bool open(OpenMode mode, const char *password) 00299 {return open(mode, NULL, NULL, false, password);} 00301 00312 bool open(OpenMode mode, int *method, int *level, bool raw, const char *password =NULL); 00314 00341 bool open(OpenMode mode, const QuaZipNewInfo& info, 00342 const char *password =NULL, quint32 crc =0, 00343 int method =Z_DEFLATED, int level =Z_DEFAULT_COMPRESSION, bool raw =false, 00344 int windowBits =-MAX_WBITS, int memLevel =DEF_MEM_LEVEL, int strategy =Z_DEFAULT_STRATEGY); 00346 virtual bool isSequential()const; 00348 00369 virtual qint64 pos()const; 00371 00387 virtual bool atEnd()const; 00389 00401 virtual qint64 size()const; 00403 00410 qint64 csize()const; 00412 00420 qint64 usize()const; 00422 00438 bool getFileInfo(QuaZipFileInfo *info); 00440 00445 bool getFileInfo(QuaZipFileInfo64 *info); 00447 00449 virtual void close(); 00451 int getZipError() const; 00453 virtual qint64 bytesAvailable() const; 00454 }; 00455 00456 #endif