Skip to content
This repository has been archived by the owner on Sep 1, 2019. It is now read-only.

Updated to work with Rclone v1.44 #138

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 56 additions & 4 deletions src/job_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,16 @@ JobWidget::JobWidget(QProcess* process, const QString& info, const QStringList&

QObject::connect(mProcess, &QProcess::readyRead, this, [=]()
{
QRegExp rxSize(R"(^Transferred:\s+(\S+ \S+) \(([^)]+)\)$)");
QRegExp rxSize(R"(^Transferred:\s+(\S+ \S+) \(([^)]+)\)$)"); // Until rclone 1.42
QRegExp rxSize2(R"(^Transferred:\s+([0-9.]+)(\S)? \/ (\S+) (\S+), ([0-9%-]+), (\S+ \S+), (\S+) (\S+)$)"); // Starting with rclone 1.43
QRegExp rxErrors(R"(^Errors:\s+(\S+)$)");
QRegExp rxChecks(R"(^Checks:\s+(\S+)$)");
QRegExp rxTransferred(R"(^Transferred:\s+(\S+)$)");
QRegExp rxChecks(R"(^Checks:\s+(\S+)$)"); // Until rclone 1.42
QRegExp rxChecks2(R"(^Checks:\s+(\S+) \/ (\S+), [0-9%-]+$)"); // Starting with rclone 1.43
QRegExp rxTransferred(R"(^Transferred:\s+(\S+)$)"); // Until rclone 1.42
QRegExp rxTransferred2(R"(^Transferred:\s+(\S+) \/ (\S+), [0-9%-]+$)"); // Starting with rclone 1.43
QRegExp rxTime(R"(^Elapsed time:\s+(\S+)$)");
QRegExp rxProgress(R"(^\*([^:]+):\s*([^%]+)% done.+(ETA: [^)]+)$)");
QRegExp rxProgress(R"(^\*([^:]+):\s*([^%]+)% done.+(ETA: [^)]+)$)"); // Until rclone 1.38
QRegExp rxProgress2(R"(\*([^:]+):\s*([^%]+)% \/[a-zA-z0-9.]+, [a-zA-z0-9.]+\/s, (\w+)$)"); // Starting with rclone 1.39

while (mProcess->canReadLine())
{
Expand Down Expand Up @@ -108,6 +112,11 @@ JobWidget::JobWidget(QProcess* process, const QString& info, const QStringList&
ui.size->setText(rxSize.cap(1));
ui.bandwidth->setText(rxSize.cap(2));
}
else if (rxSize2.exactMatch(line))
{
ui.size->setText(rxSize2.cap(1) + " " + rxSize2.cap(2) + "Bytes");
ui.bandwidth->setText(rxSize2.cap(6));
}
else if (rxErrors.exactMatch(line))
{
ui.errors->setText(rxErrors.cap(1));
Expand All @@ -116,10 +125,18 @@ JobWidget::JobWidget(QProcess* process, const QString& info, const QStringList&
{
ui.checks->setText(rxChecks.cap(1));
}
else if (rxChecks2.exactMatch(line))
{
ui.checks->setText(rxChecks2.cap(1));
}
else if (rxTransferred.exactMatch(line))
{
ui.transferred->setText(rxTransferred.cap(1));
}
else if (rxTransferred2.exactMatch(line))
{
ui.transferred->setText(rxTransferred2.cap(1));
}
else if (rxTime.exactMatch(line))
{
ui.elapsed->setText(rxTime.cap(1));
Expand Down Expand Up @@ -157,6 +174,41 @@ JobWidget::JobWidget(QProcess* process, const QString& info, const QStringList&
bar->setValue(rxProgress.cap(2).toInt());
bar->setToolTip(rxProgress.cap(3));

mUpdated.insert(label);
}
else if (rxProgress2.exactMatch(line))
{
QString name = rxProgress2.cap(1).trimmed();

auto it = mActive.find(name);

QLabel* label;
QProgressBar* bar;
if (it == mActive.end())
{
label = new QLabel();
label->setText(name);

bar = new QProgressBar();
bar->setMinimum(0);
bar->setMaximum(100);
bar->setTextVisible(true);

label->setBuddy(bar);

ui.progress->addRow(label, bar);

mActive.insert(name, label);
}
else
{
label = it.value();
bar = static_cast<QProgressBar*>(label->buddy());
}

bar->setValue(rxProgress2.cap(2).toInt());
bar->setToolTip("ETA: " + rxProgress2.cap(3));

mUpdated.insert(label);
}
}
Expand Down
7 changes: 6 additions & 1 deletion src/main_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ MainWindow::MainWindow()
}
if (rclone.isEmpty())
{
QMessageBox::information(this, "Error", "Cannot check rclone verison!\nPlease verify rclone location.");
QMessageBox::information(this, "Error", "Cannot check rclone version!\nPlease verify rclone location.");
emit ui.preferences->trigger();
}
else
Expand All @@ -198,6 +198,11 @@ void MainWindow::rcloneGetVersion()
if (code == 0)
{
QString version = p->readAllStandardOutput().trimmed();
int lineBreak = version.indexOf('\n');
if (lineBreak != -1)
{
version.remove(lineBreak, version.length() - lineBreak);
}
mStatusMessage->setText(version + " in " + QDir::toNativeSeparators(GetRclone()));
rcloneListRemotes();
}
Expand Down
2 changes: 1 addition & 1 deletion src/remote_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL
UseRclonePassword(&process);
process.setProgram(GetRclone());
process.setArguments(QStringList()
<< "move"
<< "moveto"
<< GetRcloneConf()
<< remote + ":" + path
<< remote + ":" + model->path(index.parent()).filePath(name));
Expand Down
2 changes: 1 addition & 1 deletion src/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ QStringList GetRcloneConf()
{
conf = QDir(qApp->applicationDirPath()).filePath(conf);
}
return QStringList() << "--config" << conf;
return QStringList() << " --config" << conf;
}

void SetRcloneConf(const QString& rcloneConf)
Expand Down