From ec38ce4ec3d61690b01320524b9c630e546d6a24 Mon Sep 17 00:00:00 2001 From: Daniel Tartavel Date: Sat, 3 Aug 2024 15:22:35 +0200 Subject: [PATCH] version 2.12.1 --- Makefile | 173 ++++++++++++++++++++++------- RsyncUI.pro.user | 167 +++++++++++++++++++++++++++- RsyncUI.spec | 2 +- RsyncUI_fr_FR.qm | Bin 0 -> 20991 bytes RsyncUI_fr_FR.ts | 4 +- downloadfile.cpp | 172 +++++++++++++++-------------- downloadfile.h | 7 +- main.cpp | 41 +++---- mainwindow.h | 275 ++++++++++++++++++++++++----------------------- tools.cpp | 73 ++++++++++--- tools.h | 1 + version.h | 2 +- 12 files changed, 614 insertions(+), 303 deletions(-) create mode 100644 RsyncUI_fr_FR.qm diff --git a/Makefile b/Makefile index 7eba6a7..70b5bf8 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ ############################################################################# # 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 # 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 @@ -14,11 +14,11 @@ EQ = = CC = gcc 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) -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) -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++ -QMAKE = /usr/bin/qmake +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/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/lib64/qt5/bin/qmake DEL_FILE = rm -f CHK_DIR_EXISTS= test -d MKDIR = mkdir -p @@ -28,8 +28,8 @@ COPY_DIR = cp -f -R INSTALL_FILE = install -m 644 -p INSTALL_PROGRAM = install -m 755 -p INSTALL_DIR = cp -f -R -QINSTALL = /usr/bin/qmake -install qinstall -QINSTALL_PROGRAM = /usr/bin/qmake -install qinstall -exe +QINSTALL = /usr/lib64/qt5/bin/qmake -install qinstall +QINSTALL_PROGRAM = /usr/lib64/qt5/bin/qmake -install qinstall -exe DEL_FILE = rm -f SYMLINK = ln -f -s DEL_DIR = rmdir @@ -40,7 +40,7 @@ DISTNAME = RsyncUI1.0.0 DISTDIR = /home/daniel/develop/RsyncUI/.tmp/RsyncUI1.0.0 LINK = g++ 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 RANLIB = SED = sed @@ -55,15 +55,18 @@ OBJECTS_DIR = ./ SOURCES = downloadfile.cpp \ main.cpp \ mainwindow.cpp \ + password.cpp \ tools.cpp moc_downloadfile.cpp \ moc_mainwindow.cpp OBJECTS = downloadfile.o \ main.o \ mainwindow.o \ + password.o \ tools.o \ moc_downloadfile.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/linux.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_quickwidgets.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_sql.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_theme_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_private.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_xml.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_Solid.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.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/features/qt_functions.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/yacc.prf \ /usr/lib64/qt5/mkspecs/features/lex.prf \ - RsyncUI.pro downloadfile.h \ + RsyncUI.pro version.h \ + downloadfile.h \ mainwindow.h \ + password.h \ tools.h downloadfile.cpp \ main.cpp \ mainwindow.cpp \ + password.cpp \ tools.cpp QMAKE_TARGET = RsyncUI DESTDIR = @@ -242,7 +256,7 @@ TARGET = RsyncUI first: all ####### 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) 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_quickwidgets.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_sql.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_theme_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_private.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_xml.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_Solid.pri \ /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.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/features/qt_functions.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/lex.prf \ 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/common/unix.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_quickwidgets.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_sql.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_theme_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_private.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_xml.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_Solid.pri: /usr/lib64/qt5/mkspecs/modules/qt_SonnetCore.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/features/qt_functions.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: RsyncUI.pro: qmake: FORCE - @$(QMAKE) -o Makefile RsyncUI.pro + @$(QMAKE) -o Makefile RsyncUI.pro -spec linux-g++ qmake_all: FORCE @@ -593,10 +623,10 @@ distdir: FORCE @test -d $(DISTDIR) || mkdir -p $(DISTDIR) $(COPY_FILE) --parents $(DIST) $(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 downloadfile.cpp main.cpp mainwindow.cpp tools.cpp $(DISTDIR)/ - $(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/ - $(COPY_FILE) --parents languages/RsyncUI_fr_FR.ts $(DISTDIR)/ + $(COPY_FILE) --parents version.h downloadfile.h mainwindow.h password.h tools.h $(DISTDIR)/ + $(COPY_FILE) --parents downloadfile.cpp main.cpp mainwindow.cpp password.cpp tools.cpp $(DISTDIR)/ + $(COPY_FILE) --parents about.ui configuration.ui mainwindow.ui $(DISTDIR)/ + $(COPY_FILE) --parents RsyncUI_fr_FR.ts $(DISTDIR)/ clean: compiler_clean @@ -626,31 +656,43 @@ compiler_moc_predefs_make_all: moc_predefs.h compiler_moc_predefs_clean: -$(DEL_FILE) moc_predefs.h 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_clean: -$(DEL_FILE) moc_downloadfile.cpp moc_mainwindow.cpp moc_downloadfile.cpp: downloadfile.h \ - ui_mainwindow.h \ moc_predefs.h \ /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 \ - downloadfile.h \ ui_mainwindow.h \ + ui_configuration.h \ + ui_about.h \ + downloadfile.h \ + tools.h \ + password.h \ + mainwindow.h \ moc_predefs.h \ /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_clean: compiler_moc_source_make_all: 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: - -$(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 \ /usr/lib64/qt5/bin/uic \ /usr/include/KF5/KCompletion/kcombobox.h \ @@ -670,25 +712,49 @@ compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_ui ####### Compile downloadfile.o: downloadfile.cpp mainwindow.h \ - downloadfile.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 main.o: main.cpp mainwindow.h \ + ui_mainwindow.h \ + ui_configuration.h \ + ui_about.h \ downloadfile.h \ - ui_mainwindow.h + tools.h \ + password.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp mainwindow.o: mainwindow.cpp mainwindow.h \ - downloadfile.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 -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 \ - 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 moc_downloadfile.o: moc_downloadfile.cpp @@ -710,19 +776,46 @@ uninstall_target: FORCE install_lang: first FORCE - @test -d $(INSTALL_ROOT)/languages || mkdir -p $(INSTALL_ROOT)/languages - $(QINSTALL) /home/daniel/develop/RsyncUI/languages/RsyncUI_fr_FR.qm $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.qm - $(QINSTALL) /home/daniel/develop/RsyncUI/languages/RsyncUI_fr_FR.ts $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.ts + @test -d $(INSTALL_ROOT)/usr/share/locale/ || mkdir -p $(INSTALL_ROOT)/usr/share/locale/ + $(QINSTALL) /home/daniel/develop/RsyncUI/languages/fr_FR $(INSTALL_ROOT)/usr/share/locale/fr_FR uninstall_lang: FORCE - -$(DEL_FILE) -r $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.ts - -$(DEL_FILE) -r $(INSTALL_ROOT)/languages/RsyncUI_fr_FR.qm - -$(DEL_DIR) $(INSTALL_ROOT)/languages/ + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/locale/fr_FR + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/locale/ -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: diff --git a/RsyncUI.pro.user b/RsyncUI.pro.user index e69f627..61d2292 100644 --- a/RsyncUI.pro.user +++ b/RsyncUI.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -172,9 +172,172 @@ 1 + + ProjectExplorer.Project.Target.1 + + Desktop + Desktop + Desktop + {893f9ca6-0efa-4c08-a4a6-5a818f60a8a0} + 0 + 0 + 0 + + 0 + /home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Debug + /home/daniel/develop/build-RsyncUI-Desktop-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + /home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Release + /home/daniel/develop/build-RsyncUI-Desktop-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + /home/daniel/develop/RsyncUI/../build-RsyncUI-Desktop-Profile + /home/daniel/develop/build-RsyncUI-Desktop-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + ProjectExplorer.CustomExecutableRunConfiguration + + false + true + false + true + + 1 + + ProjectExplorer.Project.TargetCount - 1 + 2 ProjectExplorer.Project.Updater.FileVersion diff --git a/RsyncUI.spec b/RsyncUI.spec index 211f99c..7815727 100644 --- a/RsyncUI.spec +++ b/RsyncUI.spec @@ -2,7 +2,7 @@ Name: rsyncui Summary: Client for rsync server -Version: 2.12 +Version: 2.12.1 Release: %mkrel 1 License: GPLv3 Group: Networking/Remote access diff --git a/RsyncUI_fr_FR.qm b/RsyncUI_fr_FR.qm new file mode 100644 index 0000000000000000000000000000000000000000..62ee40e425746eee5c2d2641d9f9832f066fd807 GIT binary patch literal 20991 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 Kz%{sO;C}%K*)v`M literal 0 HcmV?d00001 diff --git a/RsyncUI_fr_FR.ts b/RsyncUI_fr_FR.ts index 15385e9..1c865b7 100644 --- a/RsyncUI_fr_FR.ts +++ b/RsyncUI_fr_FR.ts @@ -58,12 +58,12 @@ Automatic saving of download queue - Enregistrement automatique de la file + Enregistrement automatique de la file de téléchargement Auto save download queue - Enregistrement automatique de la file d'enregistrement + Enregistrement automatique de la file de téléchargement diff --git a/downloadfile.cpp b/downloadfile.cpp index f0b84ad..7c87702 100644 --- a/downloadfile.cpp +++ b/downloadfile.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +//#include #include #include #include @@ -27,99 +27,109 @@ downloadFile::downloadFile() //Slot activated when download is cancelled void MainWindow::cancelled(QProcess * process) { - bool n = 0; + bool n = 0; - process->terminate(); - n = process->waitForFinished(30000); - if (n == false) - { - process->close(); - } + process->terminate(); + n = process->waitForFinished(30000); + if (n == false) + { + process->close(); + } } // launch a rsync processus downloading a file void MainWindow::download() { - QString cmd; - QStringList param; - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QString cmd; + QStringList param; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QString server = downloading.server; - this->downloading.process = new QProcess(this); - if (!this->downloading.user.isEmpty()) - { - this->downloading.server.prepend(this->connexion.user + "@"); - 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"; - if (this->connexion.bandwidthLimit != 0) - { - 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 + "/"; + this->downloading.process = new QProcess(this); + if (!this->downloading.user.isEmpty()) + { + this->downloading.user = this->connexion.user; + server = this->connexion.user + "@" + this->downloading.server; + env.insert("RSYNC_PASSWORD", this->downloading.password); // Add an environment variable + this->downloading.process->setProcessEnvironment(env); + } + // Populating array with command and parameters for rsync + cmd = "rsync"; + if (this->connexion.bandwidthLimit != 0) + { + param << "--bwlimit=" + QString::number(this->connexion.bandwidthLimit) + bwUnitChar[this->connexion.bandwidthLimitUnit]; + } - this->downloading.process->start(cmd, param); + if (downloading.ipversion == 4 || downloading.ipversion == 6) + { + param << "-" + QString::number(downloading.ipversion); + } - 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())); + param << "--port" << QString::number(this->downloading.port); + param << "-aXP "; + 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(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() { - QString line; - bool flag = false; - int value; - int pos; - static QString dlSpeed; - QStringList list; - static QString filename; - int i; - int listSize; + QString line; + bool flag = false; + int value; + int pos; + static QString dlSpeed; + QStringList list; + static QString filename; + int i; + int listSize; - while(!flag) - { - list.clear(); - line = QString::fromUtf8(this->downloading.process->readLine()); - if (line.isEmpty()) - { - flag = true; - break; - }else - { - pos = line.indexOf("%"); - if (pos != -1) - { - line = line.simplified(); - list = line.split(" "); - listSize = list.count() / 4; - for (i = 0; i < listSize; i++) - { - value = list.at(i *4 + 1).chopped(1).toInt(); - dlSpeed = list.at(i * 4 + 2); + while(!flag) + { + list.clear(); + line = QString::fromUtf8(this->downloading.process->readLine()); + if (line.isEmpty()) + { + flag = true; + break; + }else + { + pos = line.indexOf("%"); + if (pos != -1) + { + line = line.simplified(); + list = line.split(" "); + listSize = list.count() / 4; + for (i = 0; i < listSize; i++) + { + value = list.at(i *4 + 1).chopped(1).toInt(); + dlSpeed = list.at(i * 4 + 2); - /*line.resize(pos); - pos = line.lastIndexOf(' '); - if (pos != -1) - { - line.remove(0, pos); - value = line.toInt();*/ - // sending progress to Main window - emit progressSignal(value); - emit fileName(filename + " %p%" + "\t " + dlSpeed); - } - }else - { - if (!line.contains("receiving")) - { - filename = line.remove(QChar('\n'), Qt::CaseInsensitive); - emit fileName(filename + " %p%\t " + dlSpeed); - } - } - } - } + /*line.resize(pos); + pos = line.lastIndexOf(' '); + if (pos != -1) + { + line.remove(0, pos); + value = line.toInt();*/ + // sending progress to Main window + emit progressSignal(value); + emit fileName(filename + " %p%" + "\t " + dlSpeed); + } + }else + { + if (!line.contains("receiving")) + { + filename = line.remove(QChar('\n'), Qt::CaseInsensitive); + emit fileName(filename + " %p%\t " + dlSpeed); + } + } + } + } } diff --git a/downloadfile.h b/downloadfile.h index 74098f5..e3c29f9 100644 --- a/downloadfile.h +++ b/downloadfile.h @@ -10,11 +10,10 @@ class MainWindow; class downloadFile : public QObject { - Q_OBJECT + Q_OBJECT public: - downloadFile(); - bool canceled; - + downloadFile(); + bool canceled; }; #endif // DOWNLOADFILE_H diff --git a/main.cpp b/main.cpp index 252bec4..eabf92c 100644 --- a/main.cpp +++ b/main.cpp @@ -4,28 +4,31 @@ int main(int argc, char *argv[]) { - QApplication a(argc, argv); - QTranslator myappTranslator; + QApplication a(argc, argv); + QTranslator myappTranslator; - QCoreApplication::setOrganizationName("RsyncUI"); - QCoreApplication::setApplicationName("RsyncUI"); + QCoreApplication::setOrganizationName("RsyncUI"); + QCoreApplication::setApplicationName("RsyncUI"); - // Initialization of localization - QLocale localeName = QLocale::system(); - QString localeDir = "/usr/share/locale/" + localeName.name() + "/LC_MESSAGES/"; //RsyncUI_" + localeName.name() + ".qm"; - QString localeFilename = QCoreApplication::applicationName() + "_" + localeName.name(); - QLocale locale = QLocale(); + // Initialization of localization + QLocale localeName = QLocale::system(); + QString localeDir = "/usr/share/locale/" + localeName.name() + "/LC_MESSAGES/"; //RsyncUI_" + localeName.name() + ".qm"; + QString localeFilename = QCoreApplication::applicationName() + "_" + localeName.name(); + QLocale locale = QLocale(); - if (myappTranslator.load(localeFilename, localeDir)) - { - a.installTranslator(&myappTranslator); - } + if (myappTranslator.load(localeFilename, localeDir)) + { + a.installTranslator(&myappTranslator); + } - static const QString appName = "RsyncUI"; + // Enable logging to journald + qputenv("QT_FORCE_STDERR_LOGGING", QByteArray("0")); - //Password passwdJob; - MainWindow w; - w.show(); - w.init(); - return a.exec(); + static const QString appName = "RsyncUI"; + //Password passwdJob; + MainWindow w; + qInfo("RsyncUI begining"); + w.show(); + w.init(); + return a.exec(); } diff --git a/mainwindow.h b/mainwindow.h index e918107..392208e 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -1,13 +1,11 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H + #define QT_USE_FAST_CONCATENATION #define QT_USE_FAST_OPERATOR_PLUS #include "ui_mainwindow.h" #include "ui_configuration.h" #include "ui_about.h" -#include "downloadfile.h" -#include "tools.h" -#include "password.h" #include #include #include @@ -53,180 +51,185 @@ extern QMap rsyncErrorStrings; class Connexion { - public: - int bandwidthLimit = 0; - int bandwidthLimitUnit; - int contimeout = 20; - QString server; - QString service; - QString path; - QString savePath; - QString user; - QString password; - QProcess * process = nullptr; - int port = 873; - bool comboboxChanged; - bool quit = false; - void clear(); + public: + int bandwidthLimit = 0; + int bandwidthLimitUnit; + int contimeout = 20; + QString server; + QString service; + QString path; + QString savePath; + QString user; + QString password; + QProcess * process = nullptr; + int ipversion = 4; + uint port = 873; + bool quit = false; + void clear(); }; class Downloading { - public: - QString server; - QString service; - QString path; - QString savePath; - QString user; - QString password; - int port = 873; - QProcess * process = nullptr; - bool quit = false; - void clear(); + public: + QString server; + QString service; + QString path; + QString savePath; + QString user; + QString password; + int ipversion = 4; + int port = 873; + QProcess * process = nullptr; + bool quit = false; + void clear(); }; class About { - public: - QString version; - QString author = "Daniel TARTAVEL-JEANNOT"; - QString licence = "GPL_V3"; - QString description; - QString email = "dtux@free.fr"; - QString git = "https://git.labolyon.fr/dtux/RsyncUI/issues"; + public: + QString version; + QString author = "Daniel TARTAVEL-JEANNOT"; + QString licence = "GPL_V3"; + QString description; + QString email = "dtux@free.fr"; + QString git = "https://git.labolyon.fr/dtux/RsyncUI/issues"; }; class MainWindow : public QMainWindow { - Q_OBJECT + Q_OBJECT - public: - Ui::MainWindow *ui; - MainWindow(QWidget *parent = nullptr); - ~MainWindow(); - // passwdManager; - QProgressDialog *progress; - Connexion connexion; - Connexion downloading; - QSettings settings; - About about; - QDialog Configuration; - Ui::Configuration config; - QDialog aboutDialog; - Ui::windowAbout AboutW; - std::vector serversList; - QSystemTrayIcon * trayIcon; - QString icon = "/usr/share/icons/RsyncUI.png"; - bool rescan = false; - bool stopDlAsked; - bool treeviewClicked; + public: + Ui::MainWindow *ui; + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + // passwdManager; + QProgressDialog *progress; + Connexion connexion; + Connexion downloading; + QSettings settings; + About about; + QDialog Configuration; + Ui::Configuration config; + QDialog aboutDialog; + Ui::windowAbout AboutW; + std::vector serversList; + QSystemTrayIcon * trayIcon; + QString icon = "/usr/share/icons/RsyncUI.png"; + bool rescan = false; + bool stopDlAsked; + bool treeviewClicked; + bool initialization = true; + bool exiting = false; - QList UnitText - { - tr("B"), - tr("KB"), - tr("MB"), - tr("GB"), - tr("TB"), - tr("PB") - }; - QList bwUnitChar - { - 'K', - 'M', - 'T', - 'G', - 'P' - }; + QList UnitText + { + tr("B"), + tr("KB"), + tr("MB"), + tr("GB"), + tr("TB"), + tr("PB") + }; + QList bwUnitChar + { + 'K', + 'M', + 'T', + 'G', + 'P' + }; - QVector 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 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("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 unknown error occurred. This is the default return value of error().") - }; + QVector 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 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("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 unknown error occurred. This is the default return value of error().") + }; - void displayTree(); - void populateTree(); - void populateList(int); - void listServices(); - bool 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); - bool scanDir(QString server, int portN, QTreeWidgetItem *parent = NULL, QString path = "" ); - void startDownloading(); - void loadSettings(); - void saveSettings(); - void closeEvent (QCloseEvent *event); - void saveDownloadList(); - void loadDownloadList(); - void download(); - void initSystemTrayIcon(); - void hideWindow(); - void showWindow(); - void init(); - bool getUserPassword(Connexion *); - void preparePopulateTree(); - bool testServicePresence(QString, bool=false); - void passwordStore (QString account, QString password); - QString passwordGet (QString account); + void displayTree(); + void populateTree(); + void populateList(QString server, uint port); + void listServices(); + uint validateServer(QString server); + void addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir, QString dirName, QTreeWidgetItem *parent); + bool scanDir(Connexion * connexion, QTreeWidgetItem *parent = NULL, QString path = "" ); + void startDownloading(); + void loadSettings(); + void saveSettings(); + void closeEvent (QCloseEvent *event); + void saveDownloadList(); + void loadDownloadList(); + void deleteDownloadList(); + void download(); + void initSystemTrayIcon(); + void hideWindow(); + void showWindow(); + void init(); + bool getUserPassword(Connexion *); + void preparePopulateTree(); + bool testServerPresence(QString, bool=false); + void passwordStore (QString account, QString password); + 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 on_comboBox_currentIndexChanged(int index); + void on_buttonBox_accepted(); - void on_buttonBox_accepted(); + void cancelled(QProcess *); - void cancelled(QProcess *); + void on_trayIcon_clicked(QSystemTrayIcon::ActivationReason reason); - void on_trayIcon_clicked(QSystemTrayIcon::ActivationReason reason); + void quitApp(); - void quitApp(); + void on_actionExit_triggered(); - void on_actionExit_triggered(); + void setDlSpeed(QString speed); - void setDlSpeed(QString speed); + void on_actionHiddenService_triggered(); - void on_actionHiddenService_triggered(); + //void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); - void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); + //void on_khistorycombobox_currentTextChanged(const QString &arg1); + + void on_khistorycombobox_currentTextChanged(const QString &arg1); signals: - void stopDownloading(QProcess *); - void progressSignal(int); - void speed(QString); - void finishedSignal(bool = true); - void fileName(QString); - void passwordReady(); + void stopDownloading(QProcess *); + void progressSignal(int); + void speed(QString); + void finishedSignal(bool = true); + void fileName(QString); + void passwordReady(); }; #endif // MAINWINDOW_H diff --git a/tools.cpp b/tools.cpp index 051fe4e..6690291 100644 --- a/tools.cpp +++ b/tools.cpp @@ -12,26 +12,65 @@ extern QApplication a; // return true in case of error bool testRsyncReturn(MainWindow * w, QProcess * myProcess) { - if (myProcess->exitStatus() != 0 and w->stopDlAsked != true) - { - cout << "rsync error: " << myProcess->error() << " : " << myProcess->errorString().toStdString() << endl; - QMessageBox::warning( - w, - a.applicationName(), - myProcess->errorString(), - QMessageBox::Ok, - QMessageBox::Ok); - return true; - } - w->stopDlAsked = false; - return false; + if (myProcess->exitStatus() != 0 and w->stopDlAsked != true) + { + qInfo("rsync error %i : %s ", + myProcess->error(), myProcess->errorString().toStdString().c_str()); + QMessageBox::warning( + w, + a.applicationName(), + rsyncErrorStrings[myProcess->error()], + //myProcess->errorString(), + QMessageBox::Ok, + QMessageBox::Ok); + return true; + } + w->stopDlAsked = false; + return false; } QString getFileType(QString filename) { - QMimeDatabase db; - QMimeType mime = db.mimeTypeForFile(filename); - QString returnValue = mime.name().section('/',0 ,0); - return returnValue; + QMimeDatabase db; + QMimeType mime = db.mimeTypeForFile(filename); + QString returnValue = mime.name().section('/',0 ,0); + 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; +} diff --git a/tools.h b/tools.h index 36f05d6..dc8e25d 100644 --- a/tools.h +++ b/tools.h @@ -19,5 +19,6 @@ int pclose2(FILE * fp, pid_t pid); bool testRsyncReturn(MainWindow *, QProcess *); QString getFileType(QString finename); +int whatIpVersion(QString); #endif // TOOLS_H diff --git a/version.h b/version.h index 0db8109..8a5a969 100644 --- a/version.h +++ b/version.h @@ -3,6 +3,6 @@ #include -QString version = "2.11.8"; +QString version = "2.12.1"; #endif // VERSION_H