QuaZip quazip-1-6
JlCompress.h
1#ifndef JLCOMPRESSFOLDER_H_
2#define JLCOMPRESSFOLDER_H_
3
4/*
5Copyright (C) 2010 Roberto Pompermaier
6Copyright (C) 2005-2016 Sergey A. Tachenov
7
8This file is part of QuaZip.
9
10QuaZip is free software: you can redistribute it and/or modify
11it under the terms of the GNU Lesser General Public License as published by
12the Free Software Foundation, either version 2.1 of the License, or
13(at your option) any later version.
14
15QuaZip is distributed in the hope that it will be useful,
16but WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18GNU Lesser General Public License for more details.
19
20You should have received a copy of the GNU Lesser General Public License
21along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
22
23See COPYING file for the full LGPL text.
24
25Original ZIP package is copyrighted by Gilles Vollant and contributors,
26see 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#include <QtCore/QSharedDataPointer>
38
40
44class QUAZIP_EXPORT JlCompress {
45public:
46 class QUAZIP_EXPORT Options {
47 public:
62 {
64 Storage = 0x00, // Z_NO_COMPRESSION 0
66 Fastest = 0x81, // Z_BEST_SPEED 1
68 Faster = 0x83,
70 Standard = 0x86,
72 Better = 0x87,
74 Best = 0x89, // Z_BEST_COMPRESSION 9
77 Default = 0xff
78 };
79
80 public:
81 explicit Options(const CompressionStrategy& strategy);
82
83 explicit Options(const QDateTime& dateTime = QDateTime(),
84 const CompressionStrategy& strategy = Default,
85 bool utf8Enabled = false,
86 const QByteArray& password = QByteArray());
87
88 Options(const Options& other) noexcept;
89 Options& operator=(const Options& other) noexcept;
90 ~Options();
91
92 QDateTime getDateTime() const;
93 void setDateTime(const QDateTime &dateTime);
94 CompressionStrategy getCompressionStrategy() const;
95 int getCompressionMethod() const;
96 int getCompressionLevel() const;
97 void setCompressionStrategy(const CompressionStrategy &strategy);
98 bool getUtf8Enabled() const;
99 void setUtf8Enabled(bool utf8Enabled);
100 QByteArray getPassword() const;
101 void setPassword(const QByteArray& password);
102
103 private:
104 struct JlOptions;
105 QSharedDataPointer<JlOptions> d;
106 };
107
108 static bool copyData(QIODevice &inFile, QIODevice &outFile);
109 static QStringList extractDir(QuaZip &zip, const QString &dir);
110 static QStringList getFileList(QuaZip *zip);
111 static QString extractFile(QuaZip &zip, QString fileName, QString fileDest);
112 static QStringList extractFiles(QuaZip &zip, const QStringList &files, const QString &dir);
113
115
121 static bool extractFile(QuaZip* zip, QString fileName, QString fileDest);
122
124
130 static bool compressFile(QuaZip* zip, QString fileName, QString fileDest);
131
133
140 static bool compressFile(QuaZip* zip, QString fileName, QString fileDest, const Options& options);
141
143
154 static bool compressSubDir(QuaZip* parentZip, QString dir, QString parentDir, bool recursive,
155 QDir::Filters filters);
156
158
170 static bool compressSubDir(QuaZip* parentZip, QString dir, QString parentDir, bool recursive,
171 QDir::Filters filters, const Options& options);
172
174
178 static bool removeFile(QStringList listFile);
179
181
186 static bool compressFile(QString fileCompressed, QString file);
187
189
195 static bool compressFile(QString fileCompressed, QString file, const Options& options);
196
198
203 static bool compressFiles(QString fileCompressed, QStringList files);
204
206
212 static bool compressFiles(QString fileCompressed, QStringList files, const Options& options);
213
215
223 static bool addFile(QString fileCompressed, QString file);
224
226
235 static bool addFile(QString fileCompressed, QString file, const Options& options);
236
238
252 static bool addFiles(QString fileCompressed, QStringList files);
253
255
276 static bool addFiles(QString fileCompressed, QStringList files, const Options& options);
277
279
290 static bool addDir(QString fileCompressed, QString dir = QString(), bool recursive = true);
291
293
310 static bool addDir(QString fileCompressed, QString dir,
311 bool recursive, QDir::Filters filters);
312
314
340 static bool addDir(QString fileCompressed, QString dir,
341 bool recursive, QDir::Filters filters, const Options& options);
342
344
353 static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);
354
371 static bool compressDir(QString fileCompressed, QString dir,
372 bool recursive, QDir::Filters filters);
373
391 static bool compressDir(QString fileCompressed, QString dir,
392 bool recursive, QDir::Filters filters, const Options& options);
393
395
402 static QString extractFile(QString fileCompressed, QString fileName, QString fileDest = QString());
403
405
412 static QStringList extractFiles(QString fileCompressed, QStringList files, QString dir = QString());
413
415
421 static QStringList extractDir(QString fileCompressed, QString dir = QString());
422
424
431 static QStringList extractDir(QString fileCompressed, QuazipTextCodec* fileNameCodec, QString dir = QString());
432
434
442 static QString extractFile(QString fileCompressed, QString fileName, QString fileDest, const QByteArray& password);
443
445
453 static QStringList extractFiles(QString fileCompressed, QStringList files, QString dir, const QByteArray& password);
454
456
463 static QStringList extractDir(QString fileCompressed, QString dir, const QByteArray& password);
464
466
471 static QStringList getFileList(QString fileCompressed);
472
474
481 static QString extractFile(QIODevice *ioDevice, QString fileName, QString fileDest = QString());
482
484
491 static QStringList extractFiles(QIODevice *ioDevice, QStringList files, QString dir = QString());
492
494
500 static QStringList extractDir(QIODevice *ioDevice, QString dir = QString());
501
503
510 static QStringList extractDir(QIODevice* ioDevice, QuazipTextCodec* fileNameCodec, QString dir = QString());
511
513
518 static QStringList getFileList(QIODevice *ioDevice);
519};
520
521#endif /* JLCOMPRESSFOLDER_H_ */
Definition JlCompress.h:46
CompressionStrategy
Definition JlCompress.h:62
@ Default
Definition JlCompress.h:77
@ Storage
Storage without compression.
Definition JlCompress.h:64
@ Standard
Standard compression speed and ratio.
Definition JlCompress.h:70
@ Faster
Relatively fast compression speed.
Definition JlCompress.h:68
@ Fastest
The fastest compression speed.
Definition JlCompress.h:66
@ Better
Better compression ratio.
Definition JlCompress.h:72
@ Best
The best compression ratio.
Definition JlCompress.h:74
Utility class for typical operations.
Definition JlCompress.h:44
ZIP archive.
Definition quazip.h:84
Definition quazip_textcodec.h:39