diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c4fe507..6c9e208e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ project(pip) cmake_minimum_required(VERSION 2.6) -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) include(CheckFunctionExists) diff --git a/src/io/pifiletransfer.cpp b/src/io/pifiletransfer.cpp index 50271c96..4c40a14d 100644 --- a/src/io/pifiletransfer.cpp +++ b/src/io/pifiletransfer.cpp @@ -25,11 +25,23 @@ PIFileTransfer::~PIFileTransfer() { } +bool PIFileTransfer::send(const PIFile& file) { + return send(file.path()); +} + + bool PIFileTransfer::send(const PIString & file) { return send(PIVector() << PIFile::fileInfo(file)); } +bool PIFileTransfer::send(const PIStringList& files) { + PIVector fil; + piForeachC(PIString &file, files) fil << PIFile::fileInfo(file); + return send(fil); +} + + bool PIFileTransfer::send(PIVector entries) { PIVector allEntries; for (int i = 0; i < entries.size_s(); i++) { @@ -230,8 +242,14 @@ void PIFileTransfer::receive_started() { void PIFileTransfer::receive_finished(bool ok) { if (pftheader.step == pft_Description) { - if (ok) desc >> files_; - else { + bool user_ok = true; + if (ok) { + desc >> files_; + PIStringList files; + piForeachC(PIFile::FileInfo &fi, files_) files << fi.path; + receiveFilesRequest(files, bytesAll(), &user_ok); + } + if (!ok || !user_ok) { pftheader.session_id--; receiveFilesFinished(false); } diff --git a/src/io/pifiletransfer.h b/src/io/pifiletransfer.h index 0160de45..04bddf3a 100644 --- a/src/io/pifiletransfer.h +++ b/src/io/pifiletransfer.h @@ -54,6 +54,7 @@ public: EVENT1(receiveFilesFinished, bool, ok) EVENT(sendFilesStarted) EVENT1(sendFilesFinished, bool, ok) + EVENT3(receiveFilesRequest, PIStringList, files, llong, total_bytes, bool *, ok) private: static const char sign[];