From dbdbeaa46f426b6efdabc24ffdbb5c2f20adaa66 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 8 Feb 2018 17:38:16 +0100 Subject: [PATCH] Added and using isFileTransfer --- src/chat/chat-message/chat-message.cpp | 16 ++++++++-------- src/chat/chat-message/chat-message.h | 2 +- .../file-transfer-chat-message-modifier.cpp | 8 ++++---- src/content/content.cpp | 4 ++++ src/content/content.h | 1 + src/content/file-content.cpp | 4 ++++ src/content/file-content.h | 1 + src/content/file-transfer-content.cpp | 4 ++++ src/content/file-transfer-content.h | 1 + 9 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/chat/chat-message/chat-message.cpp b/src/chat/chat-message/chat-message.cpp index fd3157614..df72a1b46 100644 --- a/src/chat/chat-message/chat-message.cpp +++ b/src/chat/chat-message/chat-message.cpp @@ -162,7 +162,7 @@ const Content* ChatMessagePrivate::getTextContent() const { bool ChatMessagePrivate::hasFileTransferContent() const { for (const Content *c : contents) { - if (c->getContentType() == ContentType::FileTransfer) { + if (c->isFileTransfer()) { return true; } } @@ -171,7 +171,7 @@ bool ChatMessagePrivate::hasFileTransferContent() const { const Content* ChatMessagePrivate::getFileTransferContent() const { for (const Content *c : contents) { - if (c->getContentType() == ContentType::FileTransfer) { + if (c->isFileTransfer()) { return c; } } @@ -321,8 +321,8 @@ bool ChatMessagePrivate::downloadFile () { L_Q(); for (auto &content : contents) - if (content->getContentType() == ContentType::FileTransfer) - return q->downloadFile(*static_cast(content)); + if (content->isFileTransfer()) + return q->downloadFile(static_cast(content)); return false; } @@ -674,8 +674,8 @@ void ChatMessagePrivate::send () { list::iterator it = contents.begin(); while (it != contents.end()) { Content *content = *it; - if (content->getContentType() == ContentType::FileTransfer) { - FileTransferContent *fileTransferContent = (FileTransferContent *)content; + if (content->isFileTransfer()) { + FileTransferContent *fileTransferContent = static_cast(content); it = contents.erase(it); q->addContent(fileTransferContent->getFileContent()); delete fileTransferContent; @@ -965,9 +965,9 @@ void ChatMessage::sendDisplayNotification () { d->sendImdn(Imdn::Type::Display, LinphoneReasonNone); } -bool ChatMessage::downloadFile(FileTransferContent &fileTransferContent) { +bool ChatMessage::downloadFile(FileTransferContent *fileTransferContent) { L_D(); - return d->fileTransferChatMessageModifier.downloadFile(getSharedFromThis(), &fileTransferContent); + return d->fileTransferChatMessageModifier.downloadFile(getSharedFromThis(), fileTransferContent); } void ChatMessage::cancelFileTransfer () { diff --git a/src/chat/chat-message/chat-message.h b/src/chat/chat-message/chat-message.h index 3b0b26417..47d8c365a 100644 --- a/src/chat/chat-message/chat-message.h +++ b/src/chat/chat-message/chat-message.h @@ -104,7 +104,7 @@ public: void addCustomHeader (const std::string &headerName, const std::string &headerValue); void removeCustomHeader (const std::string &headerName); - bool downloadFile (FileTransferContent &content); + bool downloadFile (FileTransferContent *content); private: ChatMessage (const std::shared_ptr &chatRoom, ChatMessage::Direction direction); diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.cpp b/src/chat/modifier/file-transfer-chat-message-modifier.cpp index ec04c61f0..1032c5af8 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.cpp +++ b/src/chat/modifier/file-transfer-chat-message-modifier.cpp @@ -587,8 +587,8 @@ ChatMessageModifier::Result FileTransferChatMessageModifier::decode (const share } for (Content *content : message->getContents()) { - if (content->getContentType() == ContentType::FileTransfer) { - FileTransferContent *fileTransferContent = (FileTransferContent *)content; + if (content->isFileTransfer()) { + FileTransferContent *fileTransferContent = static_cast(content); fillFileTransferContentInformationsFromVndGsmaRcsFtHttpXml(fileTransferContent); } } @@ -779,8 +779,8 @@ void FileTransferChatMessageModifier::onRecvEnd (belle_sip_user_body_handler_t * FileContent *fileContent = currentFileContentToTransfer; message->addContent(fileContent); for (Content *content : message->getContents()) { - if (content->getContentType() == ContentType::FileTransfer) { - FileTransferContent *fileTransferContent = (FileTransferContent*)content; + if (content->isFileTransfer()) { + FileTransferContent *fileTransferContent = static_cast(content); if (fileTransferContent->getFileContent() == fileContent) { message->removeContent(content); delete fileTransferContent; diff --git a/src/content/content.cpp b/src/content/content.cpp index 93fd2f6e4..786c9be8d 100644 --- a/src/content/content.cpp +++ b/src/content/content.cpp @@ -172,4 +172,8 @@ bool Content::isFile () const { return false; } +bool Content::isFileTransfer () const { + return false; +} + LINPHONE_END_NAMESPACE diff --git a/src/content/content.h b/src/content/content.h index da3c9e055..281ad78d2 100644 --- a/src/content/content.h +++ b/src/content/content.h @@ -70,6 +70,7 @@ public: bool isEmpty () const; virtual bool isFile () const; + virtual bool isFileTransfer () const; protected: explicit Content (ContentPrivate &p); diff --git a/src/content/file-content.cpp b/src/content/file-content.cpp index 8f6425474..63c727dc6 100644 --- a/src/content/file-content.cpp +++ b/src/content/file-content.cpp @@ -119,4 +119,8 @@ bool FileContent::isFile () const { return true; } +bool FileContent::isFileTransfer () const { + return false; +} + LINPHONE_END_NAMESPACE diff --git a/src/content/file-content.h b/src/content/file-content.h index c46786dd5..82bc1bcff 100644 --- a/src/content/file-content.h +++ b/src/content/file-content.h @@ -49,6 +49,7 @@ public: const std::string &getFilePath () const; bool isFile () const override; + bool isFileTransfer () const override; private: L_DECLARE_PRIVATE(FileContent); diff --git a/src/content/file-transfer-content.cpp b/src/content/file-transfer-content.cpp index d1d67c00d..57ecff245 100644 --- a/src/content/file-transfer-content.cpp +++ b/src/content/file-transfer-content.cpp @@ -170,4 +170,8 @@ bool FileTransferContent::isFile () const { return false; } +bool FileTransferContent::isFileTransfer () const { + return true; +} + LINPHONE_END_NAMESPACE diff --git a/src/content/file-transfer-content.h b/src/content/file-transfer-content.h index da23053cb..d107fcd52 100644 --- a/src/content/file-transfer-content.h +++ b/src/content/file-transfer-content.h @@ -62,6 +62,7 @@ public: const char *getFileKeyAsString () const; bool isFile () const override; + bool isFileTransfer () const override; private: L_DECLARE_PRIVATE(FileTransferContent);