summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/zip/unzip.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2007-07-25 20:21:06 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2007-07-25 20:21:06 +0000
commit680408f4ac8b04d716fd8921c01b73d30a3c66c7 (patch)
tree08908a7d5e3b95daa9a1d3ed0703e64cff712022 /rbutil/rbutilqt/zip/unzip.h
parentaa643db434e230643e18e454032fb708e0f1848d (diff)
downloadrockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.tar.gz
rockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.zip
First stab at porting rbutil to Qt4. Currently only installing a current or archived build is working. To build, run qmake && make in the source folder. Beware that the syntax of rbutil.ini has slightly changed. Caching of the downloaded files is also still missing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13989 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/zip/unzip.h')
-rw-r--r--rbutil/rbutilqt/zip/unzip.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/zip/unzip.h b/rbutil/rbutilqt/zip/unzip.h
new file mode 100644
index 0000000000..a48fbe8724
--- /dev/null
+++ b/rbutil/rbutilqt/zip/unzip.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+** Filename: unzip.h
+** Last updated [dd/mm/yyyy]: 28/01/2007
+**
+** pkzip 2.0 decompression.
+**
+** Some of the code has been inspired by other open source projects,
+** (mainly Info-Zip and Gilles Vollant's minizip).
+** Compression and decompression actually uses the zlib library.
+**
+** Copyright (C) 2007 Angius Fabrizio. All rights reserved.
+**
+** This file is part of the OSDaB project (http://osdab.sourceforge.net/).
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See the file LICENSE.GPL that came with this software distribution or
+** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
+**
+**********************************************************************/
+
+#ifndef OSDAB_UNZIP__H
+#define OSDAB_UNZIP__H
+
+#include <QtGlobal>
+#include <QMap>
+#include <QDateTime>
+
+#include <zlib/zlib.h>
+
+class UnzipPrivate;
+class QIODevice;
+class QFile;
+class QDir;
+class QStringList;
+class QString;
+
+
+class UnZip
+{
+public:
+ enum ErrorCode
+ {
+ Ok,
+ ZlibInit,
+ ZlibError,
+ OpenFailed,
+ PartiallyCorrupted,
+ Corrupted,
+ WrongPassword,
+ NoOpenArchive,
+ FileNotFound,
+ ReadFailed,
+ WriteFailed,
+ SeekFailed,
+ CreateDirFailed,
+ InvalidDevice,
+ InvalidArchive,
+ HeaderConsistencyError,
+
+ Skip, SkipAll // internal use only
+ };
+
+ enum ExtractionOption
+ {
+ //! Extracts paths (default)
+ ExtractPaths = 0x0001,
+ //! Ignores paths and extracts all the files to the same directory
+ SkipPaths = 0x0002
+ };
+ Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
+
+ enum CompressionMethod
+ {
+ NoCompression, Deflated, UnknownCompression
+ };
+
+ enum FileType
+ {
+ File, Directory
+ };
+
+ typedef struct ZipEntry
+ {
+ ZipEntry();
+
+ QString filename;
+ QString comment;
+
+ quint32 compressedSize;
+ quint32 uncompressedSize;
+ quint32 crc32;
+
+ QDateTime lastModified;
+
+ CompressionMethod compression;
+ FileType type;
+
+ bool encrypted;
+ };
+
+ UnZip();
+ virtual ~UnZip();
+
+ bool isOpen() const;
+
+ ErrorCode openArchive(const QString& filename);
+ ErrorCode openArchive(QIODevice* device);
+ void closeArchive();
+
+ QString archiveComment() const;
+
+ QString formatError(UnZip::ErrorCode c) const;
+
+ bool contains(const QString& file) const;
+
+ QStringList fileList() const;
+ QList<ZipEntry> entryList() const;
+
+ ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
+ ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
+
+ ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
+ ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
+ ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
+
+ ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
+ ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
+
+ void setPassword(const QString& pwd);
+
+private:
+ UnzipPrivate* d;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
+
+#endif // OSDAB_UNZIP__H