[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [karchive] examples: bzip2gzip and unzipper examples
From:       Maarten De Meyer <de.meyer.maarten () gmail ! com>
Date:       2014-06-18 7:45:56
Message-ID: E1WxAZA-0000MP-3O () scm ! kde ! org
[Download RAW message or body]

Git commit d7833b29f1b8b1e29af1009ac9edf2979784790c by Maarten De Meyer.
Committed on 18/06/2014 at 07:31.
Pushed by demeyer into branch 'master'.

bzip2gzip and unzipper examples

Now most of the basic KArchive usage has an example.
bzip2gzip: Shows the usage of KCompressionDevice
unzipper: Shows how to extract files from an archive

REVIEW: 117974

A  +8    -0    examples/bzip2gzip/CMakeLists.txt
A  +91   -0    examples/bzip2gzip/main.cpp     [License: BSD]
A  +8    -0    examples/unzipper/CMakeLists.txt
A  +77   -0    examples/unzipper/main.cpp     [License: BSD]

http://commits.kde.org/karchive/d7833b29f1b8b1e29af1009ac9edf2979784790c

diff --git a/examples/bzip2gzip/CMakeLists.txt b/examples/bzip2gzip/CMakeLists.txt
new file mode 100644
index 0000000..1de6877
--- /dev/null
+++ b/examples/bzip2gzip/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(BZip2GZip)
+
+find_package(KF5Archive ${KF5_VERSION} REQUIRED)
+
+add_executable(bzip2gzip main.cpp)
+target_link_libraries(bzip2gzip KF5::Archive)
diff --git a/examples/bzip2gzip/main.cpp b/examples/bzip2gzip/main.cpp
new file mode 100644
index 0000000..a09ee6a
--- /dev/null
+++ b/examples/bzip2gzip/main.cpp
@@ -0,0 +1,91 @@
+/*  This file is part of the KDE project
+
+    Copyright (C) 2014 Maarten De Meyer <de.meyer.maarten@gmail.com>
+
+    You may use this file under the terms of the BSD license as follows:
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * bzip2gzip
+ * This example shows the usage of KCompressionDevice.
+ * It converts BZip2 files to GZip archives.
+ *
+ * api: KCompressionDevice(QIODevice * inputDevice, bool autoDeleteInputDevice, CompressionType type)
+ * api: KCompressionDevice(const QString & fileName, CompressionType type)
+ * api: QIODevice::readAll()
+ * api: QIODevice::read(qint64 maxSize)
+ * api: QIODevice::write(const QByteArray &data)
+ *
+ * Usage: ./bzip2gzip <archive.bz2>
+*/
+
+#include <QCoreApplication>
+#include <QStringList>
+#include <QFile>
+#include <QFileInfo>
+
+#include <KCompressionDevice>
+
+int main(int argc, char *argv[])
+{
+    QCoreApplication app(argc, argv);
+    QStringList args(app.arguments());
+
+    if (args.size() != 2) {
+        qWarning("Usage: ./bzip2gzip <archive.bz2>");
+        return 1;
+    }
+
+    QString inputFile = args.at(1);
+    QFile file(inputFile);
+    QFileInfo info(inputFile);
+
+    if (info.suffix() != QStringLiteral("bz2")) {
+        qCritical("Error: not a valid BZip2 file!");
+        return 1;
+    }
+
+    // Open the input archive
+    KCompressionDevice input(&file, false, KCompressionDevice::BZip2);
+    input.open(QIODevice::ReadOnly);
+
+    QString outputFile = (info.completeBaseName() + QStringLiteral(".gz"));
+
+    // Open the new output file
+    KCompressionDevice output(outputFile, KCompressionDevice::GZip);
+    output.open(QIODevice::WriteOnly);
+
+    while(!input.atEnd()) {
+        // Read and uncompress the data
+        QByteArray data = input.read(512);
+
+        // Write data like you would to any other QIODevice
+        output.write(data);
+    }
+
+    input.close();
+    output.close();
+
+    return 0;
+}
diff --git a/examples/unzipper/CMakeLists.txt b/examples/unzipper/CMakeLists.txt
new file mode 100644
index 0000000..5481903
--- /dev/null
+++ b/examples/unzipper/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(Unzipper)
+
+find_package(KF5Archive ${KF5_VERSION} REQUIRED)
+
+add_executable(unzipper main.cpp)
+target_link_libraries(unzipper KF5::Archive)
diff --git a/examples/unzipper/main.cpp b/examples/unzipper/main.cpp
new file mode 100644
index 0000000..fdd89f6
--- /dev/null
+++ b/examples/unzipper/main.cpp
@@ -0,0 +1,77 @@
+/*  This file is part of the KDE project
+
+    Copyright (C) 2014 Maarten De Meyer <de.meyer.maarten@gmail.com>
+
+    You may use this file under the terms of the BSD license as follows:
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Unzipper
+ * This example shows how to extract all files from a zip archive.
+ *
+ * api: KArchive::directory()
+ * api: KArchiveDirectory::copyTo(QString destination, bool recursive)
+ *
+ * Usage: ./unzipper <archive>
+*/
+
+#include <QCoreApplication>
+#include <QDir>
+
+#include <kzip.h>
+
+int main(int argc, char *argv[])
+{
+    QCoreApplication app(argc, argv);
+    QStringList args(app.arguments());
+
+    if (args.size() != 2) {
+        // Too many or too few arguments
+        qWarning("Usage: ./unzipper <archive.zip>");
+        return 1;
+    }
+
+    QString file = args.at(1);
+    KZip archive(file);
+
+    // Open the archive
+    if (!archive.open(QIODevice::ReadOnly)) {
+        qWarning("Cannot open " + file.toLatin1());
+        qWarning("Is it a valid zip file?");
+        return 1;
+    }
+
+    // Take the root folder from the archive and create a KArchiveDirectory object.
+    // KArchiveDirectory represents a directory in a KArchive.
+    const KArchiveDirectory *root = archive.directory();
+
+    // We can extract all contents from a KArchiveDirectory to a destination.
+    // recursive true will also extract subdirectories.
+    QString destination = QDir::currentPath();
+    bool recursive = true;
+    root->copyTo(destination, recursive);
+
+    archive.close();
+    return 0;
+}
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic