Compare commits

..

23 Commits

Author SHA1 Message Date
64ef7d9c87 bug in variable initialization 2025-03-24 14:42:27 +08:00
381054b340 update RsyncUI.pro 2025-03-24 14:04:45 +08:00
470b88f422 version 2.13.2 2025-03-24 00:52:46 +08:00
a235d2f745 sauvegarde 2025-03-21 13:44:27 +01:00
00e428c5b6 version 2.13.1 2024-10-19 12:30:10 +02:00
a766bffd85 added 'suspend' button 2024-10-19 12:29:49 +02:00
200006e50f version 2.13 2024-10-18 22:41:30 +02:00
029be91dc8 added 'suspend' button 2024-10-18 22:39:09 +02:00
fe3e68d205 version 2.12.10 2024-10-18 15:56:52 +02:00
51021023fc same bug 2024-10-18 15:56:33 +02:00
8ccab25a98 version 2.12.9 2024-10-18 15:52:26 +02:00
74e2283aa0 resolved bug with space in filename 2024-10-18 15:52:13 +02:00
67fb0a4b7e version 2.12.8 2024-10-18 12:03:40 +02:00
317a6b8010 same bug 2024-10-18 12:03:30 +02:00
e278a58aae version 2.12.7 2024-10-18 11:31:49 +02:00
afe4c6e9c9 resolved blocking bug when double-click on an item in file treeview 2024-10-18 11:31:44 +02:00
fb126c8b66 version 2.12.6 2024-10-14 18:31:09 +02:00
571da3d8a3 Corrected:\n- bug on ipv6\n- bug on saving settings 2024-10-14 18:30:12 +02:00
7d59b24df0 version 2.12.5 2024-09-17 21:39:59 +02:00
d07905eff0 adding debug 2024-09-17 21:39:31 +02:00
631ab3819e version 2.12.4 2024-09-15 17:30:48 +02:00
c805c47bbc added verification on port number 2024-09-15 17:30:16 +02:00
9bf749aefd - now select directory show the current directory for the server and service 2024-09-11 15:08:28 +02:00
15 changed files with 1595 additions and 1354 deletions

View File

@ -31,20 +31,20 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat
## Barre d'outils ## Barre d'outils
1er icône: Changer le dossier de destination 1er icône: Changer le dossier de destination
- Permet de changer le dossier de téléchargement par défaut pour chaque service de chaque serveur. - Permet de changer le dossier de téléchargement par défaut pour chaque service de chaque serveur.
2éme icône: Services cachés 2éme icône: Services cachés
- Permet de configurer un service caché. - Permet de configurer un service caché.
Il faut donner le nom du service et le mot de passe si besoin. Il faut donner le nom du service et le mot de passe si besoin.
3ème icône: Paramètres de l'application 3ème icône: Paramètres de l'application
- Limite de bande passante - Limite de bande passante
Permet de limiter le débit de téléchargement en Ko, Mo, Go, To et Po. Permet de limiter le débit de téléchargement en Ko, Mo, Go, To et Po.
Si la valeur est 0 alors pas de limite de la vitesse de téléchargement. Si la valeur est 0 alors pas de limite de la vitesse de téléchargement.
- Affichage de la barre d'outils - Affichage de la barre d'outils
Permet de choisir le style d'affichage des icônes de la barre d'outils Permet de choisir le style d'affichage des icônes de la barre d'outils
- Enregistrement automatique - Enregistrement automatique
Enregistre automatiquement la liste des téléchargements en cours.(activé par défaut) Enregistre automatiquement la liste des téléchargements en cours.(activé par défaut)
3ème icône: À propos 4ème icône: À propos
- Affiche les propriétés de l'application. - Affiche les propriétés de l'application.
4ème icône: À propos de QT 5ème icône: À propos de QT
5ème icône: Quitter 6ème icône: Quitter
Permet de quitter le programme. Permet de quitter le programme.

View File

@ -2,6 +2,7 @@ QT += core gui
QT += KItemViews QT += KItemViews
QT += KCompletion QT += KCompletion
QT += widgets QT += widgets
QT += network
LIBS += -lqt5keychain LIBS += -lqt5keychain
@ -14,29 +15,29 @@ CONFIG += c++17
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \ SOURCES += \
downloadfile.cpp \ downloadfile.cpp \
main.cpp \ main.cpp \
mainwindow.cpp \ mainwindow.cpp \
password.cpp \ password.cpp \
tools.cpp tools.cpp
HEADERS += \ HEADERS += \
version.h\ version.h\
downloadfile.h \ downloadfile.h \
mainwindow.h \ mainwindow.h \
password.h \ password.h \
tools.h tools.h
FORMS += \ FORMS += \
about.ui \ about.ui \
configuration.ui \ configuration.ui \
mainwindow.ui mainwindow.ui
TRANSLATIONS += \ TRANSLATIONS += \
RsyncUI_fr_FR.ts RsyncUI_fr_FR.ts
INCLUDEPATH += \ INCLUDEPATH += \
/usr/include/KF5 \ /usr/include/KF5 \
/usr/include/qt5keychain \ /usr/include/qt5keychain \
# Default rules for deployment. # Default rules for deployment.
@ -52,9 +53,9 @@ INSTALLS += icon
#RESOURCES += #RESOURCES +=
DISTFILES += \ DISTFILES += \
RsyncUI.desktop RsyncUI.desktop
lang.path = /languages/ lang.path = /languages/fr_FR/LC_MESSAGES/
lang.path = /usr/share/locale/ lang.path = /usr/share/locale/
lang.files = languages/* lang.files = languages/*
documentation.path = /usr/share/doc/RsyncUI documentation.path = /usr/share/doc/RsyncUI

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 9.0.1, 2024-08-29T01:07:20. --> <!-- Written by QtCreator 9.0.1, 2024-09-10T18:35:52. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@ -2,7 +2,7 @@
Name: rsyncui Name: rsyncui
Summary: Client for rsync server Summary: Client for rsync server
Version: 2.12.3 Version: 2.13.2
Release: %mkrel 1 Release: %mkrel 1
License: GPLv3 License: GPLv3
Group: Networking/Remote access Group: Networking/Remote access

Binary file not shown.

View File

@ -242,7 +242,7 @@ a file de téléchargement</translation>
<translation>Po</translation> <translation>Po</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="63"/> <location filename="mainwindow.cpp" line="71"/>
<source>You click on file to enqueue it, and RyncUI Download one file a time</source> <source>You click on file to enqueue it, and RyncUI Download one file a time</source>
<oldsource>Client for rsync server&lt;br&gt;&lt;br&gt;You click on file to enqueue it, and RyncUI Download one file a time</oldsource> <oldsource>Client for rsync server&lt;br&gt;&lt;br&gt;You click on file to enqueue it, and RyncUI Download one file a time</oldsource>
<translation>&lt;h3&gt;Utilisation&lt;/h3&gt; <translation>&lt;h3&gt;Utilisation&lt;/h3&gt;
@ -259,120 +259,130 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat
&lt;h3&gt;Barre d&apos;outils&lt;/h3&gt; &lt;h3&gt;Barre d&apos;outils&lt;/h3&gt;
&lt;b&gt;1er icône: Changer le dossier de destination&lt;/b&gt;&lt;br&gt; &lt;b&gt;1er icône: Changer le dossier de destination&lt;/b&gt;&lt;br&gt;
Permet de changer le dossier de téléchargement par défaut pour chaque service de chaque serveur.&lt;br&gt; Permet de changer le dossier de téléchargement par défaut pour chaque service de chaque serveur.&lt;br&gt;
&lt;b&gt;2ème icône: Services cachés&lt;/b&gt;&lt;br&gt; &lt;b&gt;2ème icône: Services cachés&lt;/b&gt;&lt;br&gt;
- Permet de configurer un service caché.&lt;br&gt; - Permet de configurer un service caché.&lt;br&gt;
Il faut donner le nom du service et le mot de passe si besoin.&lt;br&gt; Il faut donner le nom du service et le mot de passe si besoin.&lt;br&gt;
&lt;b&gt;3ème icône: Paramètres de l&apos;application&lt;/b&gt;&lt;br&gt; &lt;b&gt;3ème icône: Paramètres de l&apos;application&lt;/b&gt;&lt;br&gt;
Limite de bande passante: permet de limiter le débit de téléchargement en Ko, Mo, Go, To et Po.&lt;br&gt; Limite de bande passante: permet de limiter le débit de téléchargement en Ko, Mo, Go, To et Po.&lt;br&gt;
Si la valeur est 0 alors pas de limite de la vitesse de téléchargement.&lt;br&gt; Si la valeur est 0 alors pas de limite de la vitesse de téléchargement.&lt;br&gt;
- Affichage de la barre d&apos;outils&lt;br&gt; - Affichage de la barre d&apos;outils&lt;br&gt;
Permet de choisir le style d&apos;affichage des icônes de la barre d&apos;outils&lt;br&gt; Permet de choisir le style d&apos;affichage des icônes de la barre d&apos;outils&lt;br&gt;
- Enregistrement automatique&lt;br&gt; - Enregistrement automatique&lt;br&gt;
Enregistre automatiquement la liste des téléchargements en cours.(activé par défaut)&lt;br&gt; Enregistre automatiquement la liste des téléchargements en cours.(activé par défaut)&lt;br&gt;
&lt;b&gt;3ème icône: À propos&lt;/b&gt;&lt;br&gt; &lt;b&gt;4ème icône: À propos&lt;/b&gt;&lt;br&gt;
affiche les propriétés de l&apos;application, ainsi que l&apos;aide.&lt;br&gt; affiche les propriétés de l&apos;application, ainsi que l&apos;aide.&lt;br&gt;
&lt;b&gt;4ème icône: À propos de QT&lt;/b&gt;&lt;br&gt; &lt;b&gt;5ème icône: À propos de QT&lt;/b&gt;&lt;br&gt;
affiche les propriétés de QT&lt;br&gt; affiche les propriétés de QT&lt;br&gt;
&lt;b&gt;5ème icône: Quitter&lt;/b&gt;&lt;br&gt; &lt;b&gt;6ème icône: Quitter&lt;/b&gt;&lt;br&gt;
Permet de quitter le programme</translation> Permet de quitter le programme</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="72"/> <location filename="mainwindow.cpp" line="80"/>
<source>Path</source> <source>Path</source>
<translation>Chemin</translation> <translation>Chemin</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="72"/> <location filename="mainwindow.cpp" line="80"/>
<source>Size</source> <source>Size</source>
<translation>Taille</translation> <translation>Taille</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="72"/> <location filename="mainwindow.cpp" line="80"/>
<source>Type</source> <source>Type</source>
<translation>Type</translation> <translation>Type</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="72"/> <location filename="mainwindow.cpp" line="80"/>
<source>Date</source> <source>Date</source>
<translation>Date</translation> <translation>Date</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="87"/> <location filename="mainwindow.cpp" line="95"/>
<source>KB/s</source> <source>KB/s</source>
<translation>Ko/s</translation> <translation>Ko/s</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="87"/> <location filename="mainwindow.cpp" line="95"/>
<source>MB/s</source> <source>MB/s</source>
<translation>Mo/s</translation> <translation>Mo/s</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="87"/> <location filename="mainwindow.cpp" line="95"/>
<source>GB/s</source> <source>GB/s</source>
<translation>Go/s</translation> <translation>Go/s</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="87"/> <location filename="mainwindow.cpp" line="95"/>
<source>TB/s</source> <source>TB/s</source>
<translation>To/s</translation> <translation>To/s</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="87"/> <location filename="mainwindow.cpp" line="95"/>
<source>PB/s</source> <source>PB/s</source>
<translation>Po/s</translation> <translation>Po/s</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="131"/> <location filename="mainwindow.cpp" line="138"/>
<source>A list of interrupted downloads exists, do you want to continue downloading ? if not the list will be cleared</source> <source>A list of interrupted downloads exists, do you want to continue downloading ? if not the list will be cleared</source>
<translation>Une liste de téléchargement existe, voulez-vous utiliser cette liste ? si non, elle sera effacée</translation> <translation>Une liste de téléchargement existe, voulez-vous utiliser cette liste ? si non, elle sera effacée</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="133"/> <location filename="mainwindow.cpp" line="140"/>
<source>Delete</source> <source>Delete</source>
<translation>Effacer</translation> <translation>Effacer</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="165"/> <location filename="mainwindow.cpp" line="172"/>
<source>&amp;Quit</source> <source>&amp;Quit</source>
<translation>&amp;Quitter</translation> <translation>&amp;Quitter</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="232"/> <location filename="mainwindow.cpp" line="239"/>
<source>Clicking Save button, You can save the list of downloads <source>Clicking Save button, You can save the list of downloads
</source> </source>
<translation>Vous pouvez enregistrer la liste des téléchargements en cliquant sur &quot;enregister&quot; <translation>Vous pouvez enregistrer la liste des téléchargements en cliquant sur &quot;enregister&quot;
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="238"/> <location filename="mainwindow.cpp" line="245"/>
<source>Exiting will stop downloading, and will clear the download queue. <source>Exiting will stop downloading, and will clear the download queue.
Do you want to exit ?</source> Do you want to exit ?</source>
<translation>Si vous sortez, les téléchargements seront arrêter. <translation>Si vous sortez, les téléchargements seront arrêter.
Voulez-vous vraiment sortir ?</translation> Voulez-vous vraiment sortir ?</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="280"/> <location filename="mainwindow.cpp" line="287"/>
<source>The program will keep running in the system tray. To terminate the program, choose &lt;b&gt;Quit&lt;/b&gt; in the context menu of the system tray entry.</source> <source>The program will keep running in the system tray. To terminate the program, choose &lt;b&gt;Quit&lt;/b&gt; in the context menu of the system tray entry.</source>
<translation>Le programme continue dans la boîte à miniatures. Pour quitter le programme cliquez sur l&apos;icône &lt;b&gt;Quitter&lt;/b&gt; ou dans les menu contextuel.</translation> <translation>Le programme continue dans la boîte à miniatures. Pour quitter le programme cliquez sur l&apos;icône &lt;b&gt;Quitter&lt;/b&gt; ou dans les menu contextuel.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="657"/> <location filename="mainwindow.cpp" line="670"/>
<source>Authentication failed</source> <source>Authentication failed</source>
<translation>Mauvais mot de passe ou utilisateur</translation> <translation>Mauvais mot de passe ou utilisateur</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="716"/> <location filename="mainwindow.cpp" line="729"/>
<source>The processus does&apos;nt respond: </source> <source>The processus does&apos;nt respond: </source>
<translation>Le processus ne répond pas: </translation> <translation>Le processus ne répond pas: </translation>
</message> </message>
<message>
<location filename="mainwindow.cpp" line="834"/>
<source>Bad port number, correct it</source>
<translation>Numéro de port incorrect, corrigez le.</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="1386"/>
<source>You need to select a service before you can select a folder</source>
<translation>Vous devez sélectionner un service pour pouvoir sélectionner un dossier</translation>
</message>
<message> <message>
<source>server does not exists</source> <source>server does not exists</source>
<translation type="vanished">Le serveur n&apos;existe pas</translation> <translation type="vanished">Le serveur n&apos;existe pas</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="852"/> <location filename="mainwindow.cpp" line="872"/>
<location filename="mainwindow.cpp" line="1006"/> <location filename="mainwindow.cpp" line="1026"/>
<source>Dir</source> <source>Dir</source>
<translation>dossier</translation> <translation>dossier</translation>
</message> </message>
@ -381,51 +391,51 @@ Voulez-vous vraiment sortir ?</translation>
<translation type="vanished">Doc</translation> <translation type="vanished">Doc</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1035"/> <location filename="mainwindow.cpp" line="1055"/>
<source>File is partially downloaded. Do you want to resume download ? if no, the file will be deleted from destination directory</source> <source>File is partially downloaded. Do you want to resume download ? if no, the file will be deleted from destination directory</source>
<translation>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</translation> <translation>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</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1054"/> <location filename="mainwindow.cpp" line="1074"/>
<source>File is already downloaded. Do you want to reload it ? The old file will be deleted</source> <source>File is already downloaded. Do you want to reload it ? The old file will be deleted</source>
<translation>Le document est déjà téléchargé. Voulez-vous le télécharger à nouveau ? L&apos;ancien fichier sera effacé</translation> <translation>Le document est déjà téléchargé. Voulez-vous le télécharger à nouveau ? L&apos;ancien fichier sera effacé</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1089"/> <location filename="mainwindow.cpp" line="1109"/>
<source>File is already downloading</source> <source>File is already downloading</source>
<translation>Le document est déjà en téléchargement</translation> <translation>Le document est déjà en téléchargement</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1124"/> <location filename="mainwindow.cpp" line="1144"/>
<source>Starting downloading <source>Starting downloading
</source> </source>
<translation>Démarrage du téléchargement <translation>Démarrage du téléchargement
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1141"/> <location filename="mainwindow.cpp" line="1161"/>
<source>finished</source> <source>finished</source>
<translation>Terminé</translation> <translation>Terminé</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1151"/> <location filename="mainwindow.cpp" line="1171"/>
<source>Rsync process crashed</source> <source>Rsync process crashed</source>
<translation>Le processus rsync à planté</translation> <translation>Le processus rsync à planté</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1162"/> <location filename="mainwindow.cpp" line="1182"/>
<source>stopped by user</source> <source>stopped by user</source>
<translation>stoppé par l&apos;utilisateur</translation> <translation>stoppé par l&apos;utilisateur</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1173"/> <location filename="mainwindow.cpp" line="1193"/>
<source> <source>
Do you want to retry?</source> Do you want to retry?</source>
<translation> <translation>
Voulez-vous -essayer?</translation> Voulez-vous -essayer?</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1182"/> <location filename="mainwindow.cpp" line="1202"/>
<source>Download </source> <source>Download </source>
<translation>Téléchargement </translation> <translation>Téléchargement </translation>
</message> </message>
@ -434,73 +444,72 @@ Voulez-vous ré-essayer?</translation>
<translation type="vanished">Requête RsyncUI</translation> <translation type="vanished">Requête RsyncUI</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1545"/> <location filename="mainwindow.cpp" line="1566"/>
<source>Hidden service name</source> <source>Hidden service name</source>
<translation>Nom du servcice caché</translation> <translation>Nom du servcice caché</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="58"/> <location filename="mainwindow.cpp" line="66"/>
<source>Version</source> <source>Version</source>
<translation>Version</translation> <translation>Version</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="57"/> <location filename="mainwindow.cpp" line="65"/>
<source>&lt;h2&gt;Client for rsync server&lt;/h2&gt;</source> <source>&lt;h2&gt;Client for rsync server&lt;/h2&gt;</source>
<translation>&lt;h2&gt;Client pour serveur rsync&lt;/h2&gt;</translation> <translation>&lt;h2&gt;Client pour serveur rsync&lt;/h2&gt;</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="59"/> <location filename="mainwindow.cpp" line="67"/>
<source>Licence</source> <source>Licence</source>
<translation>License</translation> <translation>License</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="60"/> <location filename="mainwindow.cpp" line="68"/>
<source>Author</source> <source>Author</source>
<translation>Auteur</translation> <translation>Auteur</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="61"/> <location filename="mainwindow.cpp" line="69"/>
<source>EMail</source> <source>EMail</source>
<translation>Courriel</translation> <translation>Courriel</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="62"/> <location filename="mainwindow.cpp" line="70"/>
<source>Source code</source> <source>Source code</source>
<translation>Code source</translation> <translation>Code source</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="934"/> <location filename="mainwindow.cpp" line="954"/>
<source>Select the user you want to connect with or enter a new one</source> <source>Select the user you want to connect with or enter a new one</source>
<translation>Choisissez l&apos;utilisateur avec lequel vous voulez vous connecter ou entrez en un nouveau</translation> <translation>Choisissez l&apos;utilisateur avec lequel vous voulez vous connecter ou entrez en un nouveau</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="947"/> <location filename="mainwindow.cpp" line="967"/>
<location filename="mainwindow.cpp" line="1544"/> <location filename="mainwindow.cpp" line="1565"/>
<source> Request</source> <source> Request</source>
<translation> Requête de mot de passe</translation> <translation> Requête de mot de passe</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="948"/> <location filename="mainwindow.cpp" line="968"/>
<source>Enter password</source> <source>Enter password</source>
<translation>Entrez votre mot de passe</translation> <translation>Entrez votre mot de passe</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1365"/>
<source>Since the save path is linked to service, you need to select a service before you can select a folder</source> <source>Since the save path is linked to service, you need to select a service before you can select a folder</source>
<translation>Vous devez sélectionnez un service pour pouvoir sélectionnez un dossier par défaut</translation> <translation type="vanished">Vous devez sélectionnez un service pour pouvoir sélectionnez un dossier par défaut</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1370"/> <location filename="mainwindow.cpp" line="1394"/>
<source>Choose folder where to save file</source> <source>Choose folder where to save file</source>
<translation>Choisissez un dossier enregistrer le document</translation> <translation>Choisissez un dossier enregistrer le document</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1255"/> <location filename="mainwindow.cpp" line="1275"/>
<source>Do you want to stop downloading and delete this file from download queue ?</source> <source>Do you want to stop downloading and delete this file from download queue ?</source>
<translation>Voulez-vous arrêter le téléchargement et enlever ce fichier de la file de téléchargement ?</translation> <translation>Voulez-vous arrêter le téléchargement et enlever ce fichier de la file de téléchargement ?</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1270"/> <location filename="mainwindow.cpp" line="1290"/>
<source>Do you want to delete this file from download queue ?</source> <source>Do you want to delete this file from download queue ?</source>
<translation>Voulez-vous enlever ce fichier de la file de téléchargement ?</translation> <translation>Voulez-vous enlever ce fichier de la file de téléchargement ?</translation>
</message> </message>
@ -543,87 +552,87 @@ Voulez-vous ré-essayer?</translation>
<context> <context>
<name>QTranslator</name> <name>QTranslator</name>
<message> <message>
<location filename="mainwindow.cpp" line="17"/> <location filename="mainwindow.cpp" line="25"/>
<source>Success. The rsync command completed successfully without any errors.</source> <source>Success. The rsync command completed successfully without any errors.</source>
<translation>Succès. La command rsync s&apos;est terminée sans erreurs.</translation> <translation>Succès. La command rsync s&apos;est terminée sans erreurs.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="18"/> <location filename="mainwindow.cpp" line="26"/>
<source>Syntax or usage error. There was a problem with the syntax of the rsync command or with the options specified.</source> <source>Syntax or usage error. There was a problem with the syntax of the rsync command or with the options specified.</source>
<translation>Erreur de syntaxe ou d&apos;usage. il y a un problème avec la synaxe de rsync ou avec les paramètres spécifiés.</translation> <translation>Erreur de syntaxe ou d&apos;usage. il y a un problème avec la synaxe de rsync ou avec les paramètres spécifiés.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="19"/> <location filename="mainwindow.cpp" line="27"/>
<source>Protocol incompatibility. There was a problem with the protocol version or negotiation between the rsync client and server.</source> <source>Protocol incompatibility. There was a problem with the protocol version or negotiation between the rsync client and server.</source>
<translation>Incompatibilité de protocole. Il y a eu un problème avec la version du protocole ou la négotiation avec le serveur rsync.</translation> <translation>Incompatibilité de protocole. Il y a eu un problème avec la version du protocole ou la négotiation avec le serveur rsync.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="20"/> <location filename="mainwindow.cpp" line="28"/>
<source>Errors selecting input/output files, dirs. There was a problem with the source or destination file or directory specified in the rsync command.</source> <source>Errors selecting input/output files, dirs. There was a problem with the source or destination file or directory specified in the rsync command.</source>
<translation>Erreurs dans la sélection des fichiers ou dossiers. il y a eu une problème avec le fichier/dossier source ou destination spécifié.</translation> <translation>Erreurs dans la sélection des fichiers ou dossiers. il y a eu une problème avec le fichier/dossier source ou destination spécifié.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="21"/> <location filename="mainwindow.cpp" line="29"/>
<source>Requested action not supported: An attempt was made to use an unsupported action or option.</source> <source>Requested action not supported: An attempt was made to use an unsupported action or option.</source>
<translation>Action non suportée. Une tentative d&apos;utiliser une action, ou une option, non supportée à é faite.</translation> <translation>Action non suportée. Une tentative d&apos;utiliser une action, ou une option, non supportée à é faite.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="22"/> <location filename="mainwindow.cpp" line="30"/>
<source>Error starting client-server protocol. There was an error starting the client-server protocol.</source> <source>Error starting client-server protocol. There was an error starting the client-server protocol.</source>
<translation>Erreur de démarrage du protocole client-seveur. Il ya eu une erreur en démarrant le protocole slient-serveur.</translation> <translation>Erreur de démarrage du protocole client-seveur. Il ya eu une erreur en démarrant le protocole slient-serveur.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="23"/> <location filename="mainwindow.cpp" line="31"/>
<source>Daemon unable to append to log-file. The rsync daemon was unable to write to its log file.</source> <source>Daemon unable to append to log-file. The rsync daemon was unable to write to its log file.</source>
<translation>Le démon rsyncd n&apos;arrive pas écrire dans son fichier de log.</translation> <translation>Le démon rsyncd n&apos;arrive pas écrire dans son fichier de log.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="24"/> <location filename="mainwindow.cpp" line="32"/>
<source>Error in socket I/O. There was an error with the socket input/output.</source> <source>Error in socket I/O. There was an error with the socket input/output.</source>
<translation>Erreur d&apos;entrée/sortie socket. Il y a eu une erreur d&apos;entrée/sortie sur le socket.</translation> <translation>Erreur d&apos;entrée/sortie socket. Il y a eu une erreur d&apos;entrée/sortie sur le socket.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="25"/> <location filename="mainwindow.cpp" line="33"/>
<source>Error in file I/O. There was an error reading or writing to a file.</source> <source>Error in file I/O. There was an error reading or writing to a file.</source>
<translation>Erreur de &apos;entrée/sortie. Il y a eu une erreur de lecture/écriture sur un fichier.</translation> <translation>Erreur de &apos;entrée/sortie. Il y a eu une erreur de lecture/écriture sur un fichier.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="26"/> <location filename="mainwindow.cpp" line="34"/>
<source>Error in rsync protocol data stream. There was an error in the rsync protocol data stream.</source> <source>Error in rsync protocol data stream. There was an error in the rsync protocol data stream.</source>
<translation>Erreur dans le protocole de flux de données de rsync.</translation> <translation>Erreur dans le protocole de flux de données de rsync.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="27"/> <location filename="mainwindow.cpp" line="35"/>
<source>Errors with program diagnostics. There was an error generating program diagnostics.</source> <source>Errors with program diagnostics. There was an error generating program diagnostics.</source>
<translation>Erreur avec les diagnostiques du programme.</translation> <translation>Erreur avec les diagnostiques du programme.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="28"/> <location filename="mainwindow.cpp" line="36"/>
<source>Error in IPC code. There was an error in the inter-process communication (IPC) code.</source> <source>Error in IPC code. There was an error in the inter-process communication (IPC) code.</source>
<translation>Erreur dans le code IPC. IL y a eu une erreur dans la communication inter-processus.</translation> <translation>Erreur dans le code IPC. IL y a eu une erreur dans la communication inter-processus.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="29"/> <location filename="mainwindow.cpp" line="37"/>
<source>Received SIGUSR1 or SIGINT. The rsync process was interrupted by a signal.</source> <source>Received SIGUSR1 or SIGINT. The rsync process was interrupted by a signal.</source>
<translation>Reçu les signaux SIGUSR1 ou SIGINT. Le processus rsync a é interrompu par un signal.</translation> <translation>Reçu les signaux SIGUSR1 ou SIGINT. Le processus rsync a é interrompu par un signal.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="30"/> <location filename="mainwindow.cpp" line="38"/>
<source>Some error returned by waitpid(). An error occurred while waiting for a child process to complete.</source> <source>Some error returned by waitpid(). An error occurred while waiting for a child process to complete.</source>
<translation>Erreurs retournées par waitpid().Une erreur est survenue pendant l&apos;attente de la complétion du processus fils.</translation> <translation>Erreurs retournées par waitpid().Une erreur est survenue pendant l&apos;attente de la complétion du processus fils.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="31"/> <location filename="mainwindow.cpp" line="39"/>
<source>Error allocating core memory buffers. There was an error allocating memory buffers.</source> <source>Error allocating core memory buffers. There was an error allocating memory buffers.</source>
<translation>Erreur d&apos;allocation des buffers mémoire.</translation> <translation>Erreur d&apos;allocation des buffers mémoire.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="32"/> <location filename="mainwindow.cpp" line="40"/>
<source>Partial transfer due to error. The rsync command completed with an error, but some files may have been transferred successfully.</source> <source>Partial transfer due to error. The rsync command completed with an error, but some files may have been transferred successfully.</source>
<translation>Transfert partiel due à une erreur. La command rsync s&apos;est terminée avec une erreur, mais des fichiers on é transférés avec succès.</translation> <translation>Transfert partiel due à une erreur. La command rsync s&apos;est terminée avec une erreur, mais des fichiers on é transférés avec succès.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="33"/> <location filename="mainwindow.cpp" line="41"/>
<source>Partial transfer due to vanished source files. Some source files disappeared before they could be transferred.</source> <source>Partial transfer due to vanished source files. Some source files disappeared before they could be transferred.</source>
<translation>Transfert partiel à la disparition des fichiers source. Des fichiers source ont disparu avec d&apos;avoir é transférés.</translation> <translation>Transfert partiel à la disparition des fichiers source. Des fichiers source ont disparu avec d&apos;avoir é transférés.</translation>
</message> </message>

View File

@ -52,7 +52,7 @@ void MainWindow::download()
{ {
info(DEBUGMACRO, "Adding user to server (user@server"); info(DEBUGMACRO, "Adding user to server (user@server");
this->downloading.user = this->connexion.user; this->downloading.user = this->connexion.user;
server = this->connexion.user + "@" + this->downloading.server; server = this->connexion.user + "@" + "[" + this->downloading.server + "]";
env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable
this->downloading.process->setProcessEnvironment(env); this->downloading.process->setProcessEnvironment(env);
} }
@ -64,7 +64,7 @@ void MainWindow::download()
param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit]; param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit];
} }
ipversion = validateServer(server); ipversion = validateServer(&server);
if (downloading.ipversion == 4 || downloading.ipversion == 6) if (downloading.ipversion == 4 || downloading.ipversion == 6)
{ {
@ -74,7 +74,7 @@ void MainWindow::download()
param << "--port" << QString::number(this->downloading.port).trimmed(); param << "--port" << QString::number(this->downloading.port).trimmed();
param << "-aXP"; param << "-aXP";
param << "[" + server + "]::" + this->downloading.service.trimmed() + "/" + this->downloading.path.trimmed() << this->downloading.savePath.trimmed() + "/"; param << "[" + server + "]::" + this->downloading.service.trimmed() + "/" + preparePath(this->downloading.path) << preparePath(this->downloading.savePath) + "/";
info(DEBUGMACRO, cmd + " " + param.join(" ")); info(DEBUGMACRO, cmd + " " + param.join(" "));
@ -102,6 +102,7 @@ void MainWindow::readRsyncOutput()
{ {
list.clear(); list.clear();
line = QString::fromUtf8(this->downloading.process->readLine()); line = QString::fromUtf8(this->downloading.process->readLine());
info(DEBUGMACRO, "downloading progress : " + line);
if (line.isEmpty()) if (line.isEmpty())
{ {
break; break;

View File

@ -1,6 +1,7 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "tools.h" #include "tools.h"
#include <QTranslator> #include <QTranslator>
#include <QHostInfo>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -29,5 +30,6 @@ int main(int argc, char *argv[])
MainWindow w; MainWindow w;
info(DEBUGMACRO, "RsyncUI begining"); info(DEBUGMACRO, "RsyncUI begining");
w.show(); w.show();
return a.exec(); return a.exec();
} }

File diff suppressed because it is too large Load Diff

View File

@ -51,42 +51,45 @@ extern QMap<int, QString> rsyncErrorStrings;
class Connexion class Connexion
{ {
public: public:
int bandwidthLimit = 0; int bandwidthLimit = 0;
int bandwidthLimitUnit; int bandwidthLimitUnit;
int contimeout = 20; int contimeout = 20;
QString server; QString server;
QString service; QString service;
QString path; QString path;
QString savePath; QString savePath;
QString user; QString user;
QString password; QString password;
QProcess * process = nullptr; QProcess * process = nullptr;
int ipversion = 4; int ipversion = 4;
uint port = 873; uint port = 873;
bool quit = false; bool quit = false;
void clear(); void clear();
bool paused = false;
}; };
class Downloading class Downloading
{ {
public: public:
QString server; QString server;
QString service; QString service;
QString path; QString path;
QString savePath; QString savePath;
QString user; QString user;
QString password; QString password;
int ipversion = 4; int ipversion = 4;
int port = 873; int port = 873;
QProcess * process = nullptr; QProcess * process = nullptr;
bool quit = false; bool quit = false;
void clear(); bool paused = false;
void clear();
}; };
class About class About
{ {
public: public:
QString version; QString version;
QString author = "Daniel TARTAVEL-JEANNOT"; QString author = "Daniel TARTAVEL-JEANNOT";
QString licence = "GPL_V3"; QString licence = "GPL_V3";
@ -99,7 +102,7 @@ class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public: public:
Ui::MainWindow *ui; Ui::MainWindow *ui;
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget *parent = nullptr);
~MainWindow(); ~MainWindow();
@ -117,27 +120,27 @@ class MainWindow : public QMainWindow
QSystemTrayIcon * trayIcon; QSystemTrayIcon * trayIcon;
QString icon = "/usr/share/icons/RsyncUI.png"; QString icon = "/usr/share/icons/RsyncUI.png";
bool rescan = false; bool rescan = false;
bool stopDlAsked; bool stopDlAsked = false;
bool treeviewClicked; bool treeviewClicked = false;
bool initialization = true; bool initialization = true;
bool exiting = false; bool exiting = false;
QList<QString> UnitText QList<QString> UnitText
{ {
tr("B"), tr("B"),
tr("KB"), tr("KB"),
tr("MB"), tr("MB"),
tr("GB"), tr("GB"),
tr("TB"), tr("TB"),
tr("PB") tr("PB")
}; };
QList<QChar> bwUnitChar QList<QChar> bwUnitChar
{ {
'K', 'K',
'M', 'M',
'T', 'T',
'G', 'G',
'P' 'P'
}; };
QVector<QString> downloadProcessErrorString = QVector<QString> downloadProcessErrorString =
@ -154,7 +157,7 @@ class MainWindow : public QMainWindow
void populateTree(); void populateTree();
void populateList(QString server, uint port); void populateList(QString server, uint port);
void listServices(); void listServices();
uint validateServer(QString server); uint validateServer(QString * server);
void addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir, QString dirName, QTreeWidgetItem *parent); void addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir, QString dirName, QTreeWidgetItem *parent);
bool scanDir(Connexion * connexion, QTreeWidgetItem *parent = NULL, QString path = "" ); bool scanDir(Connexion * connexion, QTreeWidgetItem *parent = NULL, QString path = "" );
void startDownloading(); void startDownloading();
@ -175,7 +178,7 @@ class MainWindow : public QMainWindow
void passwordStore (QString account, QString password); void passwordStore (QString account, QString password);
QString passwordGet (QString account); QString passwordGet (QString account);
private slots: private slots:
void on_listWidget_clicked(); void on_listWidget_clicked();
@ -219,7 +222,13 @@ class MainWindow : public QMainWindow
//void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); //void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
signals: void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_treeWidget_doubleClicked(const QModelIndex &index);
void on_actionPause_downloads_triggered();
signals:
void stopDownloading(QProcess *); void stopDownloading(QProcess *);
void progressSignal(int); void progressSignal(int);
void speed(QString); void speed(QString);

View File

@ -159,13 +159,13 @@
<set>Qt::ImhPreferNumbers</set> <set>Qt::ImhPreferNumbers</set>
</property> </property>
<property name="inputMask"> <property name="inputMask">
<string/> <string notr="true"/>
</property> </property>
<property name="text"> <property name="text">
<string comment="numéro"/> <string notr="true" comment="numéro"/>
</property> </property>
<property name="maxLength"> <property name="maxLength">
<number>6</number> <number>5</number>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -407,6 +407,7 @@
<addaction name="actionAbout"/> <addaction name="actionAbout"/>
<addaction name="actionAbout_Qt"/> <addaction name="actionAbout_Qt"/>
<addaction name="actionExit"/> <addaction name="actionExit"/>
<addaction name="actionPause_downloads"/>
</widget> </widget>
<action name="DefaultSaveFolder"> <action name="DefaultSaveFolder">
<property name="icon"> <property name="icon">
@ -479,6 +480,20 @@
<string>hidden service</string> <string>hidden service</string>
</property> </property>
</action> </action>
<action name="actionPause_downloads">
<property name="icon">
<iconset theme="media-playback-pause"/>
</property>
<property name="text">
<string>Stop/resume downloads</string>
</property>
<property name="toolTip">
<string>Stop/resume downloading </string>
</property>
<property name="shortcut">
<string>P</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@ -1,6 +1,8 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "tools.h" #include "tools.h"
#include "password.h" #include "password.h"
#include <QTextStream>
#include <QHostAddress>
using namespace std; using namespace std;
@ -53,15 +55,31 @@ QString getFileType(QString filename)
return returnValue; return returnValue;
} }
QString preparePath(QString path)
{
return path.trimmed().replace(' ', "\ ");
}
int whatIpVersion(QString ipAddress) int whatIpVersion(QString ipAddress)
{ {
QStringList fieldList; QStringList fieldList;
ulong field; // ulong field;
uint i; // uint i;
uint ipversion;
QHostAddress serverAddress;
info(DEBUGMACRO, "ipVersion of server at " + ipAddress); info(DEBUGMACRO, "ipVersion of server at " + ipAddress);
fieldList = ipAddress.split(":"); if (!serverAddress.setAddress(ipAddress))
{
error ("Address " + ipAddress + " is bad");
}
ipversion = serverAddress.protocol();
return (ipversion==IPV4?4:6);
/*fieldList = ipAddress.split(":");
if (fieldList.count() == 8) if (fieldList.count() == 8)
{ {
for (i=0;i<8;i++) for (i=0;i<8;i++)
@ -88,8 +106,41 @@ int whatIpVersion(QString ipAddress)
} }
info(DEBUGMACRO, "Address is ip V4"); info(DEBUGMACRO, "Address is ip V4");
return 4; return 4;
}*/
}
QHostAddress searchHosts(QString server)
{
QString line = "";
QStringList hosts;
QFile fileHandle("/etc/hosts");
QHostAddress serverAddress;
info(DEBUGMACRO, "reading /etc/hosts");
if (!fileHandle.open(QIODevice::ReadOnly))
{
QMessageBox::information(0,MainWindow::tr("Error"), fileHandle.errorString());
}else
{
QTextStream in(&fileHandle);
while(!in.atEnd())
{
line = in.readLine();
hosts = line.split(QRegularExpression("\\s+"));
if (hosts.contains(server))
{
//if (!serverAddress.isNull()) // and serverAddress.protocol() == QAbstractSocket::IPv4Protocol)
//{
if (!serverAddress.setAddress(hosts.first()))
{
error("Error setting address " + hosts.first());
}
//}
}
}
} }
return 0; return serverAddress;
} }
void warning(QString message) void warning(QString message)

View File

@ -3,6 +3,10 @@
#define DEBUGMACRO QString(__FILE__) + "->" + QString(Q_FUNC_INFO) + ": " + QString::number(__LINE__) + " -" #define DEBUGMACRO QString(__FILE__) + "->" + QString(Q_FUNC_INFO) + ": " + QString::number(__LINE__) + " -"
#define IPV4 0
#define IPV6 1
#include <QHostAddress>
#include <string> #include <string>
#include <vector> #include <vector>
#include <array> #include <array>
@ -22,5 +26,7 @@ int whatIpVersion(QString server);
void warning(QString message); void warning(QString message);
void error(QString message); void error(QString message);
void info(QString debugHeader, QString message); void info(QString debugHeader, QString message);
QString preparePath(QString path);
QHostAddress searchHosts(QString server);
#endif // TOOLS_H #endif // TOOLS_H

View File

@ -3,6 +3,6 @@
#include <QString> #include <QString>
QString version = "2.12.3"; QString version = "2.13.2";
#endif // VERSION_H #endif // VERSION_H