Compare commits

..

13 Commits

Author SHA1 Message Date
ec38ce4ec3 version 2.12.1 2024-08-03 15:22:35 +02:00
916cbc6d5b version 2.12 2023-10-11 21:40:01 +02:00
cf0216e02a bugs resolution 2023-10-10 23:14:31 +02:00
1fa3ec00bc version 2.11.8 2023-06-08 19:07:18 +02:00
b19f545958 version 2.11.7 2023-06-08 19:03:05 +02:00
f882ca5e42 bug resolved 2023-05-01 14:27:20 +02:00
c811f3db4f version 2.11.6 2023-04-27 11:43:06 +02:00
fc4f896d86 - resolved a bug in retrying donwload 2023-04-27 11:42:53 +02:00
f1a024c4b8 version 2.11.5 2023-04-26 17:30:55 +02:00
975361c8c9 bug in asking password resolved. 2023-04-26 17:30:38 +02:00
659498c826 version 2.11.4 2023-04-11 22:24:43 +02:00
636801fa29 version 2.11.3 2023-04-11 21:59:51 +02:00
de184ea284 added buildrequire in spec 2023-03-18 14:05:55 +01:00
16 changed files with 1090 additions and 502 deletions

173
Makefile
View File

@ -1,9 +1,9 @@
############################################################################# #############################################################################
# Makefile for building: RsyncUI # Makefile for building: RsyncUI
# Generated by qmake (3.1) (Qt 5.15.2) # Generated by qmake (3.1) (Qt 5.15.7)
# Project: RsyncUI.pro # Project: RsyncUI.pro
# Template: app # Template: app
# Command: /usr/bin/qmake -o Makefile RsyncUI.pro # Command: /usr/lib64/qt5/bin/qmake -o Makefile RsyncUI.pro -spec linux-g++
############################################################################# #############################################################################
MAKEFILE = Makefile MAKEFILE = Makefile
@ -14,11 +14,11 @@ EQ = =
CC = gcc CC = gcc
CXX = g++ CXX = g++
DEFINES = -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_XML_LIB -DQT_DBUS_LIB -DQT_CORE_LIB DEFINES = -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_DBUS_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES) CFLAGS = -pipe -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -std=gnu++0x -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES) CXXFLAGS = -pipe -std=gnu++0x -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -I/usr/include/KF5 -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtConcurrent -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I. -I. -I/usr/lib64/qt5/mkspecs/linux-g++ INCPATH = -I. -I/usr/include/KF5 -I/usr/include/qt5keychain -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/KF5/KConfig -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I. -I. -I/usr/lib64/qt5/mkspecs/linux-g++
QMAKE = /usr/bin/qmake QMAKE = /usr/lib64/qt5/bin/qmake
DEL_FILE = rm -f DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p MKDIR = mkdir -p
@ -28,8 +28,8 @@ COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R INSTALL_DIR = cp -f -R
QINSTALL = /usr/bin/qmake -install qinstall QINSTALL = /usr/lib64/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/bin/qmake -install qinstall -exe QINSTALL_PROGRAM = /usr/lib64/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f DEL_FILE = rm -f
SYMLINK = ln -f -s SYMLINK = ln -f -s
DEL_DIR = rmdir DEL_DIR = rmdir
@ -40,7 +40,7 @@ DISTNAME = RsyncUI1.0.0
DISTDIR = /home/daniel/develop/RsyncUI/.tmp/RsyncUI1.0.0 DISTDIR = /home/daniel/develop/RsyncUI/.tmp/RsyncUI1.0.0
LINK = g++ LINK = g++
LFLAGS = -Wl,-O1 LFLAGS = -Wl,-O1
LIBS = $(SUBLIBS) /usr/lib64/libKF5ItemViews.so /usr/lib64/libKF5Completion.so /usr/lib64/libQt5Widgets.so /usr/lib64/libKF5ConfigGui.so /usr/lib64/libQt5Gui.so /usr/lib64/libQt5Concurrent.so /usr/lib64/libKF5ConfigCore.so /usr/lib64/libQt5Xml.so /usr/lib64/libKF5CoreAddons.so /usr/lib64/libKF5DBusAddons.so /usr/lib64/libQt5DBus.so /usr/lib64/libQt5Core.so -lGL -lpthread LIBS = $(SUBLIBS) -lqt5keychain /usr/lib64/libKF5ItemViews.so /usr/lib64/libKF5Completion.so /usr/lib64/libQt5Widgets.so /usr/lib64/libKF5ConfigGui.so /usr/lib64/libQt5Gui.so /usr/lib64/libKF5ConfigCore.so /usr/lib64/libQt5Xml.so /usr/lib64/libKF5CoreAddons.so /usr/lib64/libKF5DBusAddons.so /usr/lib64/libQt5DBus.so /usr/lib64/libQt5Core.so -lGL -lpthread
AR = ar cqs AR = ar cqs
RANLIB = RANLIB =
SED = sed SED = sed
@ -55,15 +55,18 @@ OBJECTS_DIR = ./
SOURCES = downloadfile.cpp \ SOURCES = downloadfile.cpp \
main.cpp \ main.cpp \
mainwindow.cpp \ mainwindow.cpp \
password.cpp \
tools.cpp moc_downloadfile.cpp \ tools.cpp moc_downloadfile.cpp \
moc_mainwindow.cpp moc_mainwindow.cpp
OBJECTS = downloadfile.o \ OBJECTS = downloadfile.o \
main.o \ main.o \
mainwindow.o \ mainwindow.o \
password.o \
tools.o \ tools.o \
moc_downloadfile.o \ moc_downloadfile.o \
moc_mainwindow.o moc_mainwindow.o
DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ DIST = RsyncUI.desktop \
/usr/lib64/qt5/mkspecs/features/spec_pre.prf \
/usr/lib64/qt5/mkspecs/common/unix.conf \ /usr/lib64/qt5/mkspecs/common/unix.conf \
/usr/lib64/qt5/mkspecs/common/linux.conf \ /usr/lib64/qt5/mkspecs/common/linux.conf \
/usr/lib64/qt5/mkspecs/common/sanitize.conf \ /usr/lib64/qt5/mkspecs/common/sanitize.conf \
@ -168,6 +171,8 @@ DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \
@ -179,6 +184,10 @@ DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri \
@ -196,10 +205,12 @@ DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Qt5Keychain.pri \
/usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri \ /usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Solid.pri \ /usr/lib64/qt5/mkspecs/modules/qt_Solid.pri \
/usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Syndication.pri \
/usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri \ /usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri \
/usr/lib64/qt5/mkspecs/features/qt_functions.prf \ /usr/lib64/qt5/mkspecs/features/qt_functions.prf \
/usr/lib64/qt5/mkspecs/features/qt_config.prf \ /usr/lib64/qt5/mkspecs/features/qt_config.prf \
@ -228,11 +239,14 @@ DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \
/usr/lib64/qt5/mkspecs/features/exceptions.prf \ /usr/lib64/qt5/mkspecs/features/exceptions.prf \
/usr/lib64/qt5/mkspecs/features/yacc.prf \ /usr/lib64/qt5/mkspecs/features/yacc.prf \
/usr/lib64/qt5/mkspecs/features/lex.prf \ /usr/lib64/qt5/mkspecs/features/lex.prf \
RsyncUI.pro downloadfile.h \ RsyncUI.pro version.h \
downloadfile.h \
mainwindow.h \ mainwindow.h \
password.h \
tools.h downloadfile.cpp \ tools.h downloadfile.cpp \
main.cpp \ main.cpp \
mainwindow.cpp \ mainwindow.cpp \
password.cpp \
tools.cpp tools.cpp
QMAKE_TARGET = RsyncUI QMAKE_TARGET = RsyncUI
DESTDIR = DESTDIR =
@ -242,7 +256,7 @@ TARGET = RsyncUI
first: all first: all
####### Build rules ####### Build rules
RsyncUI: ui_mainwindow.h $(OBJECTS) RsyncUI: ui_about.h ui_configuration.h ui_mainwindow.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5/mkspecs/features/spec_pre.prf \
@ -350,6 +364,8 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \
@ -361,6 +377,10 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri \
@ -378,10 +398,12 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Qt5Keychain.pri \
/usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri \ /usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Solid.pri \ /usr/lib64/qt5/mkspecs/modules/qt_Solid.pri \
/usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Syndication.pri \
/usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri \ /usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri \
/usr/lib64/qt5/mkspecs/features/qt_functions.prf \ /usr/lib64/qt5/mkspecs/features/qt_functions.prf \
/usr/lib64/qt5/mkspecs/features/qt_config.prf \ /usr/lib64/qt5/mkspecs/features/qt_config.prf \
@ -411,7 +433,7 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/features/yacc.prf \ /usr/lib64/qt5/mkspecs/features/yacc.prf \
/usr/lib64/qt5/mkspecs/features/lex.prf \ /usr/lib64/qt5/mkspecs/features/lex.prf \
RsyncUI.pro RsyncUI.pro
$(QMAKE) -o Makefile RsyncUI.pro $(QMAKE) -o Makefile RsyncUI.pro -spec linux-g++
/usr/lib64/qt5/mkspecs/features/spec_pre.prf: /usr/lib64/qt5/mkspecs/features/spec_pre.prf:
/usr/lib64/qt5/mkspecs/common/unix.conf: /usr/lib64/qt5/mkspecs/common/unix.conf:
/usr/lib64/qt5/mkspecs/common/linux.conf: /usr/lib64/qt5/mkspecs/common/linux.conf:
@ -517,6 +539,8 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_serialport_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri:
@ -528,6 +552,10 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_webchannel_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_webengine.pri:
@ -545,10 +573,12 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri: /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_Qt5Keychain.pri:
/usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri: /usr/lib64/qt5/mkspecs/modules/qt_QuickAddons.pri:
/usr/lib64/qt5/mkspecs/modules/qt_Solid.pri: /usr/lib64/qt5/mkspecs/modules/qt_Solid.pri:
/usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri: /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri: /usr/lib64/qt5/mkspecs/modules/qt_SonnetUi.pri:
/usr/lib64/qt5/mkspecs/modules/qt_Syndication.pri:
/usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri: /usr/lib64/qt5/mkspecs/modules/qt_ThreadWeaver.pri:
/usr/lib64/qt5/mkspecs/features/qt_functions.prf: /usr/lib64/qt5/mkspecs/features/qt_functions.prf:
/usr/lib64/qt5/mkspecs/features/qt_config.prf: /usr/lib64/qt5/mkspecs/features/qt_config.prf:
@ -579,7 +609,7 @@ Makefile: RsyncUI.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5
/usr/lib64/qt5/mkspecs/features/lex.prf: /usr/lib64/qt5/mkspecs/features/lex.prf:
RsyncUI.pro: RsyncUI.pro:
qmake: FORCE qmake: FORCE
@$(QMAKE) -o Makefile RsyncUI.pro @$(QMAKE) -o Makefile RsyncUI.pro -spec linux-g++
qmake_all: FORCE qmake_all: FORCE
@ -593,10 +623,10 @@ distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR) @test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/ $(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib64/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ $(COPY_FILE) --parents /usr/lib64/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents downloadfile.h mainwindow.h tools.h $(DISTDIR)/ $(COPY_FILE) --parents version.h downloadfile.h mainwindow.h password.h tools.h $(DISTDIR)/
$(COPY_FILE) --parents downloadfile.cpp main.cpp mainwindow.cpp tools.cpp $(DISTDIR)/ $(COPY_FILE) --parents downloadfile.cpp main.cpp mainwindow.cpp password.cpp tools.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/ $(COPY_FILE) --parents about.ui configuration.ui mainwindow.ui $(DISTDIR)/
$(COPY_FILE) --parents languages/RsyncUI_fr_FR.ts $(DISTDIR)/ $(COPY_FILE) --parents RsyncUI_fr_FR.ts $(DISTDIR)/
clean: compiler_clean clean: compiler_clean
@ -626,31 +656,43 @@ compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean: compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h -$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib64/qt5/mkspecs/features/data/dummy.cpp moc_predefs.h: /usr/lib64/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -std=gnu++0x -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib64/qt5/mkspecs/features/data/dummy.cpp g++ -pipe -std=gnu++0x -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables -fno-strict-aliasing -DPIC -fPIC -std=gnu++1z -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib64/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_downloadfile.cpp moc_mainwindow.cpp compiler_moc_header_make_all: moc_downloadfile.cpp moc_mainwindow.cpp
compiler_moc_header_clean: compiler_moc_header_clean:
-$(DEL_FILE) moc_downloadfile.cpp moc_mainwindow.cpp -$(DEL_FILE) moc_downloadfile.cpp moc_mainwindow.cpp
moc_downloadfile.cpp: downloadfile.h \ moc_downloadfile.cpp: downloadfile.h \
ui_mainwindow.h \
moc_predefs.h \ moc_predefs.h \
/usr/lib64/qt5/bin/moc /usr/lib64/qt5/bin/moc
/usr/lib64/qt5/bin/moc $(DEFINES) --include /home/daniel/develop/RsyncUI/moc_predefs.h -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/daniel/develop/RsyncUI -I/usr/include/KF5 -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtConcurrent -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I/usr/include/c++/10 -I/usr/include/c++/10/x86_64-mageia-linux-gnu -I/usr/include/c++/10/backward -I/usr/lib/gcc/x86_64-mageia-linux-gnu/10/include -I/usr/local/include -I/usr/include downloadfile.h -o moc_downloadfile.cpp /usr/lib64/qt5/bin/moc $(DEFINES) --include /home/daniel/develop/RsyncUI/moc_predefs.h -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/daniel/develop/RsyncUI -I/usr/include/KF5 -I/usr/include/qt5keychain -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/KF5/KConfig -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I/usr/include/c++/12 -I/usr/include/c++/12/x86_64-mageia-linux -I/usr/include/c++/12/backward -I/usr/lib/gcc/x86_64-mageia-linux/12/include -I/usr/local/include -I/usr/include downloadfile.h -o moc_downloadfile.cpp
moc_mainwindow.cpp: mainwindow.h \ moc_mainwindow.cpp: mainwindow.h \
downloadfile.h \
ui_mainwindow.h \ ui_mainwindow.h \
ui_configuration.h \
ui_about.h \
downloadfile.h \
tools.h \
password.h \
mainwindow.h \
moc_predefs.h \ moc_predefs.h \
/usr/lib64/qt5/bin/moc /usr/lib64/qt5/bin/moc
/usr/lib64/qt5/bin/moc $(DEFINES) --include /home/daniel/develop/RsyncUI/moc_predefs.h -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/daniel/develop/RsyncUI -I/usr/include/KF5 -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtConcurrent -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I/usr/include/c++/10 -I/usr/include/c++/10/x86_64-mageia-linux-gnu -I/usr/include/c++/10/backward -I/usr/lib/gcc/x86_64-mageia-linux-gnu/10/include -I/usr/local/include -I/usr/include mainwindow.h -o moc_mainwindow.cpp /usr/lib64/qt5/bin/moc $(DEFINES) --include /home/daniel/develop/RsyncUI/moc_predefs.h -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/daniel/develop/RsyncUI -I/usr/include/KF5 -I/usr/include/qt5keychain -I/usr/include/KF5/KItemViews -I/usr/include/KF5/KCompletion -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/KF5/KConfigGui -I/usr/include/qt5/QtGui -I/usr/include/KF5/KConfig -I/usr/include/KF5/KConfigCore -I/usr/include/qt5/QtXml -I/usr/include/KF5/KCoreAddons -I/usr/include/KF5/KDBusAddons -I/usr/include/qt5/QtDBus -I/usr/include/qt5/QtCore -I/usr/include/c++/12 -I/usr/include/c++/12/x86_64-mageia-linux -I/usr/include/c++/12/backward -I/usr/lib/gcc/x86_64-mageia-linux/12/include -I/usr/local/include -I/usr/include mainwindow.h -o moc_mainwindow.cpp
compiler_moc_objc_header_make_all: compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean: compiler_moc_objc_header_clean:
compiler_moc_source_make_all: compiler_moc_source_make_all:
compiler_moc_source_clean: compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h compiler_uic_make_all: ui_about.h ui_configuration.h ui_mainwindow.h
compiler_uic_clean: compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h -$(DEL_FILE) ui_about.h ui_configuration.h ui_mainwindow.h
ui_about.h: about.ui \
/usr/lib64/qt5/bin/uic
/usr/lib64/qt5/bin/uic about.ui -o ui_about.h
ui_configuration.h: configuration.ui \
/usr/lib64/qt5/bin/uic
/usr/lib64/qt5/bin/uic configuration.ui -o ui_configuration.h
ui_mainwindow.h: mainwindow.ui \ ui_mainwindow.h: mainwindow.ui \
/usr/lib64/qt5/bin/uic \ /usr/lib64/qt5/bin/uic \
/usr/include/KF5/KCompletion/kcombobox.h \ /usr/include/KF5/KCompletion/kcombobox.h \
@ -670,25 +712,49 @@ compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_ui
####### Compile ####### Compile
downloadfile.o: downloadfile.cpp mainwindow.h \ downloadfile.o: downloadfile.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h \ ui_mainwindow.h \
tools.h ui_configuration.h \
ui_about.h \
downloadfile.h \
tools.h \
password.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o downloadfile.o downloadfile.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o downloadfile.o downloadfile.cpp
main.o: main.cpp mainwindow.h \ main.o: main.cpp mainwindow.h \
ui_mainwindow.h \
ui_configuration.h \
ui_about.h \
downloadfile.h \ downloadfile.h \
ui_mainwindow.h tools.h \
password.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \ mainwindow.o: mainwindow.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h \ ui_mainwindow.h \
tools.h ui_configuration.h \
ui_about.h \
downloadfile.h \
tools.h \
password.h \
version.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
tools.o: tools.cpp mainwindow.h \ password.o: password.cpp password.h \
mainwindow.h \
ui_mainwindow.h \
ui_configuration.h \
ui_about.h \
downloadfile.h \ downloadfile.h \
ui_mainwindow.h tools.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o password.o password.cpp
tools.o: tools.cpp mainwindow.h \
ui_mainwindow.h \
ui_configuration.h \
ui_about.h \
downloadfile.h \
tools.h \
password.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tools.o tools.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tools.o tools.cpp
moc_downloadfile.o: moc_downloadfile.cpp moc_downloadfile.o: moc_downloadfile.cpp
@ -710,19 +776,46 @@ uninstall_target: FORCE
install_lang: first FORCE install_lang: first FORCE
@test -d $(INSTALL_ROOT)/languages || mkdir -p $(INSTALL_ROOT)/languages @test -d $(INSTALL_ROOT)/usr/share/locale/ || mkdir -p $(INSTALL_ROOT)/usr/share/locale/
$(QINSTALL) /home/daniel/develop/RsyncUI/languages/RsyncUI_fr_FR.qm $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.qm $(QINSTALL) /home/daniel/develop/RsyncUI/languages/fr_FR $(INSTALL_ROOT)/usr/share/locale/fr_FR
$(QINSTALL) /home/daniel/develop/RsyncUI/languages/RsyncUI_fr_FR.ts $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.ts
uninstall_lang: FORCE uninstall_lang: FORCE
-$(DEL_FILE) -r $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.ts -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/locale/fr_FR
-$(DEL_FILE) -r $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.qm -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/locale/
-$(DEL_DIR) $(INSTALL_ROOT)/languages/
install: install_target install_lang FORCE install_documentation: first FORCE
@test -d $(INSTALL_ROOT)/usr/share/doc/RsyncUI || mkdir -p $(INSTALL_ROOT)/usr/share/doc/RsyncUI
$(QINSTALL) /home/daniel/develop/RsyncUI/README.md $(INSTALL_ROOT)/usr/share/doc/RsyncUI/README.md
$(QINSTALL) /home/daniel/develop/RsyncUI/README_FR.md $(INSTALL_ROOT)/usr/share/doc/RsyncUI/README_FR.md
uninstall: uninstall_target uninstall_lang FORCE uninstall_documentation: FORCE
-$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/doc/RsyncUI/README_FR.md
-$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/doc/RsyncUI/README.md
-$(DEL_DIR) $(INSTALL_ROOT)/usr/share/doc/RsyncUI/
install_desktopfile: first FORCE
@test -d $(INSTALL_ROOT)/usr/share/applications || mkdir -p $(INSTALL_ROOT)/usr/share/applications
$(QINSTALL) /home/daniel/develop/RsyncUI/RsyncUI.desktop $(INSTALL_ROOT)/usr/share/applications/RsyncUI.desktop
uninstall_desktopfile: FORCE
-$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/applications/RsyncUI.desktop
-$(DEL_DIR) $(INSTALL_ROOT)/usr/share/applications/
install_icon: first FORCE
@test -d $(INSTALL_ROOT)/usr/share/icons/ || mkdir -p $(INSTALL_ROOT)/usr/share/icons/
$(QINSTALL) /home/daniel/develop/RsyncUI/RsyncUI.png $(INSTALL_ROOT)/usr/share/icons/RsyncUI.png
uninstall_icon: FORCE
-$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/icons/RsyncUI.png
-$(DEL_DIR) $(INSTALL_ROOT)/usr/share/icons/
install: install_target install_lang install_documentation install_desktopfile install_icon FORCE
uninstall: uninstall_target uninstall_lang uninstall_documentation uninstall_desktopfile uninstall_icon FORCE
FORCE: FORCE:

68
RsyncUI.pro Normal file
View File

@ -0,0 +1,68 @@
QT += core gui
QT += KItemViews
QT += KCompletion
QT += widgets
QT += KConfigCore KConfigGui
QT += KCoreAddons
QT += KDBusAddons
LIBS += -lqt5keychain
CONFIG += c++17
#DEFINES += QTKEYCHAIN_NO_EXPORT
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
downloadfile.cpp \
main.cpp \
mainwindow.cpp \
password.cpp \
tools.cpp
HEADERS += \
version.h\
downloadfile.h \
mainwindow.h \
password.h \
tools.h
FORMS += \
about.ui \
configuration.ui \
mainwindow.ui
TRANSLATIONS += \
RsyncUI_fr_FR.ts
INCLUDEPATH += \
/usr/include/KF5 \
/usr/include/qt5keychain \
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /usr/bin/
!isEmpty(target.path): INSTALLS += target
INSTALLS += lang
INSTALLS += documentation
INSTALLS += desktopfile
INSTALLS += icon
#RESOURCES +=
DISTFILES += \
RsyncUI.desktop
lang.path = /languages/
lang.path = /usr/share/locale/
lang.files = languages/*
documentation.path = /usr/share/doc/RsyncUI
documentation.files = README*
desktopfile.path = /usr/share/applications
desktopfile.files = RsyncUI.desktop
icon.path = /usr/share/icons/
icon.files = RsyncUI.png

350
RsyncUI.pro.user Normal file
View File

@ -0,0 +1,350 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 9.0.1, 2024-07-18T20:40:34. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{a3117c94-e673-4dca-aa4c-050bbea034fe}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
<valuemap type="QVariantMap" key="CppEditor.QuickFix">
<value type="bool" key="UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.7 (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.7 (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{a8a6d767-5e05-45c7-b70b-532f99112b6a}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/daniel/develop/RsyncUI</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">RsyncUI</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/daniel/develop/RsyncUI/RsyncUI.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/daniel/develop/RsyncUI/RsyncUI.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/daniel/develop/RsyncUI</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{893f9ca6-0efa-4c08-a4a6-5a818f60a8a0}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/daniel/develop/build-RsyncUI-Desktop-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/daniel/develop/build-RsyncUI-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/daniel/develop/build-RsyncUI-Desktop-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -2,7 +2,7 @@
Name: rsyncui Name: rsyncui
Summary: Client for rsync server Summary: Client for rsync server
Version: 2.11.2 Version: 2.12.1
Release: %mkrel 1 Release: %mkrel 1
License: GPLv3 License: GPLv3
Group: Networking/Remote access Group: Networking/Remote access
@ -27,7 +27,7 @@ BuildRequires: cmake(KF5Config)
BuildRequires: cmake(KF5ItemViews) BuildRequires: cmake(KF5ItemViews)
BuildRequires: pstreams-devel BuildRequires: pstreams-devel
BuildRequires: boost-devel BuildRequires: boost-devel
BuildRequires: qt5keychain-devel
#Requires: kitemviews #Requires: kitemviews
#Requires: kcompletion #Requires: kcompletion
#Requires: kcoreaddons #Requires: kcoreaddons

BIN
RsyncUI_fr_FR.qm Normal file

Binary file not shown.

View File

@ -58,40 +58,35 @@
<message> <message>
<location filename="configuration.ui" line="159"/> <location filename="configuration.ui" line="159"/>
<source>Automatic saving of download queue</source> <source>Automatic saving of download queue</source>
<translation>Enregistrement automatique de la file</translation> <translation type="unfinished">Enregistrement automatique de la file de téléchargement</translation>
</message> </message>
<message> <message>
<location filename="configuration.ui" line="165"/> <location filename="configuration.ui" line="165"/>
<source>Auto save download queue</source> <source>Auto save download queue</source>
<translation>Enregistrement automatique de la file d&apos;enregistrement</translation> <translation type="unfinished">Enregistrement automatique de la file de téléchargement</translation>
</message> </message>
</context> </context>
<context> <context>
<name>LoginDialog</name> <name>LoginDialog</name>
<message> <message>
<location filename="login.ui" line="17"/>
<source>RsyncUI request</source> <source>RsyncUI request</source>
<translation>Requête RsyncUI</translation> <translation type="vanished">Requête RsyncUI</translation>
</message> </message>
<message> <message>
<location filename="login.ui" line="51"/>
<source>Login name</source> <source>Login name</source>
<translation>Identifiant</translation> <translation type="vanished">Identifiant</translation>
</message> </message>
<message> <message>
<location filename="login.ui" line="79"/>
<source>Enter login</source> <source>Enter login</source>
<translation>Entrez votre identifiant</translation> <translation type="vanished">Entrez votre identifiant</translation>
</message> </message>
<message> <message>
<location filename="login.ui" line="86"/>
<source>Password</source> <source>Password</source>
<translation>Mot de passe</translation> <translation type="vanished">Mot de passe</translation>
</message> </message>
<message> <message>
<location filename="login.ui" line="102"/>
<source>Enter password</source> <source>Enter password</source>
<translation>Entrez votre mot de passe</translation> <translation type="vanished">Entrez votre mot de passe</translation>
</message> </message>
</context> </context>
<context> <context>
@ -221,32 +216,32 @@
<translation>Paramètres</translation> <translation>Paramètres</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="123"/> <location filename="mainwindow.h" line="125"/>
<source>KB</source> <source>KB</source>
<translation>Ko</translation> <translation>Ko</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="124"/> <location filename="mainwindow.h" line="126"/>
<source>MB</source> <source>MB</source>
<translation>Mo</translation> <translation>Mo</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="125"/> <location filename="mainwindow.h" line="127"/>
<source>GB</source> <source>GB</source>
<translation>Go</translation> <translation>Go</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="126"/> <location filename="mainwindow.h" line="128"/>
<source>TB</source> <source>TB</source>
<translation>To</translation> <translation>To</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="127"/> <location filename="mainwindow.h" line="129"/>
<source>PB</source> <source>PB</source>
<translation>Po</translation> <translation>Po</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="61"/> <location filename="mainwindow.cpp" line="59"/>
<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;
@ -279,92 +274,97 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat
Permet de quitter le programme</translation> Permet de quitter le programme</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="78"/> <location filename="mainwindow.cpp" line="75"/>
<source>Path</source> <source>Path</source>
<translation>Chemin</translation> <translation>Chemin</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="78"/> <location filename="mainwindow.cpp" line="75"/>
<source>Size</source> <source>Size</source>
<translation>Taille</translation> <translation>Taille</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="78"/> <location filename="mainwindow.cpp" line="75"/>
<source>Type</source> <source>Type</source>
<translation>Type</translation> <translation>Type</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="78"/> <location filename="mainwindow.cpp" line="75"/>
<source>Date</source> <source>Date</source>
<translation>Date</translation> <translation>Date</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="105"/> <location filename="mainwindow.cpp" line="102"/>
<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="105"/> <location filename="mainwindow.cpp" line="102"/>
<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="105"/> <location filename="mainwindow.cpp" line="102"/>
<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="105"/> <location filename="mainwindow.cpp" line="102"/>
<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="105"/> <location filename="mainwindow.cpp" line="102"/>
<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="123"/> <location filename="mainwindow.cpp" line="120"/>
<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="152"/> <location filename="mainwindow.cpp" line="149"/>
<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="209"/> <location filename="mainwindow.cpp" line="206"/>
<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="215"/> <location filename="mainwindow.cpp" line="212"/>
<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="253"/> <location filename="mainwindow.cpp" line="250"/>
<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="513"/> <location filename="mainwindow.cpp" line="551"/>
<source>Authentication failed</source>
<translation>Mauvais mot de passe ou utilisateur</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<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> <message>
<location filename="mainwindow.cpp" line="599"/> <location filename="mainwindow.cpp" line="690"/>
<source>server does not exists</source> <source>server does not exists</source>
<translation>Le serveur n&apos;existe pas</translation> <translation>Le serveur n&apos;existe pas</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="633"/> <location filename="mainwindow.cpp" line="726"/>
<location filename="mainwindow.cpp" line="745"/> <location filename="mainwindow.cpp" line="886"/>
<source>Dir</source> <source>Dir</source>
<translation>dossier</translation> <translation>dossier</translation>
</message> </message>
@ -373,146 +373,161 @@ Voulez-vous vraiment sortir ?</translation>
<translation type="vanished">Doc</translation> <translation type="vanished">Doc</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="773"/> <location filename="mainwindow.cpp" line="914"/>
<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="790"/> <location filename="mainwindow.cpp" line="931"/>
<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="827"/> <location filename="mainwindow.cpp" line="968"/>
<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="852"/> <location filename="mainwindow.cpp" line="998"/>
<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="867"/> <location filename="mainwindow.cpp" line="1013"/>
<source>finished</source> <source>finished</source>
<translation>Terminé</translation> <translation>Terminé</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="877"/> <location filename="mainwindow.cpp" line="1023"/>
<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="884"/> <location filename="mainwindow.cpp" line="1030"/>
<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="895"/> <location filename="mainwindow.cpp" line="1041"/>
<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="904"/> <location filename="mainwindow.cpp" line="1050"/>
<source>Download </source> <source>Download </source>
<translation>Téléchargement </translation> <translation>Téléchargement </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1257"/>
<source>RsyncUI Request</source> <source>RsyncUI Request</source>
<translation>Requête RsyncUI</translation> <translation type="vanished">Requête RsyncUI</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="1258"/> <location filename="mainwindow.cpp" line="1391"/>
<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="56"/> <location filename="mainwindow.cpp" line="54"/>
<source>Version</source> <source>Version</source>
<translation>Version</translation> <translation>Version</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="55"/> <location filename="mainwindow.cpp" line="53"/>
<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="57"/> <location filename="mainwindow.cpp" line="55"/>
<source>Licence</source> <source>Licence</source>
<translation>License</translation> <translation>License</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="58"/> <location filename="mainwindow.cpp" line="56"/>
<source>Author</source> <source>Author</source>
<translation>Auteur</translation> <translation>Auteur</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="59"/> <location filename="mainwindow.cpp" line="57"/>
<source>EMail</source> <source>EMail</source>
<translation>Courriel</translation> <translation>Courriel</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="60"/> <location filename="mainwindow.cpp" line="58"/>
<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="1073"/> <location filename="mainwindow.cpp" line="821"/>
<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>
</message>
<message>
<location filename="mainwindow.cpp" line="834"/>
<location filename="mainwindow.cpp" line="1390"/>
<source> Request</source>
<translation> Requête de mot de passe</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="835"/>
<source>Enter password</source>
<translation>Entrez votre mot de passe</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="1225"/>
<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>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="1078"/> <location filename="mainwindow.cpp" line="1230"/>
<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="969"/> <location filename="mainwindow.cpp" line="1121"/>
<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="983"/> <location filename="mainwindow.cpp" line="1136"/>
<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>
<message> <message>
<location filename="mainwindow.h" line="122"/> <location filename="mainwindow.h" line="124"/>
<source>B</source> <source>B</source>
<translation>o</translation> <translation>o</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="139"/> <location filename="mainwindow.h" line="141"/>
<source>The process failed to start. Either the invoked program is missing, or you may have insufficient permissions or resources to invoke the program.</source> <source>The process failed to start. Either the invoked program is missing, or you may have insufficient permissions or resources to invoke the program.</source>
<translation>Le processus échoué, soit le programme est manquant, soit vous n&apos;avez pas l&apos;autorisation de l&apos;exécuter.</translation> <translation>Le processus échoué, soit le programme est manquant, soit vous n&apos;avez pas l&apos;autorisation de l&apos;exécuter.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="140"/> <location filename="mainwindow.h" line="142"/>
<source>The process crashed some time after starting successfully.</source> <source>The process crashed some time after starting successfully.</source>
<translation>Le processus à planté après avoir démarré avec succès.</translation> <translation>Le processus à planté après avoir démarré avec succès.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="141"/> <location filename="mainwindow.h" line="143"/>
<source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source> <source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source>
<translation>La fonction waitFor...() a dépassé la limite de temps, you pouvez essayer de la relancer.</translation> <translation>La fonction waitFor...() a dépassé la limite de temps, you pouvez essayer de la relancer.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="142"/> <location filename="mainwindow.h" line="144"/>
<source>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.</source> <source>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.</source>
<translation>Une erreur est survenue lors de l&apos;envoi des données vers le processus. Le processus est peut être arrté ou il a fermé son canal d&apos;entrée.</translation> <translation>Une erreur est survenue lors de l&apos;envoi des données vers le processus. Le processus est peut être arrté ou il a fermé son canal d&apos;entrée.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="143"/> <location filename="mainwindow.h" line="145"/>
<source>An error occurred when attempting to read from the process. For example, the process may not be running.</source> <source>An error occurred when attempting to read from the process. For example, the process may not be running.</source>
<translation>Une erreur est survenue lors de la lecturee de données, le processus est probablement arrêté.</translation> <translation>Une erreur est survenue lors de la lecturee de données, le processus est probablement arrêté.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.h" line="144"/> <location filename="mainwindow.h" line="146"/>
<source>An unknown error occurred. This is the default return value of error().</source> <source>An unknown error occurred. This is the default return value of error().</source>
<translation>Une erreur inconnue est survenue. C&apos;est la valeur de retour par défaut de error().</translation> <translation>Une erreur inconnue est survenue. C&apos;est la valeur de retour par défaut de error().</translation>
</message> </message>
@ -520,87 +535,87 @@ Voulez-vous ré-essayer?</translation>
<context> <context>
<name>QTranslator</name> <name>QTranslator</name>
<message> <message>
<location filename="mainwindow.cpp" line="12"/> <location filename="mainwindow.cpp" line="13"/>
<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="13"/> <location filename="mainwindow.cpp" line="14"/>
<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="14"/> <location filename="mainwindow.cpp" line="15"/>
<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="15"/> <location filename="mainwindow.cpp" line="16"/>
<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="16"/> <location filename="mainwindow.cpp" line="17"/>
<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="17"/> <location filename="mainwindow.cpp" line="18"/>
<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="18"/> <location filename="mainwindow.cpp" line="19"/>
<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="19"/> <location filename="mainwindow.cpp" line="20"/>
<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="20"/> <location filename="mainwindow.cpp" line="21"/>
<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="21"/> <location filename="mainwindow.cpp" line="22"/>
<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="22"/> <location filename="mainwindow.cpp" line="23"/>
<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="23"/> <location filename="mainwindow.cpp" line="24"/>
<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="24"/> <location filename="mainwindow.cpp" line="25"/>
<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="25"/> <location filename="mainwindow.cpp" line="26"/>
<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="26"/> <location filename="mainwindow.cpp" line="27"/>
<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="27"/> <location filename="mainwindow.cpp" line="28"/>
<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="28"/> <location filename="mainwindow.cpp" line="29"/>
<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

@ -10,7 +10,7 @@
#include <stdio.h> #include <stdio.h>
#include <QMessageBox> #include <QMessageBox>
#include <vector> #include <vector>
#include <boost/algorithm/string/replace.hpp> //#include <boost/algorithm/string/replace.hpp>
#include <memory> #include <memory>
#include <stdexcept> #include <stdexcept>
#include <array> #include <array>
@ -43,32 +43,40 @@ void MainWindow::download()
QString cmd; QString cmd;
QStringList param; QStringList param;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString server = downloading.server;
this->downloading.process = new QProcess(this); this->downloading.process = new QProcess(this);
if (!this->downloading.user.isEmpty()) if (!this->downloading.user.isEmpty())
{ {
this->downloading.server.prepend(this->connexion.user + "@"); this->downloading.user = this->connexion.user;
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);
} }
// Populating array with command and parameters for popen2 // Populating array with command and parameters for rsync
cmd = "rsync"; cmd = "rsync";
if (this->connexion.bandwidthLimit != 0) if (this->connexion.bandwidthLimit != 0)
{ {
param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit]; param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit];
} }
param << "--port=" + QString::number(this->downloading.port);
if (downloading.ipversion == 4 || downloading.ipversion == 6)
{
param << "-" + QString::number(downloading.ipversion);
}
param << "--port" << QString::number(this->downloading.port);
param << "-aXP "; param << "-aXP ";
param << this->downloading.server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/"; 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(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(errorOccurred(QProcess::ProcessError error)), this, SLOT(downloadProcessError(QProcess::ProcessError error)));
//connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr())); //connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr()));
connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput())); connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput()));
this->downloading.process->start(cmd, param);
} }
void MainWindow::readRsyncOutput() void MainWindow::readRsyncOutput()

View File

@ -14,7 +14,6 @@ class downloadFile : public QObject
public: public:
downloadFile(); downloadFile();
bool canceled; bool canceled;
}; };
#endif // DOWNLOADFILE_H #endif // DOWNLOADFILE_H

View File

@ -21,10 +21,13 @@ int main(int argc, char *argv[])
a.installTranslator(&myappTranslator); a.installTranslator(&myappTranslator);
} }
static const QString appName = "RsyncUI"; // Enable logging to journald
qputenv("QT_FORCE_STDERR_LOGGING", QByteArray("0"));
static const QString appName = "RsyncUI";
//Password passwdJob; //Password passwdJob;
MainWindow w; MainWindow w;
qInfo("RsyncUI begining");
w.show(); w.show();
w.init(); w.init();
return a.exec(); return a.exec();

View File

@ -1,6 +1,7 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QComboBox> #include <QComboBox>
#include <QTextBlock> #include <QTextBlock>
#include "version.h"
using namespace std; using namespace std;
@ -50,8 +51,9 @@ MainWindow::MainWindow(QWidget *parent)
AboutW.setupUi(&aboutDialog); AboutW.setupUi(&aboutDialog);
// text of About // text of About
this->about.version = version;
QString aboutText = tr("<h2>Client for rsync server</h2>") + QString aboutText = tr("<h2>Client for rsync server</h2>") +
"<b>" + tr("Version") + ": " + this->about.version + "</b><br>" + "<b>" + tr("Version") + ": " + version + "</b><br>" +
"<b>" + tr("Licence") + ": " + this->about.licence + "</b><br>" + "<b>" + tr("Licence") + ": " + this->about.licence + "</b><br>" +
"<b>" + tr("Author") + ": " + this->about.author + "</b><br>" + "<b>" + tr("Author") + ": " + this->about.author + "</b><br>" +
"<b>" + tr("EMail") + ": " + this->about.email + "</b><br>" + "<b>" + tr("EMail") + ": " + this->about.email + "</b><br>" +
@ -240,12 +242,13 @@ void MainWindow::quitApp()
void MainWindow::closeEvent (QCloseEvent *event) void MainWindow::closeEvent (QCloseEvent *event)
{ {
QMessageBox msgBox; QMessageBox msgBox;
QCheckBox *cb = new QCheckBox("Don't show this again ?"); QCheckBox *cb;
if (!event->spontaneous() || !isVisible()) if (!event->spontaneous() || !isVisible())
return; return;
if (trayIcon->isVisible() and this->settings.value("CloseCheckbox").toBool() == false) if (trayIcon->isVisible() and this->settings.value("CloseCheckbox").toBool() == false)
{ {
cb = new QCheckBox("Don't show this again ?");
msgBox.setWindowTitle(a.applicationName()); msgBox.setWindowTitle(a.applicationName());
msgBox.setInformativeText(tr("The program will keep running in the " msgBox.setInformativeText(tr("The program will keep running in the "
"system tray. To terminate the program, " "system tray. To terminate the program, "
@ -308,7 +311,13 @@ void MainWindow::populateList(int item)
int port; int port;
int i; int i;
if (item == -1)
{
server = ui->khistorycombobox->currentText();
}else
{
server = ui->khistorycombobox->itemText(item); server = ui->khistorycombobox->itemText(item);
}
port = ui->portEdit->text().toUInt(); port = ui->portEdit->text().toUInt();
if ((server != this->connexion.server) or (port != this->connexion.port)) if ((server != this->connexion.server) or (port != this->connexion.port))
{ {
@ -383,7 +392,8 @@ bool MainWindow::testServicePresence(QString service, bool askPassword)
QStringList v; QStringList v;
QProcess *myProcess; QProcess *myProcess;
bool returnValue = false; bool returnValue = false;
QEventLoop loop; int loop =0;
bool r = false;
cmd = "/usr/bin/rsync"; cmd = "/usr/bin/rsync";
param << "--contimeout=10" << "-nq" << "--port=" + QString::number(this->connexion.port) << this->connexion.server + "::" + service; param << "--contimeout=10" << "-nq" << "--port=" + QString::number(this->connexion.port) << this->connexion.server + "::" + service;
@ -405,9 +415,10 @@ bool MainWindow::testServicePresence(QString service, bool askPassword)
} }
if (line.contains("auth failed")) if (line.contains("auth failed"))
{ {
if (askPassword) if (askPassword == true and loop >=2 and r == true)
{ {
getUserPassword(&this->connexion); r = getUserPassword(&this->connexion);
loop++;
} }
returnValue = true; returnValue = true;
} }
@ -480,6 +491,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
QString filename; QString filename;
QString fileType; QString fileType;
QString date; QString date;
QString dirName = "";
QProcess * myProcess; QProcess * myProcess;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
bool isDir = false; bool isDir = false;
@ -487,6 +499,8 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
bool readOk = false; bool readOk = false;
bool passwdOk = false; bool passwdOk = false;
int nChild = 0; int nChild = 0;
static uint looping;
QStringList dirs;
myProcess = new QProcess(this); myProcess = new QProcess(this);
myProcess->setProcessChannelMode(QProcess::MergedChannels); myProcess->setProcessChannelMode(QProcess::MergedChannels);
@ -533,10 +547,24 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
{ {
myProcess->readAllStandardOutput(); myProcess->readAllStandardOutput();
getUserPassword(&this->connexion); getUserPassword(&this->connexion);
return 0; if (looping <= 1)
{
this->rescan = true;
looping++;
}else
{
this->rescan = false;
looping = 0;
QMessageBox::warning(
this,
a.applicationName(),
tr("Authentication failed" )
);
}
return false;
} }
// extracting name, size and if is dir/file // extracting name, size and is dir/file
line = line.simplified(); line = line.simplified();
filename = line.section(" ", 4); filename = line.section(" ", 4);
if (filename != '.') if (filename != '.')
@ -549,8 +577,8 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
{ {
size = sizeA.at(0) + " " + UnitText[0] + " "; size = sizeA.at(0) + " " + UnitText[0] + " ";
}else }else
{ myProcess->setProcessEnvironment(env); {
myProcess->setProcessEnvironment(env);
size = sizeA.at(0) + "," + sizeA.at(1).left(2) + " " + UnitText[sizeA.count()-1] + " "; size = sizeA.at(0) + "," + sizeA.at(1).left(2) + " " + UnitText[sizeA.count()-1] + " ";
} }
@ -561,9 +589,19 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
{ {
isDir = false; isDir = false;
} }
date = line.section(' ', 2, 2); date = line.section(' ', 2, 2);
fileType = getFileType(filename); fileType = getFileType(filename);
addTreeItem(filename, size, fullsize, fileType, date, isDir, parent); if (!path.isEmpty())
{
if (path.endsWith('/'))
{
path.chop(1);
}
dirs = path.split('/');
dirName = dirs[dirs.size()-1];
}
addTreeItem(filename, size, fullsize, fileType, date, isDir, dirName, parent);
if (passwdOk == false and !this->connexion.password.isEmpty()) if (passwdOk == false and !this->connexion.password.isEmpty())
{ {
this->settings.setValue("Passwords/" + this->connexion.server + "/" + this->connexion.service + "/" + this->connexion.user, true); this->settings.setValue("Passwords/" + this->connexion.server + "/" + this->connexion.service + "/" + this->connexion.user, true);
@ -593,7 +631,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
testRsyncReturn(this, myProcess); testRsyncReturn(this, myProcess);
myProcess->close(); myProcess->close();
} }
return 0; return false;
} }
// Verify if server address is IP address // Verify if server address is IP address
@ -609,7 +647,7 @@ bool MainWindow::isIpAddress(QString server)
for (auto element : r) for (auto element : r)
{ {
elementN = element.toInt(&ok); elementN = element.toInt(&ok);
if (elementN < 0 or elementN > 255 or ok == false) if ((elementN < 0) or (elementN > 255) or ok == false)
{ {
return false; return false;
} }
@ -690,9 +728,9 @@ void MainWindow::on_connectButton_clicked()
} }
// add parent in treeview // add parent in treeview
void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir=false, QTreeWidgetItem *parent=nullptr) void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir=false, QString dirName="", QTreeWidgetItem *parent=nullptr)
{ {
QFont * font = new QFont(); QFont font;
QTreeWidgetItem *treeItem; QTreeWidgetItem *treeItem;
if (parent != nullptr) if (parent != nullptr)
@ -702,30 +740,29 @@ void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, Q
{ {
treeItem = new QTreeWidgetItem(ui->treeWidget); treeItem = new QTreeWidgetItem(ui->treeWidget);
} }
// item is a file
if (QFile::exists(this->downloading.savePath + "/" + name) or QFile::exists(this->downloading.savePath + "/" + dirName + "/" + name))
{
QBrush b (Qt::green);
treeItem->setForeground(0, b);
treeItem->setFont(0, font);
}else if (this->settings.contains(name))
{
QBrush b (Qt::red);
treeItem->setForeground(0, b);
treeItem->setFont(0, font);
}
if (isDir == true) if (isDir == true)
{ {
// item is a dir // item is a dir
treeItem->setText(1, tr("Dir")); treeItem->setText(1, tr("Dir"));
treeItem->setIcon(0, QIcon::fromTheme("folder")); treeItem->setIcon(0, QIcon::fromTheme("folder"));
}else }else
{
// item is a file
if (QFile::exists(this->downloading.savePath + "/" + name))
{
QBrush b (Qt::green);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}else
{ {
this->settings.beginGroup("Downloaded/"); this->settings.beginGroup("Downloaded/");
if (this->settings.contains(name))
{
QBrush b (Qt::red);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}
this->settings.endGroup(); this->settings.endGroup();
}
treeItem->setText(1,type); treeItem->setText(1,type);
} }
treeItem->setText(0, name); treeItem->setText(0, name);
@ -777,8 +814,8 @@ void MainWindow::preparePopulateTree()
bool MainWindow::getUserPassword(Connexion * object) bool MainWindow::getUserPassword(Connexion * object)
{ {
QStringList logins; QStringList logins;
QString login; QString login = "";
QString password; QString password = "";
QString server; QString server;
QString service; QString service;
int c; int c;
@ -820,10 +857,12 @@ bool MainWindow::getUserPassword(Connexion * object)
if (!ok or password.isEmpty()) if (!ok or password.isEmpty())
{ {
password = ""; password = "";
returnValue = false;
} }
}else }else
{ {
password = getPassword(login); password = getPassword(login);
returnValue = true;
} }
object->user = login; object->user = login;
object->password = password; object->password = password;
@ -848,6 +887,12 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
QMessageBox::StandardButton reply; QMessageBox::StandardButton reply;
int sizeFromRsync; int sizeFromRsync;
if (treeviewClicked == true)
{
return;
}
treeviewClicked = true;
itemR = item; itemR = item;
this->rescan = true; this->rescan = true;
@ -872,7 +917,7 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
// saving path do not exists, asking for it // saving path do not exists, asking for it
if(!on_DefaultSaveFolder_triggered()) if(!on_DefaultSaveFolder_triggered())
{ {
cout << "no directory selectioned, ignoring download request"; cout << "no directory selectioned, ignoring download request" << endl;
return; return;
} }
}else }else
@ -951,17 +996,22 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
}else }else
{ {
//Item is a Directory //Item is a Directory
if (item->isExpanded() == false)
{
while (this->rescan) while (this->rescan)
{ {
scanDir(this->connexion.server, this->connexion.port, item, this->connexion.service + "/" + path +"/"); scanDir(this->connexion.server, this->connexion.port, item, this->connexion.service + "/" + path +"/");
item->setExpanded(true); item->setExpanded(true);
} }
} }
}
if (config.autosaveCheckbox->checkState() == Qt::Checked) if (config.autosaveCheckbox->checkState() == Qt::Checked)
{ {
saveDownloadList(); saveDownloadList();
} }
treeviewClicked = false;
} }
// Launch the thread which download the file // Launch the thread which download the file
@ -1056,6 +1106,7 @@ void MainWindow::downloadFinished(int exitCode, QProcess::ExitStatus exitStatus)
pos = path.lastIndexOf(" => "); pos = path.lastIndexOf(" => ");
this->downloading.server = path.midRef(pos+4).toString(); this->downloading.server = path.midRef(pos+4).toString();
path.resize(pos); path.resize(pos);
this->downloading.port = this->settings.value("connexion/server/" + this->downloading.server).toInt();
this->downloading.path = path; this->downloading.path = path;
//getUserPassword(true); //getUserPassword(true);
@ -1377,3 +1428,10 @@ void MainWindow::on_actionHiddenService_triggered()
preparePopulateTree(); preparePopulateTree();
} }
} }
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
cout << "double-clicked" << endl;
}

View File

@ -1,13 +1,11 @@
#ifndef MAINWINDOW_H #ifndef MAINWINDOW_H
#define MAINWINDOW_H #define MAINWINDOW_H
#define QT_USE_FAST_CONCATENATION #define QT_USE_FAST_CONCATENATION
#define QT_USE_FAST_OPERATOR_PLUS #define QT_USE_FAST_OPERATOR_PLUS
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include "ui_configuration.h" #include "ui_configuration.h"
#include "ui_about.h" #include "ui_about.h"
#include "downloadfile.h"
#include "tools.h"
#include "password.h"
#include <QMainWindow> #include <QMainWindow>
#include <string> #include <string>
#include <QTreeWidgetItem> #include <QTreeWidgetItem>
@ -64,8 +62,8 @@ class Connexion
QString user; QString user;
QString password; QString password;
QProcess * process = nullptr; QProcess * process = nullptr;
int port = 873; int ipversion = 4;
bool comboboxChanged; uint port = 873;
bool quit = false; bool quit = false;
void clear(); void clear();
}; };
@ -79,6 +77,7 @@ class Downloading
QString savePath; QString savePath;
QString user; QString user;
QString password; QString password;
int ipversion = 4;
int port = 873; int port = 873;
QProcess * process = nullptr; QProcess * process = nullptr;
bool quit = false; bool quit = false;
@ -88,7 +87,7 @@ class Downloading
class About class About
{ {
public: public:
QString version = "2.11.2"; QString version;
QString author = "Daniel TARTAVEL-JEANNOT"; QString author = "Daniel TARTAVEL-JEANNOT";
QString licence = "GPL_V3"; QString licence = "GPL_V3";
QString description; QString description;
@ -119,8 +118,12 @@ class MainWindow : public QMainWindow
QString icon = "/usr/share/icons/RsyncUI.png"; QString icon = "/usr/share/icons/RsyncUI.png";
bool rescan = false; bool rescan = false;
bool stopDlAsked; bool stopDlAsked;
bool treeviewClicked;
bool initialization = true;
bool exiting = false;
QList<QString> UnitText { QList<QString> UnitText
{
tr("B"), tr("B"),
tr("KB"), tr("KB"),
tr("MB"), tr("MB"),
@ -128,7 +131,8 @@ class MainWindow : public QMainWindow
tr("TB"), tr("TB"),
tr("PB") tr("PB")
}; };
QList<QChar> bwUnitChar{ QList<QChar> bwUnitChar
{
'K', 'K',
'M', 'M',
'T', 'T',
@ -148,18 +152,18 @@ class MainWindow : public QMainWindow
void displayTree(); void displayTree();
void populateTree(); void populateTree();
void populateList(int); void populateList(QString server, uint port);
void listServices(); void listServices();
bool validateServer(QString server); uint validateServer(QString server);
bool isIpAddress(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, QTreeWidgetItem *parent); bool scanDir(Connexion * connexion, QTreeWidgetItem *parent = NULL, QString path = "" );
bool scanDir(QString server, int portN, QTreeWidgetItem *parent = NULL, QString path = "" );
void startDownloading(); void startDownloading();
void loadSettings(); void loadSettings();
void saveSettings(); void saveSettings();
void closeEvent (QCloseEvent *event); void closeEvent (QCloseEvent *event);
void saveDownloadList(); void saveDownloadList();
void loadDownloadList(); void loadDownloadList();
void deleteDownloadList();
void download(); void download();
void initSystemTrayIcon(); void initSystemTrayIcon();
void hideWindow(); void hideWindow();
@ -167,7 +171,7 @@ class MainWindow : public QMainWindow
void init(); void init();
bool getUserPassword(Connexion *); bool getUserPassword(Connexion *);
void preparePopulateTree(); void preparePopulateTree();
bool testServicePresence(QString, bool=false); bool testServerPresence(QString, bool=false);
void passwordStore (QString account, QString password); void passwordStore (QString account, QString password);
QString passwordGet (QString account); QString passwordGet (QString account);
@ -189,8 +193,6 @@ class MainWindow : public QMainWindow
void on_actionAbout_Qt_triggered(); void on_actionAbout_Qt_triggered();
void on_khistorycombobox_currentIndexChanged(int);
bool on_DefaultSaveFolder_triggered(); bool on_DefaultSaveFolder_triggered();
void on_connectButton_clicked(); void on_connectButton_clicked();
@ -199,8 +201,6 @@ class MainWindow : public QMainWindow
void on_actionDownload_triggered(); void on_actionDownload_triggered();
//void downloadingErrorSlot(QString);
void on_comboBox_currentIndexChanged(int index); void on_comboBox_currentIndexChanged(int index);
void on_buttonBox_accepted(); void on_buttonBox_accepted();
@ -217,6 +217,12 @@ class MainWindow : public QMainWindow
void on_actionHiddenService_triggered(); void on_actionHiddenService_triggered();
//void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
//void on_khistorycombobox_currentTextChanged(const QString &arg1);
void on_khistorycombobox_currentTextChanged(const QString &arg1);
signals: signals:
void stopDownloading(QProcess *); void stopDownloading(QProcess *);
void progressSignal(int); void progressSignal(int);

View File

@ -1,4 +1,4 @@
#include "mainwindow.h" //#include "mainwindow.h"
#include "password.h" #include "password.h"
#include <qt5keychain/keychain.h> #include <qt5keychain/keychain.h>
#include <qt5keychain/qkeychain_export.h> #include <qt5keychain/qkeychain_export.h>

View File

@ -10,26 +10,4 @@ extern QApplication a;
void setPassword(QString account, QString pass); void setPassword(QString account, QString pass);
QString getPassword(const QString& name); QString getPassword(const QString& name);
/*class Password : QObject
{
public:
QString appName;
QKeychain::WritePasswordJob * passwdJob;
QKeychain::ReadPasswordJob * readPass;
MainWindow * mw;
QString password;
QSettings passwdSettings{a.applicationName(),a.applicationName()};
Password();
~Password();
void store(QString, QString);
QString read(QString);
bool remove(QString);
private slots:
void storeFinished();
void readFinished();
};*/
#endif // PASSWORD_H #endif // PASSWORD_H

View File

@ -8,52 +8,18 @@ using namespace std;
extern QMap<int, QString> rsyncErrorStrings; extern QMap<int, QString> rsyncErrorStrings;
extern QApplication a; extern QApplication a;
//Take a string and explode it in array
// s => string to explode
// c => character separator
// n => number of results in array, the last is the rest of string to end
const vector<string> explode(const string& s, const char& c, int n = 0)
{
string buff;
vector<string> v;
size_t pos = 0;
size_t ppos = 0;
int i = 0;
while (i < n - 1)
{
pos = s.find(c, ppos);
if (pos != string::npos)
{
buff = s.substr(ppos, pos - ppos);
if (buff != "")
{
i++;
v.push_back(s.substr(ppos, pos - ppos));
}
ppos = pos + 1;
}else
{
break;
}
}
if (ppos < s.size())
{
v.push_back(s.substr(ppos));
}
return v;
}
// test return code of rsync // test return code of rsync
// return true in case of error // return true in case of error
bool testRsyncReturn(MainWindow * w, QProcess * myProcess) bool testRsyncReturn(MainWindow * w, QProcess * myProcess)
{ {
if (myProcess->exitStatus() != 0 and w->stopDlAsked != true) if (myProcess->exitStatus() != 0 and w->stopDlAsked != true)
{ {
qInfo("rsync error %i : %s ", + myProcess->error(), myProcess->errorString().toStdString().c_str());
QMessageBox::warning( QMessageBox::warning(
w, w,
a.applicationName(), a.applicationName(),
myProcess->errorString(), rsyncErrorStrings[myProcess->error()],
//myProcess->errorString(),
QMessageBox::Ok, QMessageBox::Ok,
QMessageBox::Ok); QMessageBox::Ok);
return true; return true;
@ -70,3 +36,41 @@ QString getFileType(QString filename)
return returnValue; return returnValue;
} }
int whatIpVersion(QString ipAddress)
{
QStringList fieldList;
ulong field;
uint i;
qInfo("ipVersion %s", ipAddress.toStdString().c_str());
fieldList = ipAddress.split(":");
if (fieldList.count() == 8)
{
for (i=0;i<8;i++)
{
field = fieldList[i].toUInt();
if (field > 65535)
{
return 0;
}
}
qInfo("Address is Ip V6");
return 6;
}
fieldList = ipAddress.split(".");
if(fieldList.count() == 4)
{
for (i=0;i<4;i++)
{
field = fieldList[i].toUInt();
if (field > 255)
{
return 0;
}
}
qInfo("Address is ip V4");
return 4;
}
return 0;
}

View File

@ -1,7 +1,6 @@
#ifndef TOOLS_H #ifndef TOOLS_H
#define TOOLS_H #define TOOLS_H
#include "mainwindow.h"
#include <string> #include <string>
#include <vector> #include <vector>
#include <array> #include <array>
@ -14,13 +13,12 @@
using namespace std; using namespace std;
const vector<string> explode(const string& s, const char& c, int n);
FILE * popen2(array<string,8> argv, string type, int & pid); FILE * popen2(array<string,8> argv, string type, int & pid);
int pclose2(FILE * fp, pid_t pid); int pclose2(FILE * fp, pid_t pid);
bool testRsyncReturn(MainWindow *, QProcess *); bool testRsyncReturn(MainWindow *, QProcess *);
QString getFileType(QString finename); QString getFileType(QString finename);
int whatIpVersion(QString);
#endif // TOOLS_H #endif // TOOLS_H

8
version.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef VERSION_H
#define VERSION_H
#include <QString>
QString version = "2.12.1";
#endif // VERSION_H