diff options
Diffstat (limited to 'pica-client')
| -rw-r--r-- | pica-client/filetransfercontroller.cpp | 12 | ||||
| -rw-r--r-- | pica-client/filetransfercontroller.h | 5 | ||||
| -rw-r--r-- | pica-client/skynet.cpp | 23 | ||||
| -rw-r--r-- | pica-client/skynet.h | 6 |
4 files changed, 42 insertions, 4 deletions
diff --git a/pica-client/filetransfercontroller.cpp b/pica-client/filetransfercontroller.cpp index 61534c9..a293827 100644 --- a/pica-client/filetransfercontroller.cpp +++ b/pica-client/filetransfercontroller.cpp @@ -20,6 +20,17 @@ FileTransferController::FileTransferController(QObject *parent) : connect(skynet, SIGNAL(OutgoingFileRequestDenied(QByteArray)), this, SLOT(file_denied_by_peer(QByteArray))); } +void FileTransferController::file_finished_incoming(QByteArray peer_id) +{ + if (ftdialogs_in.contains(peer_id)) + ftdialogs_in.remove(peer_id); +} + +void FileTransferController::file_finished_outgoing(QByteArray peer_id) +{ + if (ftdialogs_out.contains(peer_id)) + ftdialogs_out.remove(peer_id); +} void FileTransferController::file_progress(QByteArray peer_id, quint64 bytes_sent, quint64 bytes_received) { @@ -44,7 +55,6 @@ void FileTransferController::file_request(QByteArray peer_id, quint64 file_size, FileTransferDialog *ftd = new FileTransferDialog(peer_id, filename, file_size, FileTransferDialog::RECEIVING); ftdialogs_in[peer_id] = ftd; - fsizes[peer_id] = file_size; fnames[peer_id] = filename; connect(ftd, SIGNAL(acceptedFile(QByteArray)), this, SLOT(file_accepted_by_me(QByteArray))); diff --git a/pica-client/filetransfercontroller.h b/pica-client/filetransfercontroller.h index f261605..99282c6 100644 --- a/pica-client/filetransfercontroller.h +++ b/pica-client/filetransfercontroller.h @@ -18,7 +18,6 @@ private: QMap<QByteArray, FileTransferDialog*> ftdialogs_in; QMap<QByteArray, FileTransferDialog*> ftdialogs_out; - QMap<QByteArray, quint64> fsizes; QMap<QByteArray, QString> fnames; @@ -40,6 +39,8 @@ public slots: void file_cancelled_outgoing(QByteArray peer_id); void file_ioerror_outgoing(QByteArray peer_id); + void file_finished_incoming(QByteArray peer_id); + //from me (file transfer dialog shown to user) to remote peer void file_accepted_by_me(QByteArray peer_id); void file_denied_by_me(QByteArray peer_id); @@ -49,6 +50,8 @@ public slots: void send_file(QByteArray peer_id); + void file_finished_outgoing(QByteArray peer_id); + }; #endif // FILETRANSFERCONTROLLER_H diff --git a/pica-client/skynet.cpp b/pica-client/skynet.cpp index 462ad02..6426538 100644 --- a/pica-client/skynet.cpp +++ b/pica-client/skynet.cpp @@ -28,7 +28,8 @@ PICA_client_callbacks cbs = { accepted_file_cb, denied_file_cb, file_progress, - file_control + file_control, + file_finished }; PICA_client_init(&cbs); @@ -565,6 +566,16 @@ void SkyNet::emit_OutgoingFileResumed(QByteArray peer_id) emit OutgoingFileResumed(peer_id); } +void SkyNet::emit_OutgoingFileFinished(QByteArray peer_id) +{ + emit OutgoingFileFinished(peer_id); +} + +void SkyNet::emit_IncomingFileFinished(QByteArray peer_id) +{ + emit IncomingFileFinished(peer_id); +} + //callbacks //all callbacks are executed in separate thread, created in Nodethread instance, REMEMBER THAT !!! @@ -616,7 +627,8 @@ void SkyNet::notfound_cb(const unsigned char *callee_id) void SkyNet::channel_closed_cb(const unsigned char *peer_id, int reason) { - qDebug()<<"channel closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()<<")\n"; + qDebug()<<"channel closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64() + <<", error_code =" << reason << ")\n"; } @@ -713,3 +725,10 @@ void SkyNet::file_control(const unsigned char *peer_id, unsigned int sender_cmd, } } +void SkyNet::file_finished(const unsigned char *peer_id, int sending) +{ + if (sending) + skynet->emit_OutgoingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE)); + else + skynet->emit_IncomingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE)); +} diff --git a/pica-client/skynet.h b/pica-client/skynet.h index a053083..91eb2f1 100644 --- a/pica-client/skynet.h +++ b/pica-client/skynet.h @@ -51,6 +51,8 @@ signals: void OutgoingFileCancelled(QByteArray peer_id); void OutgoingFileIoError(QByteArray peer_id); void OutgoingFileResumed(QByteArray peer_id); + void OutgoingFileFinished(QByteArray peer_id); + void IncomingFileFinished(QByteArray peer_id); private: Nodes nodes; @@ -88,6 +90,8 @@ private: void emit_OutgoingFileIoError(QByteArray peer_id); void emit_OutgoingFileResumed(QByteArray peer_id); + void emit_OutgoingFileFinished(QByteArray peer_id); + void emit_IncomingFileFinished(QByteArray peer_id); //получение сообщения. static void newmsg_cb(const unsigned char *peer_id,const char* msgbuf,unsigned int nb,int type); @@ -118,6 +122,8 @@ private: static void file_control(const unsigned char *peer_id, unsigned int sender_cmd, unsigned int receiver_cmd); + static void file_finished(const unsigned char *peer_id, int sending); + private slots: void nodethread_finished(); void nodethread_connected(QString addr, quint16 port, NodeThread *thread); |
