Compare commits

...

8 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
16 changed files with 649 additions and 444 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:

View File

@ -24,6 +24,7 @@ SOURCES += \
tools.cpp tools.cpp
HEADERS += \ HEADERS += \
version.h\
downloadfile.h \ downloadfile.h \
mainwindow.h \ mainwindow.h \
password.h \ password.h \

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 9.0.1, 2023-03-18T12:45:23. --> <!-- Written by QtCreator 9.0.1, 2024-07-18T20:40:34. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
@ -40,7 +40,7 @@
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value> <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value> <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">1</value> <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
@ -52,7 +52,7 @@
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value> <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value> <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">true</value> <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value> <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value> <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap> </valuemap>
@ -71,6 +71,9 @@
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/> <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value> <value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</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"> <valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value> <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value> <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
@ -81,10 +84,96 @@
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/> <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value> <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="CppEditor.QuickFix">
<value type="bool" key="UseGlobalSettings">true</value>
</valuemap>
</valuemap> </valuemap>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.Target.0</variable> <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"> <valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value> <value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
@ -95,8 +184,8 @@
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI6/../build-RsyncUI6-Desktop-Debug</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-RsyncUI6-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.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -134,8 +223,8 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI6/../build-RsyncUI6-Desktop-Release</value> <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-RsyncUI6-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.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -175,8 +264,8 @@
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/daniel/develop/RsyncUI6/../build-RsyncUI6-Desktop-Profile</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-RsyncUI6-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.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -233,41 +322,22 @@
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value> <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.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="QString">0</value>
<value type="QString">1</value>
<value type="QString">2</value>
<value type="QString">3</value>
<value type="QString">4</value>
<value type="QString">5</value>
<value type="QString">6</value>
<value type="QString">7</value>
<value type="QString">8</value>
<value type="QString">9</value>
<value type="QString">10</value>
<value type="QString">11</value>
<value type="QString">12</value>
<value type="QString">13</value>
<value type="QString">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/> <valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value> <value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/daniel/develop/RsyncUI6/RsyncUI6.pro</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/daniel/develop/RsyncUI6/RsyncUI6.pro</value> <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value> <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</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.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/daniel/develop/build-RsyncUI6-Desktop-Debug</value>
</valuemap> </valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value> <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.TargetCount</variable> <variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value> <value type="qlonglong">2</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable> <variable>ProjectExplorer.Project.Updater.FileVersion</variable>

View File

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

BIN
RsyncUI_fr_FR.qm Normal file

Binary file not shown.

View File

@ -58,12 +58,12 @@
<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>

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>
@ -27,101 +27,109 @@ downloadFile::downloadFile()
//Slot activated when download is cancelled //Slot activated when download is cancelled
void MainWindow::cancelled(QProcess * process) void MainWindow::cancelled(QProcess * process)
{ {
bool n = 0; bool n = 0;
process->terminate(); process->terminate();
n = process->waitForFinished(30000); n = process->waitForFinished(30000);
if (n == false) if (n == false)
{ {
process->close(); process->close();
} }
} }
// launch a rsync processus downloading a file // launch a rsync processus downloading a file
void MainWindow::download() 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;
env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable server = this->connexion.user + "@" + this->downloading.server;
this->downloading.process->setProcessEnvironment(env); env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable
} this->downloading.process->setProcessEnvironment(env);
// Populating array with command and parameters for popen2 }
cmd = "rsync"; // Populating array with command and parameters for rsync
if (this->connexion.bandwidthLimit != 0) cmd = "rsync";
{ 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); }
param << "-aXP";
param << this->downloading.server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/";
if (downloading.ipversion == 4 || downloading.ipversion == 6)
{
param << "-" + QString::number(downloading.ipversion);
}
param << "--port" << QString::number(this->downloading.port);
param << "-aXP ";
param << server + "::" + this->downloading.service + "/" + this->downloading.path << this->downloading.savePath + "/";
connect(this->downloading.process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(downloadFinished(int, QProcess::ExitStatus))); qInfo("%s %s", cmd.toStdString().c_str(), param.join(" ").toStdString().c_str() );
//connect(this->downloading.process, SIGNAL(errorOccurred(QProcess::ProcessError error)), this, SLOT(downloadProcessError(QProcess::ProcessError error)));
//connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr()));
connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput()));
this->downloading.process->start(cmd, param); this->downloading.process->start(cmd, param);
connect(this->downloading.process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(downloadFinished(int, QProcess::ExitStatus)));
//connect(this->downloading.process, SIGNAL(errorOccurred(QProcess::ProcessError error)), this, SLOT(downloadProcessError(QProcess::ProcessError error)));
//connect(this->downloading.process, SIGNAL(readyReadStandardError()), this, SLOT(downloadProcessStderr()));
connect(this->downloading.process, SIGNAL(readyReadStandardOutput()), this, SLOT(readRsyncOutput()));
} }
void MainWindow::readRsyncOutput() void MainWindow::readRsyncOutput()
{ {
QString line; QString line;
bool flag = false; bool flag = false;
int value; int value;
int pos; int pos;
static QString dlSpeed; static QString dlSpeed;
QStringList list; QStringList list;
static QString filename; static QString filename;
int i; int i;
int listSize; int listSize;
while(!flag) while(!flag)
{ {
list.clear(); list.clear();
line = QString::fromUtf8(this->downloading.process->readLine()); line = QString::fromUtf8(this->downloading.process->readLine());
if (line.isEmpty()) if (line.isEmpty())
{ {
flag = true; flag = true;
break; break;
}else }else
{ {
pos = line.indexOf("%"); pos = line.indexOf("%");
if (pos != -1) if (pos != -1)
{ {
line = line.simplified(); line = line.simplified();
list = line.split(" "); list = line.split(" ");
listSize = list.count() / 4; listSize = list.count() / 4;
for (i = 0; i < listSize; i++) for (i = 0; i < listSize; i++)
{ {
value = list.at(i *4 + 1).chopped(1).toInt(); value = list.at(i *4 + 1).chopped(1).toInt();
dlSpeed = list.at(i * 4 + 2); dlSpeed = list.at(i * 4 + 2);
/*line.resize(pos); /*line.resize(pos);
pos = line.lastIndexOf(' '); pos = line.lastIndexOf(' ');
if (pos != -1) if (pos != -1)
{ {
line.remove(0, pos); line.remove(0, pos);
value = line.toInt();*/ value = line.toInt();*/
// sending progress to Main window // sending progress to Main window
emit progressSignal(value); emit progressSignal(value);
emit fileName(filename + " %p%" + "\t " + dlSpeed); emit fileName(filename + " %p%" + "\t " + dlSpeed);
} }
}else }else
{ {
if (!line.contains("receiving")) if (!line.contains("receiving"))
{ {
filename = line.remove(QChar('\n'), Qt::CaseInsensitive); filename = line.remove(QChar('\n'), Qt::CaseInsensitive);
emit fileName(filename + " %p%\t " + dlSpeed); emit fileName(filename + " %p%\t " + dlSpeed);
} }
} }
} }
} }
} }

View File

@ -10,11 +10,10 @@ class MainWindow;
class downloadFile : public QObject class downloadFile : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
downloadFile(); downloadFile();
bool canceled; bool canceled;
}; };
#endif // DOWNLOADFILE_H #endif // DOWNLOADFILE_H

View File

@ -4,28 +4,31 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
QTranslator myappTranslator; QTranslator myappTranslator;
QCoreApplication::setOrganizationName("RsyncUI"); QCoreApplication::setOrganizationName("RsyncUI");
QCoreApplication::setApplicationName("RsyncUI"); QCoreApplication::setApplicationName("RsyncUI");
// Initialization of localization // Initialization of localization
QLocale localeName = QLocale::system(); QLocale localeName = QLocale::system();
QString localeDir = "/usr/share/locale/" + localeName.name() + "/LC_MESSAGES/"; //RsyncUI_" + localeName.name() + ".qm"; QString localeDir = "/usr/share/locale/" + localeName.name() + "/LC_MESSAGES/"; //RsyncUI_" + localeName.name() + ".qm";
QString localeFilename = QCoreApplication::applicationName() + "_" + localeName.name(); QString localeFilename = QCoreApplication::applicationName() + "_" + localeName.name();
QLocale locale = QLocale(); QLocale locale = QLocale();
if (myappTranslator.load(localeFilename, localeDir)) if (myappTranslator.load(localeFilename, localeDir))
{ {
a.installTranslator(&myappTranslator); a.installTranslator(&myappTranslator);
} }
static const QString appName = "RsyncUI"; // Enable logging to journald
qputenv("QT_FORCE_STDERR_LOGGING", QByteArray("0"));
//Password passwdJob; static const QString appName = "RsyncUI";
MainWindow w; //Password passwdJob;
w.show(); MainWindow w;
w.init(); qInfo("RsyncUI begining");
return a.exec(); w.show();
w.init();
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,36 +242,37 @@ 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.setInformativeText(tr("The program will keep running in the "
"system tray. To terminate the program, "
"choose <b>Quit</b> in the context menu "
"of the system tray entry."));
msgBox.addButton(QMessageBox::Ok);
//msgBox.addButton(QMessageBox::No);
// msgBox.setDefaultButton(QMessageBox::Yes);
msgBox.setCheckBox(cb);
msgBox.exec();
msgBox.clickedButton();
// if response is yes then loading list
if (cb->isChecked())
{ {
msgBox.setWindowTitle(a.applicationName()); this->settings.setValue("CloseCheckbox", true);
msgBox.setInformativeText(tr("The program will keep running in the " }
"system tray. To terminate the program, " hide();
"choose <b>Quit</b> in the context menu "
"of the system tray entry."));
msgBox.addButton(QMessageBox::Ok);
//msgBox.addButton(QMessageBox::No);
// msgBox.setDefaultButton(QMessageBox::Yes);
msgBox.setCheckBox(cb);
msgBox.exec();
msgBox.clickedButton();
// if response is yes then loading list
if (cb->isChecked())
{
this->settings.setValue("CloseCheckbox", true);
}
hide();
//event->accept(); //event->accept();
event->ignore(); event->ignore();
} }
} }
// Populate treeview with list of files // Populate treeview with list of files
@ -308,7 +311,13 @@ void MainWindow::populateList(int item)
int port; int port;
int i; int i;
server = ui->khistorycombobox->itemText(item); if (item == -1)
{
server = ui->khistorycombobox->currentText();
}else
{
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))
{ {
@ -482,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;
@ -489,8 +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;
bool r;
static uint looping; static uint looping;
QStringList dirs;
myProcess = new QProcess(this); myProcess = new QProcess(this);
myProcess->setProcessChannelMode(QProcess::MergedChannels); myProcess->setProcessChannelMode(QProcess::MergedChannels);
@ -536,7 +546,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
if (line.contains("auth failed")) if (line.contains("auth failed"))
{ {
myProcess->readAllStandardOutput(); myProcess->readAllStandardOutput();
r = getUserPassword(&this->connexion); getUserPassword(&this->connexion);
if (looping <= 1) if (looping <= 1)
{ {
this->rescan = true; this->rescan = true;
@ -554,7 +564,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
return false; 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 != '.')
@ -567,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] + " ";
} }
@ -579,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);
@ -708,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)
@ -720,6 +740,20 @@ 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
@ -727,23 +761,8 @@ void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, Q
treeItem->setIcon(0, QIcon::fromTheme("folder")); treeItem->setIcon(0, QIcon::fromTheme("folder"));
}else }else
{ {
// item is a file this->settings.beginGroup("Downloaded/");
if (QFile::exists(this->downloading.savePath + "/" + name)) this->settings.endGroup();
{
QBrush b (Qt::green);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}else
{
this->settings.beginGroup("Downloaded/");
if (this->settings.contains(name))
{
QBrush b (Qt::red);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}
this->settings.endGroup();
}
treeItem->setText(1,type); treeItem->setText(1,type);
} }
treeItem->setText(0, name); treeItem->setText(0, name);
@ -868,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;
@ -892,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
@ -971,11 +996,14 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
}else }else
{ {
//Item is a Directory //Item is a Directory
while (this->rescan) if (item->isExpanded() == false)
{ {
scanDir(this->connexion.server, this->connexion.port, item, this->connexion.service + "/" + path +"/"); while (this->rescan)
item->setExpanded(true); {
scanDir(this->connexion.server, this->connexion.port, item, this->connexion.service + "/" + path +"/");
item->setExpanded(true);
}
} }
} }
@ -983,6 +1011,7 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
{ {
saveDownloadList(); saveDownloadList();
} }
treeviewClicked = false;
} }
// Launch the thread which download the file // Launch the thread which download the file
@ -1077,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);
@ -1398,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>
@ -53,177 +51,185 @@ extern QMap<int, QString> rsyncErrorStrings;
class Connexion class Connexion
{ {
public: public:
int bandwidthLimit = 0; int bandwidthLimit = 0;
int bandwidthLimitUnit; int bandwidthLimitUnit;
int contimeout = 20; int contimeout = 20;
QString server; QString server;
QString service; QString service;
QString path; QString path;
QString savePath; QString savePath;
QString user; QString user;
QString password; QString password;
QProcess * process = nullptr; QProcess * process = nullptr;
int port = 873; int ipversion = 4;
bool comboboxChanged; uint port = 873;
bool quit = false; bool quit = false;
void clear(); void clear();
}; };
class Downloading class Downloading
{ {
public: public:
QString server; QString server;
QString service; QString service;
QString path; QString path;
QString savePath; QString savePath;
QString user; QString user;
QString password; QString password;
int port = 873; int ipversion = 4;
QProcess * process = nullptr; int port = 873;
bool quit = false; QProcess * process = nullptr;
void clear(); bool quit = false;
void clear();
}; };
class About class About
{ {
public: public:
QString version = "2.11.5"; QString version;
QString author = "Daniel TARTAVEL-JEANNOT"; QString author = "Daniel TARTAVEL-JEANNOT";
QString licence = "GPL_V3"; QString licence = "GPL_V3";
QString description; QString description;
QString email = "dtux@free.fr"; QString email = "dtux@free.fr";
QString git = "https://git.labolyon.fr/dtux/RsyncUI/issues"; QString git = "https://git.labolyon.fr/dtux/RsyncUI/issues";
}; };
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public: public:
Ui::MainWindow *ui; Ui::MainWindow *ui;
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget *parent = nullptr);
~MainWindow(); ~MainWindow();
// passwdManager; // passwdManager;
QProgressDialog *progress; QProgressDialog *progress;
Connexion connexion; Connexion connexion;
Connexion downloading; Connexion downloading;
QSettings settings; QSettings settings;
About about; About about;
QDialog Configuration; QDialog Configuration;
Ui::Configuration config; Ui::Configuration config;
QDialog aboutDialog; QDialog aboutDialog;
Ui::windowAbout AboutW; Ui::windowAbout AboutW;
std::vector <QString> serversList; std::vector <QString> serversList;
QSystemTrayIcon * trayIcon; QSystemTrayIcon * trayIcon;
QString icon = "/usr/share/icons/RsyncUI.png"; QString icon = "/usr/share/icons/RsyncUI.png";
bool rescan = false; bool rescan = false;
bool stopDlAsked; bool stopDlAsked;
bool treeviewClicked;
bool initialization = true;
bool exiting = false;
QList<QString> UnitText { QList<QString> UnitText
tr("B"), {
tr("KB"), tr("B"),
tr("MB"), tr("KB"),
tr("GB"), tr("MB"),
tr("TB"), tr("GB"),
tr("PB") tr("TB"),
}; tr("PB")
QList<QChar> bwUnitChar{ };
'K', QList<QChar> bwUnitChar
'M', {
'T', 'K',
'G', 'M',
'P' 'T',
}; 'G',
'P'
};
QVector<QString> downloadProcessErrorString = QVector<QString> downloadProcessErrorString =
{ {
tr("The process failed to start. Either the invoked program is missing, or you may have insufficient permissions or resources to invoke the program."), tr("The process failed to start. Either the invoked program is missing, or you may have insufficient permissions or resources to invoke the program."),
tr("The process crashed some time after starting successfully."), tr("The process crashed some time after starting successfully."),
tr("The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again."), tr("The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again."),
tr("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."), tr("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."),
tr("An error occurred when attempting to read from the process. For example, the process may not be running."), tr("An error occurred when attempting to read from the process. For example, the process may not be running."),
tr("An unknown error occurred. This is the default return value of error().") tr("An unknown error occurred. This is the default return value of error().")
}; };
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();
void showWindow(); void showWindow();
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);
private slots: private slots:
void on_listWidget_clicked(); void on_listWidget_clicked();
void on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadDir = false); void on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadDir = false);
void downloadFinished(int exitCode, QProcess::ExitStatus exitStatus); void downloadFinished(int exitCode, QProcess::ExitStatus exitStatus);
void readRsyncOutput(); void readRsyncOutput();
void stoppingDownload(); void stoppingDownload();
void on_listDownload_itemClicked(QListWidgetItem *item); void on_listDownload_itemClicked(QListWidgetItem *item);
void on_actionAbout_triggered(); void on_actionAbout_triggered();
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(); void on_action_Settings_triggered();
void on_action_Settings_triggered(); void on_actionDownload_triggered();
void on_actionDownload_triggered(); void on_comboBox_currentIndexChanged(int index);
//void downloadingErrorSlot(QString); void on_buttonBox_accepted();
void on_comboBox_currentIndexChanged(int index); void cancelled(QProcess *);
void on_buttonBox_accepted(); void on_trayIcon_clicked(QSystemTrayIcon::ActivationReason reason);
void cancelled(QProcess *); void quitApp();
void on_trayIcon_clicked(QSystemTrayIcon::ActivationReason reason); void on_actionExit_triggered();
void quitApp(); void setDlSpeed(QString speed);
void on_actionExit_triggered(); void on_actionHiddenService_triggered();
void setDlSpeed(QString speed); //void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_actionHiddenService_triggered(); //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);
void speed(QString); void speed(QString);
void finishedSignal(bool = true); void finishedSignal(bool = true);
void fileName(QString); void fileName(QString);
void passwordReady(); void passwordReady();
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

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

108
tools.cpp
View File

@ -8,65 +8,69 @@ 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)
{ {
QMessageBox::warning( qInfo("rsync error %i : %s ", + myProcess->error(), myProcess->errorString().toStdString().c_str());
w, QMessageBox::warning(
a.applicationName(), w,
myProcess->errorString(), a.applicationName(),
QMessageBox::Ok, rsyncErrorStrings[myProcess->error()],
QMessageBox::Ok); //myProcess->errorString(),
return true; QMessageBox::Ok,
} QMessageBox::Ok);
w->stopDlAsked = false; return true;
return false; }
w->stopDlAsked = false;
return false;
} }
QString getFileType(QString filename) QString getFileType(QString filename)
{ {
QMimeDatabase db; QMimeDatabase db;
QMimeType mime = db.mimeTypeForFile(filename); QMimeType mime = db.mimeTypeForFile(filename);
QString returnValue = mime.name().section('/',0 ,0); QString returnValue = mime.name().section('/',0 ,0);
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