version 2.12.1
This commit is contained in:
+91
-81
@@ -10,7 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <QMessageBox>
|
||||
#include <vector>
|
||||
#include <boost/algorithm/string/replace.hpp>
|
||||
//#include <boost/algorithm/string/replace.hpp>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
#include <array>
|
||||
@@ -27,99 +27,109 @@ downloadFile::downloadFile()
|
||||
//Slot activated when download is cancelled
|
||||
void MainWindow::cancelled(QProcess * process)
|
||||
{
|
||||
bool n = 0;
|
||||
bool n = 0;
|
||||
|
||||
process->terminate();
|
||||
n = process->waitForFinished(30000);
|
||||
if (n == false)
|
||||
{
|
||||
process->close();
|
||||
}
|
||||
process->terminate();
|
||||
n = process->waitForFinished(30000);
|
||||
if (n == false)
|
||||
{
|
||||
process->close();
|
||||
}
|
||||
}
|
||||
|
||||
// launch a rsync processus downloading a file
|
||||
void MainWindow::download()
|
||||
{
|
||||
QString cmd;
|
||||
QStringList param;
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
QString cmd;
|
||||
QStringList param;
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
QString server = downloading.server;
|
||||
|
||||
this->downloading.process = new QProcess(this);
|
||||
if (!this->downloading.user.isEmpty())
|
||||
{
|
||||
this->downloading.server.prepend(this->connexion.user + "@");
|
||||
env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable
|
||||
this->downloading.process->setProcessEnvironment(env);
|
||||
}
|
||||
// Populating array with command and parameters for popen2
|
||||
cmd = "rsync";
|
||||
if (this->connexion.bandwidthLimit != 0)
|
||||
{
|
||||
param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit];
|
||||
}
|
||||
param << "--port=" + QString::number(this->downloading.port);
|
||||
param << "-aXP";
|
||||
param << this->downloading.server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/";
|
||||
this->downloading.process = new QProcess(this);
|
||||
if (!this->downloading.user.isEmpty())
|
||||
{
|
||||
this->downloading.user = this->connexion.user;
|
||||
server = this->connexion.user + "@" + this->downloading.server;
|
||||
env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable
|
||||
this->downloading.process->setProcessEnvironment(env);
|
||||
}
|
||||
// Populating array with command and parameters for rsync
|
||||
cmd = "rsync";
|
||||
if (this->connexion.bandwidthLimit != 0)
|
||||
{
|
||||
param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit];
|
||||
}
|
||||
|
||||
this->downloading.process->start(cmd, param);
|
||||
if (downloading.ipversion == 4 || downloading.ipversion == 6)
|
||||
{
|
||||
param << "-" + QString::number(downloading.ipversion);
|
||||
}
|
||||
|
||||
connect(this->downloading.process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(downloadFinished(int, QProcess::ExitStatus)));
|
||||
//connect(this->downloading.process, SIGNAL(errorOccurred(QProcess::ProcessError error)), this, SLOT(downloadProcessError(QProcess::ProcessError error)));
|
||||
//connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr()));
|
||||
connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput()));
|
||||
param << "--port" << QString::number(this->downloading.port);
|
||||
param << "-aXP ";
|
||||
param << server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/";
|
||||
|
||||
qInfo("%s %s", cmd.toStdString().c_str(), param.join(" ").toStdString().c_str() );
|
||||
|
||||
this->downloading.process->start(cmd, param);
|
||||
|
||||
connect(this->downloading.process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(downloadFinished(int, QProcess::ExitStatus)));
|
||||
//connect(this->downloading.process, SIGNAL(errorOccurred(QProcess::ProcessError error)), this, SLOT(downloadProcessError(QProcess::ProcessError error)));
|
||||
//connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr()));
|
||||
connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput()));
|
||||
}
|
||||
|
||||
void MainWindow::readRsyncOutput()
|
||||
{
|
||||
QString line;
|
||||
bool flag = false;
|
||||
int value;
|
||||
int pos;
|
||||
static QString dlSpeed;
|
||||
QStringList list;
|
||||
static QString filename;
|
||||
int i;
|
||||
int listSize;
|
||||
QString line;
|
||||
bool flag = false;
|
||||
int value;
|
||||
int pos;
|
||||
static QString dlSpeed;
|
||||
QStringList list;
|
||||
static QString filename;
|
||||
int i;
|
||||
int listSize;
|
||||
|
||||
while(!flag)
|
||||
{
|
||||
list.clear();
|
||||
line = QString::fromUtf8(this->downloading.process->readLine());
|
||||
if (line.isEmpty())
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}else
|
||||
{
|
||||
pos = line.indexOf("%");
|
||||
if (pos != -1)
|
||||
{
|
||||
line = line.simplified();
|
||||
list = line.split(" ");
|
||||
listSize = list.count() / 4;
|
||||
for (i = 0; i < listSize; i++)
|
||||
{
|
||||
value = list.at(i *4 + 1).chopped(1).toInt();
|
||||
dlSpeed = list.at(i * 4 + 2);
|
||||
while(!flag)
|
||||
{
|
||||
list.clear();
|
||||
line = QString::fromUtf8(this->downloading.process->readLine());
|
||||
if (line.isEmpty())
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}else
|
||||
{
|
||||
pos = line.indexOf("%");
|
||||
if (pos != -1)
|
||||
{
|
||||
line = line.simplified();
|
||||
list = line.split(" ");
|
||||
listSize = list.count() / 4;
|
||||
for (i = 0; i < listSize; i++)
|
||||
{
|
||||
value = list.at(i *4 + 1).chopped(1).toInt();
|
||||
dlSpeed = list.at(i * 4 + 2);
|
||||
|
||||
/*line.resize(pos);
|
||||
pos = line.lastIndexOf(' ');
|
||||
if (pos != -1)
|
||||
{
|
||||
line.remove(0, pos);
|
||||
value = line.toInt();*/
|
||||
// sending progress to Main window
|
||||
emit progressSignal(value);
|
||||
emit fileName(filename + " %p%" + "\t " + dlSpeed);
|
||||
}
|
||||
}else
|
||||
{
|
||||
if (!line.contains("receiving"))
|
||||
{
|
||||
filename = line.remove(QChar('\n'), Qt::CaseInsensitive);
|
||||
emit fileName(filename + " %p%\t " + dlSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*line.resize(pos);
|
||||
pos = line.lastIndexOf(' ');
|
||||
if (pos != -1)
|
||||
{
|
||||
line.remove(0, pos);
|
||||
value = line.toInt();*/
|
||||
// sending progress to Main window
|
||||
emit progressSignal(value);
|
||||
emit fileName(filename + " %p%" + "\t " + dlSpeed);
|
||||
}
|
||||
}else
|
||||
{
|
||||
if (!line.contains("receiving"))
|
||||
{
|
||||
filename = line.remove(QChar('\n'), Qt::CaseInsensitive);
|
||||
emit fileName(filename + " %p%\t " + dlSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user