mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-03 20:46:28 +00:00
Started CPIM chat message modifier
This commit is contained in:
parent
cd10ea5d66
commit
05b91d4b64
7 changed files with 47 additions and 14 deletions
|
|
@ -91,8 +91,8 @@ string ChatMessage::getContentType () const {
|
|||
return d->contentType;
|
||||
}
|
||||
|
||||
void ChatMessage::send () const {
|
||||
L_D(const ChatMessage);
|
||||
void ChatMessage::send () {
|
||||
L_D(ChatMessage);
|
||||
|
||||
if (d->contents.size() > 1) {
|
||||
MultipartChatMessageModifier mcmm;
|
||||
|
|
@ -107,6 +107,8 @@ void ChatMessage::send () const {
|
|||
}
|
||||
|
||||
// TODO.
|
||||
|
||||
d->isReadOnly = true;
|
||||
}
|
||||
|
||||
bool ChatMessage::containsReadableText () const {
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public:
|
|||
|
||||
std::string getContentType () const;
|
||||
|
||||
void send () const;
|
||||
void send ();
|
||||
|
||||
bool containsReadableText () const;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
|
||||
class ChatMessageModifier {
|
||||
public:
|
||||
virtual void encode(const LinphonePrivate::ChatMessagePrivate* msg) = 0;
|
||||
virtual void decode(const LinphonePrivate::ChatMessagePrivate* msg) = 0;
|
||||
virtual void encode(LinphonePrivate::ChatMessagePrivate* msg) = 0;
|
||||
virtual void decode(LinphonePrivate::ChatMessagePrivate* msg) = 0;
|
||||
virtual ~ChatMessageModifier () = default;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,23 +16,54 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "content/content-type.h"
|
||||
#include "content/content.h"
|
||||
#include "chat/chat-message-p.h"
|
||||
#include "chat/cpim/cpim.h"
|
||||
|
||||
#include "cpim-chat-message-modifier.h"
|
||||
|
||||
LINPHONE_BEGIN_NAMESPACE
|
||||
|
||||
using namespace std;
|
||||
|
||||
void CpimChatMessageModifier::encode(const LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
//TODO
|
||||
void CpimChatMessageModifier::encode(LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
Cpim::Message message;
|
||||
Cpim::GenericHeader contentTypeHeader;
|
||||
contentTypeHeader.setName("Content-Type");
|
||||
contentTypeHeader.setValue("Message/CPIM");
|
||||
message.addCpimHeader(contentTypeHeader);
|
||||
|
||||
shared_ptr<Content> content;
|
||||
if (msg->internalContent) {
|
||||
// Another ChatMessageModifier was called before this one, we apply our changes on the private content
|
||||
content = msg->internalContent;
|
||||
} else {
|
||||
// We're the first ChatMessageModifier to be called, we'll create the private content from the public one
|
||||
// We take the first one because if there is more of them, the multipart modifier should have been called first
|
||||
// So we should not be in this block
|
||||
content = msg->contents.front();
|
||||
}
|
||||
|
||||
string contentType = content->getContentType().asString();
|
||||
const vector<char> body = content->getBody();
|
||||
string contentBody(body.begin(), body.end());
|
||||
message.setContent("ContentType: " + contentType + "\r\n" + contentBody);
|
||||
|
||||
if (!message.isValid()) {
|
||||
//TODO
|
||||
} else {
|
||||
shared_ptr<Content> newContent = make_shared<Content>();
|
||||
ContentType newContentType("Message/CPIM");
|
||||
newContent->setContentType(newContentType);
|
||||
newContent->setBody(message.asString());
|
||||
msg->internalContent = newContent;
|
||||
}
|
||||
}
|
||||
|
||||
void CpimChatMessageModifier::decode(const LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
void CpimChatMessageModifier::decode(LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@
|
|||
class CpimChatMessageModifier : ChatMessageModifier {
|
||||
public:
|
||||
CpimChatMessageModifier() {};
|
||||
virtual void encode(const LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void decode(const LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void encode(LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void decode(LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual ~CpimChatMessageModifier () = default;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@
|
|||
|
||||
using namespace std;
|
||||
|
||||
void MultipartChatMessageModifier::encode(const LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
void MultipartChatMessageModifier::encode(LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
if (msg->contents.size() > 1) {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
|
||||
void MultipartChatMessageModifier::decode(const LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
void MultipartChatMessageModifier::decode(LinphonePrivate::ChatMessagePrivate* msg) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@
|
|||
class MultipartChatMessageModifier : ChatMessageModifier {
|
||||
public:
|
||||
MultipartChatMessageModifier() {};
|
||||
virtual void encode(const LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void decode(const LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void encode(LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual void decode(LinphonePrivate::ChatMessagePrivate* msg);
|
||||
virtual ~MultipartChatMessageModifier () = default;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue