QuaZip  quazip-1-4
JlCompress.h
1 #ifndef JLCOMPRESSFOLDER_H_
2 #define JLCOMPRESSFOLDER_H_
3 
4 /*
5 Copyright (C) 2010 Roberto Pompermaier
6 Copyright (C) 2005-2016 Sergey A. Tachenov
7 
8 This file is part of QuaZip.
9 
10 QuaZip is free software: you can redistribute it and/or modify
11 it under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation, either version 2.1 of the License, or
13 (at your option) any later version.
14 
15 QuaZip is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU Lesser General Public License for more details.
19 
20 You should have received a copy of the GNU Lesser General Public License
21 along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
22 
23 See COPYING file for the full LGPL text.
24 
25 Original ZIP package is copyrighted by Gilles Vollant and contributors,
26 see quazip/(un)zip.h files for details. Basically it's the zlib license.
27 */
28 
29 #include "quazip.h"
30 #include "quazipfile.h"
31 #include "quazipfileinfo.h"
32 #include "quazip_qt_compat.h"
33 #include <QtCore/QString>
34 #include <QtCore/QDir>
35 #include <QtCore/QFileInfo>
36 #include <QtCore/QFile>
37 
39 
43 class QUAZIP_EXPORT JlCompress {
44 public:
45  class Options {
46  public:
61  {
63  Storage = 0x00, // Z_NO_COMPRESSION 0
65  Fastest = 0x81, // Z_BEST_SPEED 1
67  Faster = 0x83,
69  Standard = 0x86,
71  Better = 0x87,
73  Best = 0x89, // Z_BEST_COMPRESSION 9
76  Default = 0xff
77  };
78 
79  public:
80  explicit Options(const CompressionStrategy& strategy)
81  : m_compressionStrategy(strategy) {}
82 
83  explicit Options(const QDateTime& dateTime = QDateTime(), const CompressionStrategy& strategy = Default)
84  : m_dateTime(dateTime), m_compressionStrategy(strategy) {}
85 
86  QDateTime getDateTime() const {
87  return m_dateTime;
88  }
89 
90  void setDateTime(const QDateTime &dateTime) {
91  m_dateTime = dateTime;
92  }
93 
94  CompressionStrategy getCompressionStrategy() const {
95  return m_compressionStrategy;
96  }
97 
98  int getCompressionMethod() const {
99  return m_compressionStrategy != Default ? m_compressionStrategy >> 4 : Z_DEFLATED;
100  }
101 
102  int getCompressionLevel() const {
103  return m_compressionStrategy != Default ? m_compressionStrategy & 0x0f : Z_DEFAULT_COMPRESSION;
104  }
105 
106  void setCompressionStrategy(const CompressionStrategy &strategy) {
107  m_compressionStrategy = strategy;
108  }
109 
110  private:
111  // If set, used as last modified on file inside the archive.
112  // If compressing a directory, used for all files.
113  QDateTime m_dateTime;
114  CompressionStrategy m_compressionStrategy;
115  };
116 
117  static bool copyData(QIODevice &inFile, QIODevice &outFile);
118  static QStringList extractDir(QuaZip &zip, const QString &dir);
119  static QStringList getFileList(QuaZip *zip);
120  static QString extractFile(QuaZip &zip, QString fileName, QString fileDest);
121  static QStringList extractFiles(QuaZip &zip, const QStringList &files, const QString &dir);
123 
129  static bool compressFile(QuaZip* zip, QString fileName, QString fileDest);
131 
138  static bool compressFile(QuaZip* zip, QString fileName, QString fileDest, const Options& options);
140 
149  static bool compressSubDir(QuaZip* parentZip, QString dir, QString parentDir, bool recursive,
150  QDir::Filters filters);
152 
164  static bool compressSubDir(QuaZip* parentZip, QString dir, QString parentDir, bool recursive,
165  QDir::Filters filters, const Options& options);
167 
173  static bool extractFile(QuaZip* zip, QString fileName, QString fileDest);
175 
179  static bool removeFile(QStringList listFile);
180 
182 
187  static bool compressFile(QString fileCompressed, QString file);
189 
195  static bool compressFile(QString fileCompressed, QString file, const Options& options);
197 
202  static bool compressFiles(QString fileCompressed, QStringList files);
204 
210  static bool compressFiles(QString fileCompressed, QStringList files, const Options& options);
212 
221  static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);
238  static bool compressDir(QString fileCompressed, QString dir,
239  bool recursive, QDir::Filters filters);
257  static bool compressDir(QString fileCompressed, QString dir,
258  bool recursive, QDir::Filters filters, const Options& options);
259 
261 
268  static QString extractFile(QString fileCompressed, QString fileName, QString fileDest = QString());
270 
277  static QStringList extractFiles(QString fileCompressed, QStringList files, QString dir = QString());
279 
285  static QStringList extractDir(QString fileCompressed, QString dir = QString());
287 
294  static QStringList extractDir(QString fileCompressed, QTextCodec* fileNameCodec, QString dir = QString());
296 
301  static QStringList getFileList(QString fileCompressed);
303 
310  static QString extractFile(QIODevice *ioDevice, QString fileName, QString fileDest = QString());
312 
319  static QStringList extractFiles(QIODevice *ioDevice, QStringList files, QString dir = QString());
321 
327  static QStringList extractDir(QIODevice *ioDevice, QString dir = QString());
329 
336  static QStringList extractDir(QIODevice* ioDevice, QTextCodec* fileNameCodec, QString dir = QString());
338 
343  static QStringList getFileList(QIODevice *ioDevice);
344 };
345 
346 #endif /* JLCOMPRESSFOLDER_H_ */
CompressionStrategy
Definition: JlCompress.h:60
Definition: JlCompress.h:45
ZIP archive.
Definition: quazip.h:84
Utility class for typical operations.
Definition: JlCompress.h:43