Skip to content

Commit

Permalink
draft for JlCompress utf8
Browse files Browse the repository at this point in the history
  • Loading branch information
cen1 committed Oct 20, 2024
1 parent 9ed79a1 commit fed2917
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
6 changes: 6 additions & 0 deletions quazip/JlCompress.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ bool JlCompress::compressSubDir(QuaZip* zip, QString dir, QString origDir, bool
zip->getMode()!=QuaZip::mdAppend &&
zip->getMode()!=QuaZip::mdAdd) return false;

zip->setUtf8Enabled(options.getUtf8Enabled());

QDir directory(dir);
if (!directory.exists()) return false;

Expand Down Expand Up @@ -230,6 +232,8 @@ bool JlCompress::compressFile(QString fileCompressed, QString file) {
bool JlCompress::compressFile(QString fileCompressed, QString file, const Options& options) {
// Create zip
QuaZip zip(fileCompressed);
zip.setUtf8Enabled(options.getUtf8Enabled());

QDir().mkpath(QFileInfo(fileCompressed).absolutePath());
if(!zip.open(QuaZip::mdCreate)) {
QFile::remove(fileCompressed);
Expand Down Expand Up @@ -259,6 +263,7 @@ bool JlCompress::compressFiles(QString fileCompressed, QStringList files) {
bool JlCompress::compressFiles(QString fileCompressed, QStringList files, const Options& options) {
// Create zip
QuaZip zip(fileCompressed);
zip.setUtf8Enabled(options.getUtf8Enabled());
QDir().mkpath(QFileInfo(fileCompressed).absolutePath());
if(!zip.open(QuaZip::mdCreate)) {
QFile::remove(fileCompressed);
Expand Down Expand Up @@ -301,6 +306,7 @@ bool JlCompress::compressDir(QString fileCompressed, QString dir,
{
// Create zip
QuaZip zip(fileCompressed);
zip.setUtf8Enabled(options.getUtf8Enabled());
QDir().mkpath(QFileInfo(fileCompressed).absolutePath());
if(!zip.open(QuaZip::mdCreate)) {
QFile::remove(fileCompressed);
Expand Down
21 changes: 19 additions & 2 deletions quazip/JlCompress.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,10 @@ class QUAZIP_EXPORT JlCompress {
};

public:
explicit Options(const QDateTime& dateTime = QDateTime(), const CompressionStrategy& strategy = Default)
: m_dateTime(dateTime), m_compressionStrategy(strategy) {}
explicit Options(const QDateTime& dateTime = QDateTime(),
const CompressionStrategy& strategy = Default,
bool utf8Enabled = false)
: m_dateTime(dateTime), m_compressionStrategy(strategy), m_utf8Enabled(utf8Enabled) {}

QDateTime getDateTime() const {
return m_dateTime;
Expand All @@ -104,11 +106,26 @@ class QUAZIP_EXPORT JlCompress {
m_compressionStrategy = strategy;
}

bool getUtf8Enabled() const {
return m_utf8Enabled;
}

bool setUtf8Enabled(bool utf8Enabled) {
m_utf8Enabled = utf8Enabled;
}

private:
// If set, used as last modified on file inside the archive.
// If compressing a directory, used for all files.
QDateTime m_dateTime;

CompressionStrategy m_compressionStrategy;

/* Enables UTF-8 support for filenames and comments.
* Must be set before QuaZip::open so only applicable to methods that open the zip internally.
* For methods which receive QuaZip* zip as an argument, you should set this flag before calling open on QuaZip object.
* */
bool m_utf8Enabled;
};

static bool copyData(QIODevice &inFile, QIODevice &outFile);
Expand Down

0 comments on commit fed2917

Please sign in to comment.