summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/rbunzip.cpp
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2008-04-06 18:12:56 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2008-04-06 18:12:56 +0000
commitc3969ed4c58d9c153bb95f6f70ad94dff1887495 (patch)
tree0bb9e820c55f16c7b8aac4eddb553c7fb0261341 /rbutil/rbutilqt/rbunzip.cpp
parent5076dca58e40fe0f70620f43ac6e43120038d3cb (diff)
downloadrockbox-c3969ed4c58d9c153bb95f6f70ad94dff1887495.tar.gz
rockbox-c3969ed4c58d9c153bb95f6f70ad94dff1887495.zip
create an UnZip derived class for zip file extraction to allow showing progress while unzipping. Makes the unzip process somewhat interruptable and the UI more responsible.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16993 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/rbunzip.cpp')
-rw-r--r--rbutil/rbutilqt/rbunzip.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/rbunzip.cpp b/rbutil/rbutilqt/rbunzip.cpp
new file mode 100644
index 0000000000..85d175c63d
--- /dev/null
+++ b/rbutil/rbutilqt/rbunzip.cpp
@@ -0,0 +1,48 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2008 by Dominik Riebeling
10 * $Id$
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#include "rbunzip.h"
21#include <QtCore>
22
23
24UnZip::ErrorCode RbUnZip::extractArchive(const QString& dest)
25{
26 QStringList files = this->fileList();
27 UnZip::ErrorCode error;
28 m_abortunzip = false;
29
30 int total = files.size();
31 for(int i = 0; i < total; i++) {
32 qDebug() << __func__ << files.at(i);
33 error = this->extractFile(files.at(i), dest, UnZip::ExtractPaths);
34 emit unzipProgress(i, total);
35 QCoreApplication::processEvents(); // update UI
36 if(m_abortunzip)
37 error = SkipAll;
38 if(error != Ok)
39 break;
40 }
41 return error;
42}
43
44void RbUnZip::abortUnzip(void)
45{
46 m_abortunzip = true;
47}
48