Compare commits

...

5 Commits
1.0 ... 1.4

Author SHA1 Message Date
d1e45b8ba8 debug 2023-01-23 10:04:54 +01:00
7546aedec2 version Ok 2023-01-22 14:33:23 +01:00
a23ffb6bbe debugged\nadded return key action 2023-01-18 23:12:21 +01:00
13c5c3788f - now saving state of widgets 2023-01-15 15:25:22 +01:00
cb384e1c51 added: - history in combobox\n - settings in application 2023-01-15 13:26:14 +01:00
14 changed files with 1525 additions and 251 deletions

728
Makefile Normal file
View File

@ -0,0 +1,728 @@
#############################################################################
# Makefile for building: RsyncUI
# Generated by qmake (3.1) (Qt 5.15.2)
# Project: RsyncUI.pro
# Template: app
# Command: /usr/bin/qmake -o Makefile RsyncUI.pro
#############################################################################
MAKEFILE = Makefile
EQ = =
####### Compiler, tools and options
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
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
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
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
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
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
AR = ar cqs
RANLIB =
SED = sed
STRIP = strip
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = downloadfile.cpp \
main.cpp \
mainwindow.cpp \
tools.cpp moc_downloadfile.cpp \
moc_mainwindow.cpp
OBJECTS = downloadfile.o \
main.o \
mainwindow.o \
tools.o \
moc_downloadfile.o \
moc_mainwindow.o
DIST = /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 \
/usr/lib64/qt5/mkspecs/common/gcc-base.conf \
/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib64/qt5/mkspecs/common/g++-base.conf \
/usr/lib64/qt5/mkspecs/common/g++-unix.conf \
/usr/lib64/qt5/mkspecs/qconfig.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Attica.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KActivities.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KArchive.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KAuth.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KAuthCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KBookmarks.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCMUtils.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCompletion.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCrash.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KDBusAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KDeclarative.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KItemModels.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KItemViews.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KJobWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuff.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuffCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNotifications.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNotifyConfig.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNTLM.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KParts.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KRunner.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KTextEditor.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandClient.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandServer.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.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_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 \
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech.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_vulkan_support_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 \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_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_private.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_ThreadWeaver.pri \
/usr/lib64/qt5/mkspecs/features/qt_functions.prf \
/usr/lib64/qt5/mkspecs/features/qt_config.prf \
/usr/lib64/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib64/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib64/qt5/mkspecs/features/toolchain.prf \
/usr/lib64/qt5/mkspecs/features/default_pre.prf \
/usr/lib64/qt5/mkspecs/features/resolve_config.prf \
/usr/lib64/qt5/mkspecs/features/default_post.prf \
/usr/lib64/qt5/mkspecs/features/warn_on.prf \
/usr/lib64/qt5/mkspecs/features/qt.prf \
/usr/lib64/qt5/mkspecs/features/resources_functions.prf \
/usr/lib64/qt5/mkspecs/features/resources.prf \
/usr/lib64/qt5/mkspecs/features/moc.prf \
/usr/lib64/qt5/mkspecs/features/dbuscommon.pri \
/usr/lib64/qt5/mkspecs/features/dbusinterfaces.prf \
/usr/lib64/qt5/mkspecs/features/dbusadaptors.prf \
/usr/lib64/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib64/qt5/mkspecs/features/uic.prf \
/usr/lib64/qt5/mkspecs/features/unix/thread.prf \
/usr/lib64/qt5/mkspecs/features/qmake_use.prf \
/usr/lib64/qt5/mkspecs/features/file_copies.prf \
/usr/lib64/qt5/mkspecs/features/testcase_targets.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 \
mainwindow.h \
tools.h downloadfile.cpp \
main.cpp \
mainwindow.cpp \
tools.cpp
QMAKE_TARGET = RsyncUI
DESTDIR =
TARGET = RsyncUI
first: all
####### Build rules
RsyncUI: 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 \
/usr/lib64/qt5/mkspecs/common/unix.conf \
/usr/lib64/qt5/mkspecs/common/linux.conf \
/usr/lib64/qt5/mkspecs/common/sanitize.conf \
/usr/lib64/qt5/mkspecs/common/gcc-base.conf \
/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib64/qt5/mkspecs/common/g++-base.conf \
/usr/lib64/qt5/mkspecs/common/g++-unix.conf \
/usr/lib64/qt5/mkspecs/qconfig.pri \
/usr/lib64/qt5/mkspecs/modules/qt_Attica.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KActivities.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KArchive.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KAuth.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KAuthCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KBookmarks.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCMUtils.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCompletion.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KCrash.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KDBusAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KDeclarative.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KIOWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KItemModels.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KItemViews.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KJobWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuff.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuffCore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNotifications.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNotifyConfig.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KNTLM.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KParts.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KRunner.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KTextEditor.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandClient.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandServer.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib64/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.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_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 \
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech.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_vulkan_support_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 \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \
/usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_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_private.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_ThreadWeaver.pri \
/usr/lib64/qt5/mkspecs/features/qt_functions.prf \
/usr/lib64/qt5/mkspecs/features/qt_config.prf \
/usr/lib64/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib64/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib64/qt5/mkspecs/features/toolchain.prf \
/usr/lib64/qt5/mkspecs/features/default_pre.prf \
/usr/lib64/qt5/mkspecs/features/resolve_config.prf \
/usr/lib64/qt5/mkspecs/features/default_post.prf \
/usr/lib64/qt5/mkspecs/features/warn_on.prf \
/usr/lib64/qt5/mkspecs/features/qt.prf \
/usr/lib64/qt5/mkspecs/features/resources_functions.prf \
/usr/lib64/qt5/mkspecs/features/resources.prf \
/usr/lib64/qt5/mkspecs/features/moc.prf \
/usr/lib64/qt5/mkspecs/features/dbuscommon.pri \
/usr/lib64/qt5/mkspecs/features/dbusinterfaces.prf \
/usr/lib64/qt5/mkspecs/features/dbusadaptors.prf \
/usr/lib64/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib64/qt5/mkspecs/features/uic.prf \
/usr/lib64/qt5/mkspecs/features/unix/thread.prf \
/usr/lib64/qt5/mkspecs/features/qmake_use.prf \
/usr/lib64/qt5/mkspecs/features/file_copies.prf \
/usr/lib64/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib64/qt5/mkspecs/features/exceptions.prf \
/usr/lib64/qt5/mkspecs/features/yacc.prf \
/usr/lib64/qt5/mkspecs/features/lex.prf \
RsyncUI.pro
$(QMAKE) -o Makefile RsyncUI.pro
/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:
/usr/lib64/qt5/mkspecs/common/gcc-base.conf:
/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib64/qt5/mkspecs/common/g++-base.conf:
/usr/lib64/qt5/mkspecs/common/g++-unix.conf:
/usr/lib64/qt5/mkspecs/qconfig.pri:
/usr/lib64/qt5/mkspecs/modules/qt_Attica.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KActivities.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KArchive.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KAuth.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KAuthCore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KBookmarks.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KCMUtils.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KCodecs.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KCompletion.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KConfigCore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KConfigGui.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KConfigWidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KCoreAddons.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KCrash.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KDBusAddons.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KDeclarative.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KGlobalAccel.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KGuiAddons.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KI18n.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KIconThemes.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KIOCore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KIOFileWidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KIOGui.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KIOWidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KItemModels.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KItemViews.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KJobWidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuff.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KNewStuffCore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KNotifications.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KNotifyConfig.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KNTLM.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KParts.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KRunner.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KService.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KTextEditor.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KTextWidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandClient.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KWaylandServer.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KWidgetsAddons.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KWindowSystem.pri:
/usr/lib64/qt5/mkspecs/modules/qt_KXmlGui.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdf_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_pdfwidgets_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioning_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_positioningquick_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.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_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:
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_texttospeech.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_vulkan_support_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:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webengine_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecore_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_webenginewidgets_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri:
/usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_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_private.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_ThreadWeaver.pri:
/usr/lib64/qt5/mkspecs/features/qt_functions.prf:
/usr/lib64/qt5/mkspecs/features/qt_config.prf:
/usr/lib64/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib64/qt5/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib64/qt5/mkspecs/features/toolchain.prf:
/usr/lib64/qt5/mkspecs/features/default_pre.prf:
/usr/lib64/qt5/mkspecs/features/resolve_config.prf:
/usr/lib64/qt5/mkspecs/features/default_post.prf:
/usr/lib64/qt5/mkspecs/features/warn_on.prf:
/usr/lib64/qt5/mkspecs/features/qt.prf:
/usr/lib64/qt5/mkspecs/features/resources_functions.prf:
/usr/lib64/qt5/mkspecs/features/resources.prf:
/usr/lib64/qt5/mkspecs/features/moc.prf:
/usr/lib64/qt5/mkspecs/features/dbuscommon.pri:
/usr/lib64/qt5/mkspecs/features/dbusinterfaces.prf:
/usr/lib64/qt5/mkspecs/features/dbusadaptors.prf:
/usr/lib64/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib64/qt5/mkspecs/features/uic.prf:
/usr/lib64/qt5/mkspecs/features/unix/thread.prf:
/usr/lib64/qt5/mkspecs/features/qmake_use.prf:
/usr/lib64/qt5/mkspecs/features/file_copies.prf:
/usr/lib64/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib64/qt5/mkspecs/features/exceptions.prf:
/usr/lib64/qt5/mkspecs/features/yacc.prf:
/usr/lib64/qt5/mkspecs/features/lex.prf:
RsyncUI.pro:
qmake: FORCE
@$(QMAKE) -o Makefile RsyncUI.pro
qmake_all: FORCE
all: Makefile RsyncUI
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
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)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all:
compiler_rcc_clean:
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
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
moc_mainwindow.cpp: mainwindow.h \
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 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_clean:
-$(DEL_FILE) ui_mainwindow.h
ui_mainwindow.h: mainwindow.ui \
/usr/lib64/qt5/bin/uic \
/usr/include/KF5/KCompletion/kcombobox.h \
/usr/include/KF5/KCompletion/khistorycombobox.h \
/usr/include/KF5/KCompletion/klineedit.h \
/usr/include/KF5/KItemViews/ktreewidgetsearchline.h
/usr/lib64/qt5/bin/uic mainwindow.ui -o ui_mainwindow.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean
####### Compile
downloadfile.o: downloadfile.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h \
tools.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o downloadfile.o downloadfile.cpp
main.o: main.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h \
tools.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
tools.o: tools.cpp mainwindow.h \
downloadfile.h \
ui_mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tools.o tools.cpp
moc_downloadfile.o: moc_downloadfile.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_downloadfile.o moc_downloadfile.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/usr/bin/ || mkdir -p $(INSTALL_ROOT)/usr/bin/
$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/usr/bin/
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
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/
install: install_target install_lang FORCE
uninstall: uninstall_target uninstall_lang FORCE
FORCE:

View File

@ -2,6 +2,9 @@ QT += core gui concurrent
QT += KItemViews QT += KItemViews
QT += KCompletion QT += KCompletion
QT += widgets QT += widgets
QT += KConfigCore KConfigGui
QT += KCoreAddons
QT += KDBusAddons
#LIBS += -lKF5WindowSystem #LIBS += -lKF5WindowSystem
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@ -24,15 +27,20 @@ HEADERS += \
tools.h tools.h
FORMS += \ FORMS += \
configuration.ui \
mainwindow.ui mainwindow.ui
TRANSLATIONS += \ TRANSLATIONS += \
RsyncUI_fr_FR.ts languages/fr_FR/RsyncUI_fr_FR.ts
INCLUDEPATH += \ INCLUDEPATH += \
/usr/include/KF5 /usr/include/KF5
# Default rules for deployment. # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin else: unix:!android: target.path = /usr/bin/
!isEmpty(target.path): INSTALLS += target !isEmpty(target.path): INSTALLS += target
lang.path = /languages/fr_FR/
lang.files = languages/fr_FR/*
INSTALLS += lang

View File

@ -1,67 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>Dialog</name>
<message>
<location filename="downloadProgress.ui" line="20"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="downloadProgress.ui" line="32"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="21"/>
<source>MainWindow</source>
<translation>Fenêtre principale</translation>
</message>
<message>
<location filename="mainwindow.ui" line="80"/>
<source>Server</source>
<oldsource>Serveur</oldsource>
<translation>Serveur</translation>
</message>
<message>
<location filename="mainwindow.ui" line="112"/>
<source>Port</source>
<translation>Port</translation>
</message>
<message>
<location filename="mainwindow.ui" line="278"/>
<source>%p%</source>
<extracomment>Downloading</extracomment>
<translation>Téléchargement</translation>
</message>
<message>
<location filename="mainwindow.ui" line="295"/>
<source>debug</source>
<translation>debug</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="34"/>
<source>Path</source>
<translation>Chemin</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="34"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="233"/>
<source>server does not exists</source>
<translation>Le serveur n&apos;existe pas</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="326"/>
<source>Choose directory to save file</source>
<translation>Choisissez le dossier enregistrer</translation>
</message>
</context>
</TS>

131
configuration.ui Normal file
View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Configuration</class>
<widget class="QDialog" name="Configuration">
<property name="windowModality">
<enum>Qt::WindowModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>127</height>
</rect>
</property>
<property name="windowTitle">
<string>Configuration</string>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>9</x>
<y>9</y>
<width>381</width>
<height>61</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QSpinBox" name="spinBox">
<property name="toolTip">
<string>Enter the bandwidth limit</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="maximum">
<number>1024</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label1">
<property name="text">
<string extracomment="Bandwidth limit">Bandwidth limit</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="UnitCombobox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string extracomment="Unit of bandwidth">Select th unit of bandwidth limit in Bytes, KiloBytes, MegaBytes, GigaBytes or PetaBytes</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
<property name="maxVisibleItems">
<number>5</number>
</property>
<property name="maxCount">
<number>1024</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>70</x>
<y>80</y>
<width>321</width>
<height>34</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Configuration</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Configuration</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,6 +1,6 @@
#include "downloadfile.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include "downloadfile.h"
#include "tools.h" #include "tools.h"
#include <pstreams/pstream.h> #include <pstreams/pstream.h>
#include <sstream> #include <sstream>
@ -41,16 +41,24 @@ void downloadFile::download(MainWindow *mw)
vector<string> v; vector<string> v;
int value; int value;
char buffer[4096]; char buffer[4096];
argv[0] = "/usr/bin/rsync"; argv[0] = "/usr/bin/rsync";
argv[1] = "--bwlimit=" + mw->connexion.bandwidthLimit; if (mw->connexion.bandwidthLimit == 0)
{
argv[1] = "--bwlimit=1000P";
}else
{
output << mw->connexion.bandwidthLimit;
argv[1] = "--bwlimit=" + output.str() + mw->connexion.bandwidthLimitUnit;
}
argv[2] = "--port=" + to_string(mw->connexion.port); argv[2] = "--port=" + to_string(mw->connexion.port);
argv[3] = "-P"; argv[3] = "-P";
argv[4] = mw->connexion.server + "::" + mw->downloading.service + "/" + mw->downloading.path; argv[4] = mw->connexion.server + "::" + mw->downloading.service + "/" + mw->downloading.path;
argv[5] = mw->downloading.savePath + "/"; argv[5] = mw->downloading.savePath + "/";
argv[6] = "";
//unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd "r"), pclose); //launching downloading thread
FILE * fp = popen2(argv, "r", mw->downloading.pid); FILE * fp = popen2(argv, "r", mw->downloading.pid);
if (!fp) if (!fp)
{ {
throw runtime_error("popen2() failed!"); throw runtime_error("popen2() failed!");
@ -64,7 +72,6 @@ void downloadFile::download(MainWindow *mw)
return; return;
} }
line = buffer; line = buffer;
//cout << line << endl;
pos = line.find('%'); pos = line.find('%');
if (pos != -1) if (pos != -1)
{ {
@ -74,14 +81,14 @@ void downloadFile::download(MainWindow *mw)
{ {
line.erase(0, pos); line.erase(0, pos);
value = stoi(line); value = stoi(line);
cout << value << endl;
emit progressSignal(value); emit progressSignal(value);
} }
} }
} }
pclose2(fp, mw->downloading.pid); pclose2(fp, mw->downloading.pid);
// ProgressBar to 100% and emit signal finished to main application
emit progressSignal(100); emit progressSignal(100);
emit finishedSignal(true); emit finishedSignal(true);
//cout << path << endl;
} }

View File

@ -2,7 +2,9 @@
#define DOWNLOADFILE_H #define DOWNLOADFILE_H
#include <QObject> #include <QObject>
#include "ui_mainwindow.h" #include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
class MainWindow; class MainWindow;

Binary file not shown.

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>Configuration</name>
<message>
<location filename="../../configuration.ui" line="17"/>
<source>Configuration</source>
<translation>Configuration</translation>
</message>
<message>
<location filename="../../configuration.ui" line="32"/>
<source>Enter the bandwidth limit</source>
<translation>Entrez la limite de bande passante
</translation>
</message>
<message>
<location filename="../../configuration.ui" line="48"/>
<source>Bandwidth limit</source>
<extracomment>Bandwidth limit</extracomment>
<translation>Limite de bande passante</translation>
</message>
<message>
<location filename="../../configuration.ui" line="61"/>
<source>Select th unit of bandwidth limit in Bytes, KiloBytes, MegaBytes, GigaBytes or PetaBytes</source>
<extracomment>Unit of bandwidth</extracomment>
<translation>Sélectionnez l&apos;unité de limite de bande passante en otctets, Ko, Mo, Go, Po</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../mainwindow.ui" line="21"/>
<source>MainWindow</source>
<translation>Fenêtre principale</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="80"/>
<source>Server</source>
<oldsource>Serveur</oldsource>
<translation>Serveur</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="102"/>
<source>Enter server&apos;s URL</source>
<translation>Entrez l&apos;adresse du serveur</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="118"/>
<source>Port</source>
<translation>Port</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="143"/>
<source>Enter rsync port on server</source>
<translation>Entrez le port du servuer rsync</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="177"/>
<source>Press button to connect to rsync server</source>
<extracomment>Connect to server</extracomment>
<translation>Cliquez pour se connecter au serveur rsync</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="183"/>
<source>Connection</source>
<translation>Connexion</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="186"/>
<source>Return</source>
<translation>Retour</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="209"/>
<source>Click to view the list of files of this folder</source>
<translation>Cliquez pour afficher la liste des documents</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="238"/>
<source>Click to add to download queue</source>
<translation>Cliquez pour ajouter à la file de téléchargement</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="307"/>
<source>Click on file to stop downloading</source>
<translation>Cliquez sur le document pour arrêter le téléchargement et l&apos;enleveer de la file</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="327"/>
<source>%p%</source>
<extracomment>Downloading</extracomment>
<translation>Téléchargement</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="344"/>
<location filename="../../mainwindow.ui" line="362"/>
<source>Menu</source>
<translation>Menu</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="351"/>
<source>help</source>
<translation>Aide</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="367"/>
<location filename="../../mainwindow.ui" line="370"/>
<source>Change save folder</source>
<translation>Changer le dossier de destination</translation>
</message>
<message>
<source>Default save folder</source>
<translation type="vanished">Dossier d&apos;enregistrement</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="375"/>
<source>Bandwidth limit</source>
<translation>Limite de bande passante</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="380"/>
<source>About</source>
<translation>À propos</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="385"/>
<source>About Qt</source>
<translation>À propos de Qt</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="390"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<source>debug</source>
<translation type="vanished">debug</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<source>Byte</source>
<translation>Octet</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<source>KB</source>
<translation>Ko</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<source>MB</source>
<translation>Mo</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<source>GB</source>
<translation>Go</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<source>TB</source>
<translation>To</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="21"/>
<location filename="../../mainwindow.cpp" line="517"/>
<source>PB</source>
<translation>Po</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="35"/>
<source>Path</source>
<translation>Chemin</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="35"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="68"/>
<source>Exiting will stop downloading, and will clear the download queue.
Do you want to exit ?</source>
<translation>Soritr stoppera le téléchargement et effacera la file des téléchargements.
Voulez-vous vraiment sortir du programme ?</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="297"/>
<source>server does not exists</source>
<translation>Le serveur n&apos;existe pas</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="479"/>
<source>Licence</source>
<translation>License</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="480"/>
<source>Author</source>
<translation>Auteur</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="481"/>
<source>EMail</source>
<translation>Courriel</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="482"/>
<source>Source code</source>
<translation>Code source</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="495"/>
<source>Choose directory to save file</source>
<translation>Choisissez le dossier enregistrer</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="413"/>
<source>Do you want to stop downloading and delete this file from download queue ?</source>
<translation>Vouslez-vous arrêter le téléchargement et enlever ce fichier de la file de téléchargement ?</translation>
</message>
<message>
<source>Client for rsync server</source>
<translation type="vanished">Client pour serveur rsync</translation>
</message>
<message>
<location filename="../../mainwindow.cpp" line="425"/>
<source>Do you want to delete this file from download queue ?</source>
<translation>Voulez-vous enlever ce fichier de la file de téléchargement ?</translation>
</message>
</context>
</TS>

View File

@ -1,10 +1,20 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QApplication>
#include <QSettings> #include <QTranslator>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
QTranslator myappTranslator;
QLocale localeName = QLocale::system();
QString localeFile = "/usr/share/locale/" + localeName.name() + "/LC_MESSAGES/RsyncUI_" + localeName.name() + ".qm";
if (myappTranslator.load(localeFile))
{
a.installTranslator(&myappTranslator);
}
MainWindow w; MainWindow w;
w.show(); w.show();
return a.exec(); return a.exec();

View File

@ -1,56 +1,64 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h"
#include "downloadfile.h"
#include "tools.h"
#include <iostream>
#include <KTreeWidgetSearchLineWidget>
#include <pstreams/pstream.h>
#include <sstream>
#include <string>
#include <cstring>
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <QMessageBox>
#include <vector>
#include <boost/algorithm/string/replace.hpp>
#include <QFuture>
#include <QtConcurrent>
#include <qtconcurrentrun.h>
#include <QFileDialog>
#include <QThread>
#include <QProgressDialog>
#include <QCheckBox>
#include <sys/wait.h>
#include <QGuiApplication>
using namespace std; using namespace std;
bool display = false; bool display = false;
extern QDialog Configuration;
extern Ui::Configuration config;
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::MainWindow) , ui(new Ui::MainWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
QCoreApplication::setOrganizationName("RsyncUI");
QCoreApplication::setApplicationName("RsyncUI");
// init shortcut
loadSettings();
config.setupUi(&Configuration);
config.UnitCombobox->addItems({tr("Byte"), tr("KB"), tr("MB"), tr("GB"), tr("TB"), tr("PB")});
// init of About
this->about.description = tr(this->about.description.toStdString().c_str());
// connectors
connect(&downloadO, &downloadFile::progressSignal, ui->progressBar, &QProgressBar::setValue); connect(&downloadO, &downloadFile::progressSignal, ui->progressBar, &QProgressBar::setValue);
connect(&downloadO, &downloadFile::finishedSignal, this, &MainWindow::downloadFinished); connect(&downloadO, &downloadFile::finishedSignal, this, &MainWindow::downloadFinished);
connect(this, &MainWindow::stopDownloading, &downloadO, &downloadFile::cancelled); connect(this, &MainWindow::stopDownloading, &downloadO, &downloadFile::cancelled);
connect(config.buttonBox, SIGNAL(accepted()), this, SLOT(on_buttonBox_accepted()));
// init of widgets
ui->ktreewidgetsearchline->setTreeWidget(ui->treeWidget); ui->ktreewidgetsearchline->setTreeWidget(ui->treeWidget);
ui->ktreewidgetsearchline->setCaseSensitivity(Qt::CaseInsensitive); ui->ktreewidgetsearchline->setCaseSensitivity(Qt::CaseInsensitive);
ui->treeWidget->setHeaderLabels({tr("Path"), tr("Size")} ); ui->treeWidget->setHeaderLabels({tr("Path"), tr("Size")} );
if (this->settings.contains("connexion/lastServer"))
{
ui->portEdit->setText(this->settings.value("connexion/port").toString());
ui->khistorycombobox->setCurrentText(this->settings.value("connexion/lastServer").toString());
}else
{
ui->portEdit->text() = QString::number(this->connexion.port);
ui->khistorycombobox->clear();
}
ui->progressBar->hide(); ui->progressBar->hide();
loadSettings();
populateList(); populateList();
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::closeEvent (QCloseEvent *event)
{ {
QMessageBox::StandardButton reply; QMessageBox::StandardButton reply;
saveSettings();
if (ui->listDownload->count() != 0) if (ui->listDownload->count() != 0)
{ {
@ -60,16 +68,17 @@ MainWindow::~MainWindow()
tr("Exiting will stop downloading, and will clear the download queue.\n Do you want to exit ?"), tr("Exiting will stop downloading, and will clear the download queue.\n Do you want to exit ?"),
QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes|QMessageBox::No,
QMessageBox::No); QMessageBox::No);
if (reply == QMessageBox::Yes) if (reply == QMessageBox::No)
{
event->ignore();
return;
}else
{ {
emit (stopDownloading(this->downloading.pid)); emit (stopDownloading(this->downloading.pid));
}
}
if (this->downloading.pid != 0)
{
waitpid(this->downloading.pid, NULL, WUNTRACED); waitpid(this->downloading.pid, NULL, WUNTRACED);
} }
delete ui; }
event->accept();
} }
void MainWindow::populateTree() void MainWindow::populateTree()
@ -77,37 +86,66 @@ void MainWindow::populateTree()
stringstream ss; stringstream ss;
vector<string> path; vector<string> path;
ui->treeWidget->clear();
if (!this->connexion.server.empty() and this->connexion.port > 0 and this->connexion.port < 65536) if (!this->connexion.server.empty() and this->connexion.port > 0 and this->connexion.port < 65536)
{ {
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
if (validateServer(this->connexion.server)) if (validateServer(this->connexion.server))
{ {
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
path = explode(ui->listWidget->currentItem()->text().toStdString(), '\n', 2); path = explode(ui->listWidget->currentItem()->text().toStdString(), '\n', 2);
scanDir(this->connexion.server, this->connexion.port, NULL, path[0].append("/") ); scanDir(this->connexion.server, this->connexion.port, NULL, path[0].append("/") );
this->unsetCursor();
QGuiApplication::setOverrideCursor(Qt::ArrowCursor);
} }
QGuiApplication::restoreOverrideCursor(); //setOverrideCursor(Qt::ArrowCursor);
} }
} }
void MainWindow::populateList() void MainWindow::populateList()
{ {
stringstream ss; stringstream ss;
QString str;
QString server;
int port;
this->connexion.server.assign(ui->khistorycombobox->currentText().toStdString()); server = ui->khistorycombobox->currentText();
ss << ui->portEdit->text().toStdString(); port = ui->portEdit->text().toUInt();
ss >> this->connexion.port; if ((server.toStdString() != this->connexion.server) or (port != this->connexion.port))
if (!this->connexion.server.empty() and this->connexion.port > 0 and this->connexion.port < 65536)
{ {
if (validateServer(this->connexion.server)) ui->listWidget->clear();
this->connexion.server.assign(server.toStdString());
this->connexion.port = port;
this->settings.beginGroup("connexion/server");
if (this->settings.contains(server))
{ {
ui->khistorycombobox->addItem(this->connexion.server.c_str()); port = this->settings.value(server).toUInt();
ui->centralwidget->cursor().setShape(Qt::WaitCursor); ui->portEdit->setText(QString::number(port));
listServices(); this->connexion.port = port;
ui->centralwidget->cursor().setShape(Qt::ArrowCursor);
QStringList test = ui->khistorycombobox->historyItems();
sleep(1);
} }
if (!server.isEmpty() and (port > 0 and port < 65536))
{
if (validateServer(server.toStdString()))
{
//this->settings.beginGroup("connexion/server");
if (!this->settings.contains(server))
{
cout << server.toStdString() << endl;
// storing serverURL and port in settings
this->settings.setValue(server, port);
this->settings.sync();
// storing in history of combobox
ui->khistorycombobox->addToHistory(server);
}
// "waiting" cursor
// load and display rsync services of the rsync server
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
listServices();
QGuiApplication::restoreOverrideCursor(); //setOverrideCursor(Qt::ArrowCursor);
}
}
this->settings.endGroup();
QGuiApplication::restoreOverrideCursor(); //setOverrideCursor(Qt::ArrowCursor);
} }
} }
@ -123,7 +161,6 @@ void MainWindow::listServices()
redi::ipstream in(cmd, redi::pstreams::pstdout | redi::pstreams::pstderr); redi::ipstream in(cmd, redi::pstreams::pstdout | redi::pstreams::pstderr);
while (getline(in.out(), line)) while (getline(in.out(), line))
{ {
cout << "stdout: " << line << endl;
boost::replace_all(line," ",""); boost::replace_all(line," ","");
boost::replace_all(line, "\t", " - "); boost::replace_all(line, "\t", " - ");
v = explode(line, ' ', 3 ); v = explode(line, ' ', 3 );
@ -205,8 +242,11 @@ bool MainWindow::isIpAddress(string server)
return false; return false;
} }
} }
}
return true; return true;
}else
{
return false;
}
} }
bool MainWindow::validateServer(string server) bool MainWindow::validateServer(string server)
@ -221,7 +261,7 @@ bool MainWindow::validateServer(string server)
while (getline(in.out(), line)) while (getline(in.out(), line))
{ {
cout << "stdout: " << line << '\n'; //cout << "stdout: " << line << '\n';
if (line.find(";; ANSWER SECTION:") != string::npos) if (line.find(";; ANSWER SECTION:") != string::npos)
{ {
flag = true; flag = true;
@ -266,31 +306,16 @@ void MainWindow::displayTree()
} }
void MainWindow::on_khistorycombobox_returnPressed() void MainWindow::on_khistorycombobox_currentIndexChanged(int i)
{
on_connectButton_clicked();
}
void MainWindow::on_connectButton_clicked()
{ {
populateList(); populateList();
} }
void MainWindow::on_portEdit_returnPressed()
{
populateList();
}
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
}
void MainWindow::on_treeWidget_customContextMenuRequested()
{
}
void MainWindow::on_actionDownload_triggered()
{
}
QTreeWidgetItem * MainWindow::addTreeRoot(QString name, QString fileSize) QTreeWidgetItem * MainWindow::addTreeRoot(QString name, QString fileSize)
{ {
// QTreeWidgetItem(QTreeWidget * parent, int type = Type) // QTreeWidgetItem(QTreeWidget * parent, int type = Type)
@ -316,7 +341,7 @@ QTreeWidgetItem * MainWindow::addTreeChild(QTreeWidgetItem *parent, QString name
return treeItem; return treeItem;
} }
void MainWindow::on_listWidget_clicked(const QModelIndex &index) void MainWindow::on_listWidget_clicked()
{ {
vector<string> v; vector<string> v;
v = explode(ui->listWidget->currentItem()->text().toStdString(), '\n', 2); v = explode(ui->listWidget->currentItem()->text().toStdString(), '\n', 2);
@ -324,11 +349,10 @@ void MainWindow::on_listWidget_clicked(const QModelIndex &index)
populateTree(); populateTree();
} }
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column) void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item)
{ {
QFuture<void> future; QFuture<void> future;
QFileDialog dialog; QFileDialog dialog;
QCheckBox *cb = new QCheckBox("Okay I understand");
item = ui->treeWidget->currentItem(); item = ui->treeWidget->currentItem();
this->downloading.path = item->text(0).toStdString(); this->downloading.path = item->text(0).toStdString();
@ -336,23 +360,16 @@ void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int colu
{ {
item = item->parent(); item = item->parent();
this->downloading.path = item->text(0).toStdString() + "/" + this->downloading.path; this->downloading.path = item->text(0).toStdString() + "/" + this->downloading.path;
}; };
//dirPath.append("/Vidéos/");
if (this->downloading.savePath.empty()) if (this->downloading.savePath.empty())
{ {
if (this->downloading.dirPath.toStdString().empty()) on_DefaultSaveFolder_triggered();
{
this->downloading.dirPath = getenv("HOME");
} }
this->downloading.savePath = dialog.getExistingDirectory(this, tr("Choose directory to save file"), this->downloading.dirPath, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
if (!this->downloading.savePath.empty() && this->downloading.pid == 0) if (!this->downloading.savePath.empty() && this->downloading.pid == 0)
{ {
startDownloading(); startDownloading();
} }
}
ui->listDownload->addItem(QString::fromStdString(this->downloading.path)); ui->listDownload->addItem(QString::fromStdString(this->downloading.path));
} }
@ -387,7 +404,7 @@ void MainWindow::on_listDownload_itemClicked(QListWidgetItem *item)
QFileDialog dialog; QFileDialog dialog;
QMessageBox::StandardButton reply; QMessageBox::StandardButton reply;
cout << item->text().toStdString() << endl; //cout << item->text().toStdString() << endl;
if (item->listWidget()->row(item) == 0) if (item->listWidget()->row(item) == 0)
{ {
reply = QMessageBox::question( reply = QMessageBox::question(
@ -418,10 +435,92 @@ void MainWindow::on_listDownload_itemClicked(QListWidgetItem *item)
void MainWindow::loadSettings() void MainWindow::loadSettings()
{ {
this->settings.value("serverlist"); // restoring geometry and state of wondow and widgets
this->restoreGeometry(settings.value("window/geometry").toByteArray());
this->restoreState(settings.value("window/state").toByteArray());
ui->treeWidget->header()->restoreState(settings.value("treeView/state").toByteArray());
ui->splitter->restoreState(settings.value("splitter/state").toByteArray());
ui->splitter_2->restoreState(settings.value("splitter2/state").toByteArray());
// loading connexion settings
// loading servers history
this->settings.beginGroup("connexion/server");
QStringList servers = this->settings.allKeys();
this->settings.endGroup();
for( const QString &server : servers )
{
ui->khistorycombobox->addToHistory(server);
}
// loading save path
this->downloading.savePath = this->settings.value("Folder").toString().toStdString();
// loading bandwidth limit
this->connexion.bandwidthLimit = this->settings.value("bandwidthlimit").toUInt();
this->connexion.bandwidthLimitUnit = this->settings.value("bandwidthlimitunit").toString().toStdString();
} }
void MainWindow::saveSettings() void MainWindow::saveSettings()
{ {
//ui->khistorycombobox-> this->settings.setValue("window/geometry", saveGeometry());
this->settings.setValue("window/state", saveState());
this->settings.setValue("treeView/state", ui->treeWidget->header()->saveState());
this->settings.setValue("splitter/state", ui->splitter->saveState());
this->settings.setValue("splitter2/state", ui->splitter_2->saveState());
this->settings.setValue("connexion/lastServer", QString::fromStdString(this->connexion.server));
this->settings.setValue("connexion/lastPort", QString::number(this->connexion.port));
this->settings.sync();
}
void MainWindow::on_actionAbout_triggered()
{
QString text = this->about.description + "\n\n" +
tr("Licence" ) + ": " + this->about.licence + "\n" +
tr("Author") + ": " + this->about.author + "\n" +
tr("EMail") + ": " + this->about.email + "\n" +
tr("Source code") + ": " + this->about.git;
QMessageBox::about(this, this->about.title, text);
}
void MainWindow::on_actionAbout_Qt_triggered()
{
QMessageBox::aboutQt(this);
}
void MainWindow::on_DefaultSaveFolder_triggered()
{
QFileDialog dialog;
this->downloading.savePath = dialog.getExistingDirectory(this, tr("Choose directory to save file"), this->downloading.dirPath, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
// this->downloading.dirPath = this->downloading.savePath.c_str();
this->settings.setValue("Folder/", this->downloading.savePath.c_str());
this->settings.sync();
}
void MainWindow::on_action_Settings_triggered()
{
config.UnitCombobox->setCurrentText(QString::fromStdString(this->connexion.bandwidthLimitUnit));
config.spinBox->setValue(this->connexion.bandwidthLimit);
Configuration.show();
}
void MainWindow::on_buttonBox_accepted()
{
QString unit;
QString bw;
bw = config.spinBox->text();
if (bw.toInt() == 0)
{
this->connexion.bandwidthLimit = 1000;
this->connexion.bandwidthLimitUnit = tr("PB").toStdString();
}else
{
this->connexion.bandwidthLimit = config.spinBox->value();
this->connexion.bandwidthLimitUnit = config.UnitCombobox->currentText().toStdString();
}
this->settings.setValue("bandwidthlimit", this->connexion.bandwidthLimit);
this->settings.setValue("bandwidthlimitunit", this->connexion.bandwidthLimitUnit.c_str());
this->settings.sync();
} }

View File

@ -1,13 +1,36 @@
#ifndef MAINWINDOW_H #ifndef MAINWINDOW_H
#define MAINWINDOW_H #define MAINWINDOW_H
#include "ui_mainwindow.h"
#include "ui_configuration.h"
#include "downloadfile.h"
#include "tools.h"
#include <QMainWindow> #include <QMainWindow>
#include <string> #include <string>
#include <QTreeWidgetItem> #include <QTreeWidgetItem>
#include <QListWidgetItem> #include <QListWidgetItem>
#include "downloadfile.h"
#include <QProgressDialog> #include <QProgressDialog>
#include <QSettings> #include <QSettings>
#include <vector>
#include <iostream>
#include <KTreeWidgetSearchLineWidget>
#include <pstreams/pstream.h>
#include <sstream>
#include <cstring>
#include <stdio.h>
#include <cstdio>
#include <QMessageBox>
#include <boost/algorithm/string/replace.hpp>
#include <QFuture>
#include <qtconcurrentrun.h>
#include <QFileDialog>
#include <QThread>
#include <QProgressDialog>
#include <sys/wait.h>
#include <QGuiApplication>
#include <QShortcut>
#include <QCloseEvent>
#include <unistd.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; } namespace Ui { class MainWindow; }
@ -16,7 +39,8 @@ QT_END_NAMESPACE
class Connexion class Connexion
{ {
public: public:
std::string bandwidthLimit = "1M"; int bandwidthLimit = 0;
std::string bandwidthLimitUnit = "";
std::string server; std::string server;
int port = 873; int port = 873;
}; };
@ -32,6 +56,17 @@ class Downloading
int pid = 0; int pid = 0;
}; };
class About
{
public:
QString title = "RsyncUI";
QString author = "Daniel TARTAVEL-JEANNOT";
QString licence = "GPL_V3";
QString description = "Client for rsync server\n\nYou click on file to enqueue it, and RyncUI Download one file a time";
QString email = "dtux@free.fr";
QString git = "https://git.labolyon.fr/dtux/RsyncUI/issues";
};
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
@ -53,28 +88,22 @@ class MainWindow : public QMainWindow
void startDownloading(); void startDownloading();
void loadSettings(); void loadSettings();
void saveSettings(); void saveSettings();
void closeEvent (QCloseEvent *event);
Connexion connexion; Connexion connexion;
Downloading downloading; Downloading downloading;
downloadFile downloadO; downloadFile downloadO;
QSettings settings; QSettings settings;
About about;
QDialog Configuration;
Ui::Configuration config;
std::vector <QString> serversList;
private slots: private slots:
void on_khistorycombobox_returnPressed();
//void on_portEdit_userTextChanged(); void on_listWidget_clicked();
void on_portEdit_returnPressed(); void on_treeWidget_itemClicked(QTreeWidgetItem *item);
void on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);
void on_treeWidget_customContextMenuRequested();
void on_actionDownload_triggered();
void on_listWidget_clicked(const QModelIndex &index);
void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
void downloadFinished(); void downloadFinished();
@ -82,11 +111,25 @@ class MainWindow : public QMainWindow
void on_listDownload_itemClicked(QListWidgetItem *item); void on_listDownload_itemClicked(QListWidgetItem *item);
signals: void on_actionAbout_triggered();
void stopDownloading(int);
void on_actionAbout_Qt_triggered();
void on_khistorycombobox_currentIndexChanged(int);
void on_DefaultSaveFolder_triggered();
void on_connectButton_clicked();
void on_action_Settings_triggered();
public slots:
void on_buttonBox_accepted();
signals:
void stopDownloading(int);
// void accepted();
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -98,6 +98,12 @@
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>Enter server's URL</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -133,9 +139,18 @@
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>Enter rsync port on server</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="inputMethodHints"> <property name="inputMethodHints">
<set>Qt::ImhPreferNumbers</set> <set>Qt::ImhPreferNumbers</set>
</property> </property>
<property name="inputMask">
<string/>
</property>
<property name="text"> <property name="text">
<string comment="numéro"/> <string comment="numéro"/>
</property> </property>
@ -156,6 +171,22 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="connectButton">
<property name="toolTip">
<string extracomment="Connect to server">Press button to connect to rsync server</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="text">
<string>Connection</string>
</property>
<property name="shortcut">
<string>Return</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>
@ -174,6 +205,12 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="toolTip">
<string>Click to view the list of files of this folder</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::SelectedClicked</set> <set>QAbstractItemView::SelectedClicked</set>
</property> </property>
@ -186,19 +223,6 @@
</widget> </widget>
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="KTreeWidgetSearchLine" name="ktreewidgetsearchline">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNoAutoUppercase</set>
</property>
</widget>
</item>
<item> <item>
<widget class="QTreeWidget" name="treeWidget"> <widget class="QTreeWidget" name="treeWidget">
<property name="sizePolicy"> <property name="sizePolicy">
@ -208,7 +232,16 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum> <enum>Qt::NoContextMenu</enum>
</property>
<property name="toolTip">
<string>Click to add to download queue</string>
</property>
<property name="toolTipDuration">
<number>5000</number>
</property>
<property name="whatsThis">
<string extracomment="Click to add to download queue"/>
</property> </property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
@ -253,10 +286,26 @@
</column> </column>
</widget> </widget>
</item> </item>
<item>
<widget class="KTreeWidgetSearchLine" name="ktreewidgetsearchline">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNoAutoUppercase</set>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>
<widget class="QListWidget" name="listDownload"> <widget class="QListWidget" name="listDownload">
<property name="toolTip">
<string>Click on file to stop downloading</string>
</property>
<property name="dragEnabled"> <property name="dragEnabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -295,8 +344,17 @@
<string>Menu</string> <string>Menu</string>
</property> </property>
<addaction name="DefaultSaveFolder"/> <addaction name="DefaultSaveFolder"/>
<addaction name="action_Settings"/>
</widget>
<widget class="QMenu" name="menuhelp">
<property name="title">
<string>help</string>
</property>
<addaction name="actionAbout"/>
<addaction name="actionAbout_Qt"/>
</widget> </widget>
<addaction name="menu"/> <addaction name="menu"/>
<addaction name="menuhelp"/>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>
<action name="actionMenu"> <action name="actionMenu">
@ -306,10 +364,10 @@
</action> </action>
<action name="DefaultSaveFolder"> <action name="DefaultSaveFolder">
<property name="text"> <property name="text">
<string>Default save folder</string> <string>Change save folder</string>
</property> </property>
<property name="iconText"> <property name="iconText">
<string>Default save folder</string> <string>Change save folder</string>
</property> </property>
</action> </action>
<action name="actionBandwidth_limit"> <action name="actionBandwidth_limit">
@ -317,6 +375,21 @@
<string>Bandwidth limit</string> <string>Bandwidth limit</string>
</property> </property>
</action> </action>
<action name="actionAbout">
<property name="text">
<string>About</string>
</property>
</action>
<action name="actionAbout_Qt">
<property name="text">
<string>About Qt</string>
</property>
</action>
<action name="action_Settings">
<property name="text">
<string>Settings</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@ -1,9 +1,4 @@
#include <string> #include "mainwindow.h"
#include <vector>
#include <iostream>
#include <pstreams/pstream.h>
#include <QMessageBox>
#include <ctype.h>
using namespace std; using namespace std;
@ -42,12 +37,22 @@ const vector<string> explode(const string& s, const char& c, int n = 0)
return v; return v;
} }
FILE * popen2(array<string, 7> argv, string type, int & pid) FILE * popen2(char * const argv, string type, int & pid)
{ {
pid_t child_pid; pid_t child_pid;
int fd[2]; int fd[2];
pipe(fd); QString message;
string command;
if (pipe(fd) == -1)
{
message = "Open pipe failed" + QString::fromStdString(strerror(errno));
QMessageBox::warning(
NULL,
"RsyncUI",
message);
}else
{
if((child_pid = fork()) == -1) if((child_pid = fork()) == -1)
{ {
perror("fork"); perror("fork");
@ -69,7 +74,8 @@ FILE * popen2(array<string, 7> argv, string type, int & pid)
} }
setpgid(child_pid, child_pid); //Needed so negative PIDs can kill children of /bin/sh setpgid(child_pid, child_pid); //Needed so negative PIDs can kill children of /bin/sh
if (execl(argv[0].c_str(), argv[0].c_str(), argv[1].c_str(), argv[2].c_str(), argv[3].c_str(), argv[4].c_str(), argv[5].c_str(), NULL ) == -1) //if (execlp(argv[0].c_str(), argv[0].c_str(), argv[1].c_str(), argv[2].c_str(), argv[3].c_str(), argv[4].c_str(), argv[5].c_str(), NULL ) == -1)
if (execvp(command.c_str(), &argv))
{ {
perror("execl error => "); perror("execl error => ");
} }
@ -88,13 +94,13 @@ FILE * popen2(array<string, 7> argv, string type, int & pid)
} }
pid = child_pid; pid = child_pid;
if (type == "r") if (type == "r")
{ {
return fdopen(fd[READ], "r"); return fdopen(fd[READ], "r");
} }
return fdopen(fd[WRITE], "w"); return fdopen(fd[WRITE], "w");
}
return 0;
} }
int pclose2(FILE * fp, pid_t pid) int pclose2(FILE * fp, pid_t pid)
@ -110,7 +116,6 @@ int pclose2(FILE * fp, pid_t pid)
break; break;
} }
} }
return stat; return stat;
} }

View File

@ -3,12 +3,14 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "mainwindow.h" #include <array>
using namespace std; using namespace std;
const vector<string> explode(const string& s, const char& c, int n = 0); const vector<string> explode(const string& s, const char& c, int n);
FILE * popen2(array<string, 7> argv, string type, int & pid);
FILE * popen2(char * const argv, string type, int & pid);
int pclose2(FILE * fp, pid_t pid); int pclose2(FILE * fp, pid_t pid);
#endif // TOOLS_H #endif // TOOLS_H