From f3c361f155876122d373f7b6aa86124a0fda297f Mon Sep 17 00:00:00 2001 From: Daniel Tartavel Date: Wed, 22 Feb 2023 00:48:16 +0100 Subject: [PATCH] corrected regression: resuming downloadlist download did not start\n added downloading speed in progress bar --- RsyncUI.pro.user | 2 +- RsyncUI_fr_FR.ts | 70 ++++++++++++++++++++++++------------------------ downloadfile.cpp | 50 +++++++++++++++++++++++----------- mainwindow.h | 5 ++++ 4 files changed, 75 insertions(+), 52 deletions(-) diff --git a/RsyncUI.pro.user b/RsyncUI.pro.user index 798c730..c282129 100644 --- a/RsyncUI.pro.user +++ b/RsyncUI.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/RsyncUI_fr_FR.ts b/RsyncUI_fr_FR.ts index 33ea27f..30279ea 100644 --- a/RsyncUI_fr_FR.ts +++ b/RsyncUI_fr_FR.ts @@ -183,27 +183,27 @@ Paramètres - + KB Ko - + MB Mo - + GB Go - + TB To - + PB Po @@ -245,17 +245,17 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat <h2>Client pour serveur rsync<2><br><br>éaa - + Path Chemin - + Size Taille - + Type Type @@ -265,85 +265,85 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat Une liste de téléchargement existe, voulez-vous utiliser cette liste ? si non, elle sera effacée - + &Quit &Quitter - + Clicking Save button, You can save the list of downloads Vous pouvez enregistrer la liste des téléchargements en cliquant sur "enregister" - + Exiting will stop downloading, and will clear the download queue. Do you want to exit ? Si vous sortez, les téléchargements seront arrêter. Voulez-vous vraiment sortir ? - + The program will keep running in the system tray. To terminate the program, choose <b>Quit</b> in the context menu of the system tray entry. Le programme continue dans la boîte à miniatures. Pour quitter le programme cliquez sur l'icône <b>Quitter</b> ou dans les menu contextuel. - + server does not exists Le serveur n'existe pas - - + + Dir dossier - - + + File Doc - + File is partially downloaded. Do you want to resume download ? if no, the file will be deleted from destination directory Le document est déjà partiellement téléchargé. Voulez vous continuer le téléchargemnt ? Si non, il sera supprimer du dossier de destination - + File is already downloaded. Do you want to reload it ? The old file will be deleted Le document est déjà téléchargé. Voulez-vous le télécharger à nouveau ? L'ancien fichier sera effacé - + File is already downloading Le document est déjà en téléchargement - + Starting downloading Démarrage du téléchargement - + finished Terminé - + Rsync process crashed Le processus rsync à planté - + stopped by user stoppé par l'utilisateur - + Download Téléchargement @@ -378,52 +378,52 @@ Voulez-vous vraiment sortir ? Code source - + Since the save path is linked to service, you need to select a service before you can select a folder Vous devez sélectionnez un service pour pouvoir sélectionnez un dossier par défaut - + Choose folder where to save file Choisissez un dossier où enregistrer le document - + Do you want to stop downloading and delete this file from download queue ? Voulez-vous arrêter le téléchargement et enlever ce fichier de la file de téléchargement ? - + Do you want to delete this file from download queue ? Voulez-vous enlever ce fichier de la file de téléchargement ? - + The process failed to start. Either the invoked program is missing, or you may have insufficient permissions or resources to invoke the program. Le processus échoué, soit le programme est manquant, soit vous n'avez pas l'autorisation de l'exécuter. - + The process crashed some time after starting successfully. Le processus à planté après avoir démarré avec succès. - + The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again. La fonction waitFor...() a dépassé la limite de temps, you pouvez essayer de la relancer. - + An error occurred when attempting to write to the process. For example, the process may not be running, or it may have closed its input channel. Une erreur est survenue lors de l'envoi des données vers le processus. Le processus est peut être arrté ou il a fermé son canal d'entrée. - + An error occurred when attempting to read from the process. For example, the process may not be running. Une erreur est survenue lors de la lecturee de données, le processus est probablement arrêté. - + An unknown error occurred. This is the default return value of error(). Une erreur inconnue est survenue. C'est la valeur de retour par défaut de error(). diff --git a/downloadfile.cpp b/downloadfile.cpp index 43cba48..1bbd803 100644 --- a/downloadfile.cpp +++ b/downloadfile.cpp @@ -49,7 +49,7 @@ void MainWindow::download() { param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit]; } - param << "--port=" + QString::number(this->connexion.port); + param << "--port=" + QString::number(this->downloading.port); param << "-aXP"; param << this->downloading.server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/"; @@ -69,32 +69,50 @@ void MainWindow::readRsyncOutput() 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; - } - pos = line.indexOf("%"); - if (pos != -1) - { - line.resize(pos); - pos = line.lastIndexOf(' '); - if (pos != -1) - { - line.remove(0, pos); - value = line.toInt(); - // sending progress to Main window - emit progressSignal(value); - } }else { - if (!line.contains("receiving")) + pos = line.indexOf("%"); + if (pos != -1) { - emit fileName(line.remove(QChar('\n'), Qt::CaseInsensitive) + " %p%"); + 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); + } } } } diff --git a/mainwindow.h b/mainwindow.h index dde7341..a5031b1 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +69,7 @@ class Downloading QString service; QString path; QString savePath; + int port; QProcess * process = nullptr; bool quit = false; void clear(); @@ -198,9 +200,12 @@ class MainWindow : public QMainWindow void on_actionExit_triggered(); + void setDlSpeed(QString speed); + signals: void stopDownloading(QProcess *); void progressSignal(int); + void speed(QString); void finishedSignal(bool = true); void fileName(QString); //void errorSignal(QString);