blob: a6d9496da1e8b9c8370d74dc1d8e05e670641f41 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version
2 of the License, or (at your option) any later version.
*/
#include <QProcess>
#include "unpacker.h"
Unpacker::Unpacker(QObject *parent) : QThread(parent) {
mProgram = "/usr/bin/7z";
}
void Unpacker::setCommands(const QList<QStringList> &cmds){
QMutexLocker l(&mCmdMx);
mCommandQueue = cmds;
}
void Unpacker::run(){
QMutexLocker l(&mCmdMx);
while(!mCommandQueue.isEmpty()){
doUnpack();
}
emit unpackDone();
}
void Unpacker::doUnpack(){
QStringList job = mCommandQueue.first();
mCommandQueue.removeFirst();
QProcess unpackProc;
unpackProc.setProgram(mProgram);
unpackProc.setArguments(job);
unpackProc.start();
unpackProc.waitForReadyRead();
QString archiveP = job.last();
QString archiveN = archiveP.split("/").last();
QString extractMsg = QString(tr("<b>Extracting</b> %1")).arg(archiveN);
emit unpackStarted(extractMsg);
QByteArray output = unpackProc.readAllStandardOutput();
emit outputRead(output);
unpackProc.waitForFinished();
}
|