mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Core: emit TOX_FILECONTROL_RESUME_BROKEN request (base functionality)
This commit is contained in:
parent
4dfa5a45c4
commit
575cac1fc7
32
core.cpp
32
core.cpp
|
@ -291,6 +291,34 @@ void Core::onConnectionStatusChanged(Tox*/* tox*/, int friendId, uint8_t status,
|
|||
emit static_cast<Core*>(core)->friendStatusChanged(friendId, friendStatus);
|
||||
if (friendStatus == Status::Offline) {
|
||||
static_cast<Core*>(core)->checkLastOnline(friendId);
|
||||
|
||||
for (ToxFile& f : fileSendQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::TRANSMITTING)
|
||||
{
|
||||
qDebug() << "friendId: set broken";
|
||||
f.status = ToxFile::BROKEN;
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, true);
|
||||
}
|
||||
}
|
||||
for (ToxFile& f : fileRecvQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::TRANSMITTING)
|
||||
{
|
||||
qDebug() << "friendId: set broken";
|
||||
f.status = ToxFile::BROKEN;
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ToxFile& f : fileRecvQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::BROKEN)
|
||||
{
|
||||
tox_file_send_control(static_cast<Core*>(core)->tox, friendId, 1, f.fileNum, TOX_FILECONTROL_RESUME_BROKEN, (const uint8_t*)(&f.bytesSent), sizeof(uint64_t));
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -424,7 +452,7 @@ void Core::onFileControlCallback(Tox* tox, int32_t friendnumber, uint8_t receive
|
|||
else if (receive_send == 1 && control_type == TOX_FILECONTROL_RESUME_BROKEN)
|
||||
{
|
||||
qDebug() << "Core::onFileControlCallback: TOX_FILECONTROL_RESUME_BROKEN";
|
||||
uint64_t resumePos = *(uint64_t*)data;
|
||||
uint64_t resumePos = *(const uint64_t*)(data);
|
||||
|
||||
if (resumePos >= file->filesize)
|
||||
{
|
||||
|
@ -655,7 +683,7 @@ void Core::pauseResumeFileRecv(int friendId, int fileNum)
|
|||
tox_file_send_control(tox, file->friendId, 1, file->fileNum, TOX_FILECONTROL_ACCEPT, nullptr, 0);
|
||||
}
|
||||
else
|
||||
qWarning() << "Core::pauseResumeFileRecv: File is stopped";
|
||||
qWarning() << "Core::pauseResumeFileRecv: File is stopped or broken";
|
||||
}
|
||||
|
||||
void Core::cancelFileSend(int friendId, int fileNum)
|
||||
|
|
1
core.h
1
core.h
|
@ -150,6 +150,7 @@ signals:
|
|||
void fileTransferPaused(int FriendId, int FileNum, ToxFile::FileDirection direction);
|
||||
void fileTransferInfo(int FriendId, int FileNum, int64_t Filesize, int64_t BytesSent, ToxFile::FileDirection direction);
|
||||
void fileTransferRemotePausedUnpaused(ToxFile file, bool paused);
|
||||
void fileTransferBrokenUnbroken(ToxFile file, bool broken);
|
||||
|
||||
void fileSendFailed(int FriendId, const QString& fname);
|
||||
|
||||
|
|
|
@ -50,7 +50,8 @@ struct ToxFile
|
|||
{
|
||||
STOPPED,
|
||||
PAUSED,
|
||||
TRANSMITTING
|
||||
TRANSMITTING,
|
||||
BROKEN
|
||||
};
|
||||
|
||||
enum FileDirection : bool
|
||||
|
|
|
@ -28,7 +28,7 @@ class FileTransferInstance : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum TransfState {tsPending, tsProcessing, tsPaused, tsFinished, tsCanceled};
|
||||
enum TransfState {tsPending, tsProcessing, tsPaused, tsFinished, tsCanceled, tsBroken};
|
||||
|
||||
public:
|
||||
explicit FileTransferInstance(ToxFile File);
|
||||
|
|
Loading…
Reference in New Issue
Block a user