From 7e78293fcbabc945a8a9e5bcaab121fbbf697c4c Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Thu, 7 May 2015 19:15:57 +0000 Subject: Tox: fixed avatar work git-svn-id: http://svn.miranda-ng.org/main/trunk@13480 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tox/src/tox_avatars.cpp | 15 +++++++-------- protocols/Tox/src/tox_contacts.cpp | 7 ++++--- protocols/Tox/src/tox_transfer.cpp | 17 ++++++++--------- protocols/Tox/src/tox_transfer.h | 2 +- 4 files changed, 20 insertions(+), 21 deletions(-) (limited to 'protocols') diff --git a/protocols/Tox/src/tox_avatars.cpp b/protocols/Tox/src/tox_avatars.cpp index cfab678533..5e9ddacef7 100644 --- a/protocols/Tox/src/tox_avatars.cpp +++ b/protocols/Tox/src/tox_avatars.cpp @@ -78,7 +78,7 @@ void CToxProto::SetToxAvatar(std::tstring path, bool checkHash) } TOX_ERR_FILE_SEND error; - uint32_t fileNumber = tox_file_send(tox, friendNumber, TOX_FILE_KIND_AVATAR, length, NULL, hash, TOX_HASH_LENGTH, &error); + uint32_t fileNumber = tox_file_send(tox, friendNumber, TOX_FILE_KIND_AVATAR, length, hash, NULL, 0, &error); if (error != TOX_ERR_FILE_SEND_OK) { mir_free(data); @@ -86,7 +86,8 @@ void CToxProto::SetToxAvatar(std::tstring path, bool checkHash) return; } - FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, _T("avatar"), length); + AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, NULL, length); + memcpy(transfer->hash, hash, TOX_HASH_LENGTH); transfer->pfts.hContact = hContact; transfer->hFile = _tfopen(path.c_str(), L"rb"); transfers.Add(transfer); @@ -136,7 +137,7 @@ INT_PTR CToxProto::GetAvatarInfo(WPARAM, LPARAM lParam) std::tstring path = GetAvatarFilePath(pai->hContact); if (IsFileExists(path)) { - _tcsncpy(pai->filename, path.c_str(), SIZEOF(pai->filename)); + mir_tstrncpy(pai->filename, path.c_str(), SIZEOF(pai->filename)); pai->format = PA_FORMAT_PNG; return GAIR_SUCCESS; @@ -156,7 +157,7 @@ INT_PTR CToxProto::GetMyAvatar(WPARAM wParam, LPARAM lParam) std::tstring path = GetAvatarFilePath(); if (IsFileExists(path)) { - _tcsncpy((TCHAR*)wParam, path.c_str(), (int)lParam); + mir_tstrncpy((TCHAR*)wParam, path.c_str(), (int)lParam); return 0; } @@ -196,7 +197,7 @@ INT_PTR CToxProto::SetMyAvatar(WPARAM, LPARAM lParam) } TOX_ERR_FILE_SEND error; - if (!tox_file_send(tox, NULL, TOX_FILE_KIND_AVATAR, 0, NULL, NULL, 0, &error)) + if (!tox_file_send(tox, friendNumber, TOX_FILE_KIND_AVATAR, 0, NULL, NULL, 0, &error)) { debugLogA(__FUNCTION__": failed to unset avatar"); return -1; @@ -205,11 +206,9 @@ INT_PTR CToxProto::SetMyAvatar(WPARAM, LPARAM lParam) } if (IsFileExists(avatarPath)) - { DeleteFile(avatarPath.c_str()); - } - db_unset(NULL, m_szModuleName, TOX_SETTINGS_AVATAR_HASH); + delSetting(TOX_SETTINGS_AVATAR_HASH); } return 0; diff --git a/protocols/Tox/src/tox_contacts.cpp b/protocols/Tox/src/tox_contacts.cpp index 2c410f4cad..2e123ca6a3 100644 --- a/protocols/Tox/src/tox_contacts.cpp +++ b/protocols/Tox/src/tox_contacts.cpp @@ -381,20 +381,21 @@ void CToxProto::OnConnectionStatusChanged(Tox*, uint32_t friendNumber, TOX_CONNE } TOX_ERR_FILE_SEND error; - uint32_t fileNumber = tox_file_send(proto->tox, friendNumber, TOX_FILE_KIND_AVATAR, length, NULL, hash, TOX_HASH_LENGTH, &error); + uint32_t fileNumber = tox_file_send(proto->tox, friendNumber, TOX_FILE_KIND_AVATAR, length, hash, NULL, 0, &error); if (error != TOX_ERR_FILE_SEND_OK) { proto->debugLogA(__FUNCTION__": failed to set new avatar"); return; } - FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, _T("avatar"), length); + AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, NULL, length); + memcpy(transfer->hash, hash, TOX_HASH_LENGTH); transfer->pfts.hContact = hContact; transfer->hFile = hFile; proto->transfers.Add(transfer); } else - tox_file_send(proto->tox, NULL, TOX_FILE_KIND_AVATAR, 0, NULL, NULL, 0, NULL); + tox_file_send(proto->tox, friendNumber, TOX_FILE_KIND_AVATAR, 0, NULL, NULL, 0, NULL); } else { diff --git a/protocols/Tox/src/tox_transfer.cpp b/protocols/Tox/src/tox_transfer.cpp index 110b1fc895..90d61a4d87 100644 --- a/protocols/Tox/src/tox_transfer.cpp +++ b/protocols/Tox/src/tox_transfer.cpp @@ -14,13 +14,11 @@ void CToxProto::OnFriendFile(Tox*, uint32_t friendNumber, uint32_t fileNumber, u { case TOX_FILE_KIND_AVATAR: { - ptrA id(proto->getStringA(hContact, TOX_SETTINGS_ID)); - char avatarName[MAX_PATH]; - mir_snprintf(avatarName, MAX_PATH, "%s.png", id); - fileName = (const uint8_t*)avatarName; - filenameLength = mir_strlen(avatarName); + ptrT id(proto->getTStringA(hContact, TOX_SETTINGS_ID)); + TCHAR avatarName[MAX_PATH]; + mir_sntprintf(avatarName, MAX_PATH, _T("%s.png"), id); - AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, NULL, fileSize); + AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, avatarName, fileSize); transfer->pfts.hContact = hContact; proto->transfers.Add(transfer); @@ -81,9 +79,10 @@ HANDLE CToxProto::OnFileAllow(MCONTACT hContact, HANDLE hTransfer, const PROTOCH { int action = FILERESUME_OVERWRITE; const TCHAR **szFilename = (const TCHAR**)mir_alloc(sizeof(TCHAR) * 2); - szFilename[0] = &fullPath[0]; + szFilename[0] = fullPath; szFilename[1] = NULL; OnFileResume(hTransfer, &action, szFilename); + //mir_free(szFilename); } return hTransfer; @@ -94,14 +93,14 @@ int CToxProto::OnFileResume(HANDLE hTransfer, int *action, const PROTOCHAR **szF { FileTransferParam *transfer = (FileTransferParam*)hTransfer; - if (*action = FILERESUME_SKIP) + if (*action == FILERESUME_SKIP) { tox_file_control(tox, transfer->friendNumber, transfer->fileNumber, TOX_FILE_CONTROL_CANCEL, NULL); transfers.Remove(transfer); return 0; } - if (*action = FILERESUME_RENAME) + if (*action == FILERESUME_RENAME) transfer->ChangeName(*szFilename); TCHAR *mode = *action == FILERESUME_OVERWRITE ? _T("wb") : _T("ab"); diff --git a/protocols/Tox/src/tox_transfer.h b/protocols/Tox/src/tox_transfer.h index b8511779f3..12d651339a 100644 --- a/protocols/Tox/src/tox_transfer.h +++ b/protocols/Tox/src/tox_transfer.h @@ -69,7 +69,7 @@ struct AvatarTransferParam : public FileTransferParam uint8_t hash[TOX_HASH_LENGTH]; AvatarTransferParam(uint32_t friendNumber, uint32_t fileNumber, const TCHAR *fileName, uint64_t fileSize) - : FileTransferParam(friendNumber, fileNumber, NULL, fileSize) + : FileTransferParam(friendNumber, fileNumber, fileName, fileSize) { transferType = TOX_FILE_KIND_AVATAR; } -- cgit v1.2.3