mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-18 03:28:07 +00:00
Removed TODOs from c-chat-message
This commit is contained in:
parent
1cff67c57a
commit
950def6133
4 changed files with 133 additions and 148 deletions
|
|
@ -43,7 +43,6 @@ L_DECLARE_C_OBJECT_IMPL_WITH_XTORS(ChatMessage,
|
|||
LinphoneChatMessageCbs *cbs;
|
||||
LinphoneAddress *from; // cache for shared_ptr<Address>
|
||||
LinphoneAddress *to; // cache for shared_ptr<Address>
|
||||
LinphoneErrorInfo *ei;
|
||||
LinphoneChatMessageStateChangedCb message_state_changed_cb;
|
||||
void* message_state_changed_user_data;
|
||||
)
|
||||
|
|
@ -245,6 +244,10 @@ const char *linphone_chat_message_get_custom_header(LinphoneChatMessage *msg, co
|
|||
return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getSalCustomHeaderValue(header_name).c_str();
|
||||
}
|
||||
|
||||
const LinphoneErrorInfo *linphone_chat_message_get_error_info(LinphoneChatMessage *msg) {
|
||||
return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getErrorInfo();
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Methods
|
||||
// =============================================================================
|
||||
|
|
@ -273,19 +276,16 @@ void linphone_chat_message_update_state(LinphoneChatMessage *msg, LinphoneChatMe
|
|||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->updateState((LinphonePrivate::ChatMessage::State) new_state);
|
||||
}
|
||||
void linphone_chat_message_send_imdn(LinphoneChatMessage *msg, ImdnType imdn_type, LinphoneReason reason) {
|
||||
//TODO
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->sendImdn();
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->sendImdn(imdn_type, reason);
|
||||
}
|
||||
|
||||
void linphone_chat_message_deactivate(LinphoneChatMessage *msg){
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->cancelFileTransfer();
|
||||
// TODO ?
|
||||
//msg->chat_room = NULL;
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->setChatRoom(nullptr);
|
||||
}
|
||||
|
||||
void linphone_chat_message_send_delivery_notification(LinphoneChatMessage *msg, LinphoneReason reason) {
|
||||
//TODO
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->sendDeliveryNotification();
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->sendDeliveryNotification(reason);
|
||||
}
|
||||
|
||||
void linphone_chat_message_send_display_notification(LinphoneChatMessage *msg) {
|
||||
|
|
@ -334,14 +334,11 @@ int linphone_chat_message_set_text(LinphoneChatMessage *msg, const char* text) {
|
|||
}
|
||||
|
||||
LinphoneContent *linphone_chat_message_get_file_transfer_information(LinphoneChatMessage *msg) {
|
||||
//return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getFileTransferInformation();
|
||||
//TODO
|
||||
return NULL;
|
||||
return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getFileTransferInformation();
|
||||
}
|
||||
|
||||
void linphone_chat_message_set_file_transfer_information(LinphoneChatMessage *msg, LinphoneContent *content) {
|
||||
//TODO
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->setFileTransferInformation(nullptr);
|
||||
L_GET_CPP_PTR_FROM_C_OBJECT(msg)->setFileTransferInformation(content);
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -359,12 +356,6 @@ const LinphoneAddress *linphone_chat_message_get_local_address(LinphoneChatMessa
|
|||
return linphone_chat_message_get_to_address(msg);
|
||||
}
|
||||
|
||||
const LinphoneErrorInfo *linphone_chat_message_get_error_info(const LinphoneChatMessage *msg) {
|
||||
if (!msg->ei) ((LinphoneChatMessage*)msg)->ei = linphone_error_info_new(); /*let's do it mutable*/
|
||||
linphone_error_info_from_sal_op(msg->ei, linphone_chat_message_get_sal_op(msg));
|
||||
return msg->ei;
|
||||
}
|
||||
|
||||
LinphoneReason linphone_chat_message_get_reason(LinphoneChatMessage *msg) {
|
||||
return linphone_error_info_get_reason(linphone_chat_message_get_error_info(msg));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,10 +54,14 @@ private:
|
|||
std::shared_ptr<Content> internalContent;
|
||||
std::unordered_map<std::string, std::string> customHeaders;
|
||||
std::shared_ptr<EventsDb> eventsDb;
|
||||
std::shared_ptr<ErrorInfo> errorInfo;
|
||||
LinphoneErrorInfo * errorInfo;
|
||||
belle_http_request_t *httpRequest;
|
||||
SalOp *salOp;
|
||||
SalCustomHeader *salCustomHeaders;
|
||||
// Used for compatibility with previous C API
|
||||
std::string cContentType;
|
||||
std::string cText;
|
||||
LinphoneContent *cFileTransferInformation;
|
||||
L_DECLARE_PUBLIC(ChatMessage);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -37,14 +37,18 @@ LINPHONE_BEGIN_NAMESPACE
|
|||
|
||||
using namespace std;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// =============================================================================
|
||||
// ChatMessagePrivate
|
||||
// =============================================================================
|
||||
|
||||
ChatMessagePrivate::ChatMessagePrivate (const shared_ptr<ChatRoom> &room)
|
||||
: chatRoom(room) {}
|
||||
|
||||
ChatMessagePrivate::~ChatMessagePrivate () {}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// =============================================================================
|
||||
// ChatMessage
|
||||
// =============================================================================
|
||||
|
||||
ChatMessage::ChatMessage (const shared_ptr<ChatRoom> &room) : Object(*new ChatMessagePrivate(room)) {}
|
||||
|
||||
|
|
@ -59,6 +63,11 @@ shared_ptr<ChatRoom> ChatMessage::getChatRoom () const {
|
|||
return d->chatRoom;
|
||||
}
|
||||
|
||||
void ChatMessage::setChatRoom (shared_ptr<ChatRoom> chatRoom) {
|
||||
L_D(ChatMessage);
|
||||
d->chatRoom = chatRoom;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
string ChatMessage::getExternalBodyUrl() const {
|
||||
|
|
@ -215,41 +224,32 @@ void ChatMessage::setIsToBeStored(bool store) {
|
|||
|
||||
string ChatMessage::getContentType() const {
|
||||
L_D(const ChatMessage);
|
||||
if (d->internalContent) {
|
||||
return d->internalContent->getContentType().asString();
|
||||
}
|
||||
if (d->contents.size() > 0) {
|
||||
return d->contents.front()->getContentType().asString();
|
||||
}
|
||||
return "";
|
||||
return d->cContentType;
|
||||
}
|
||||
|
||||
void ChatMessage::setContentType(string contentType) {
|
||||
//TODO
|
||||
L_D(ChatMessage);
|
||||
d->cContentType = contentType;
|
||||
}
|
||||
|
||||
string ChatMessage::getText() const {
|
||||
L_D(const ChatMessage);
|
||||
if (d->internalContent) {
|
||||
return d->internalContent->getBodyAsString();
|
||||
}
|
||||
if (d->contents.size() > 0) {
|
||||
return d->contents.front()->getBodyAsString();
|
||||
}
|
||||
return "";
|
||||
return d->cText;
|
||||
}
|
||||
|
||||
void ChatMessage::setText(string text) {
|
||||
//TODO
|
||||
L_D(ChatMessage);
|
||||
d->cText = text;
|
||||
}
|
||||
|
||||
shared_ptr<Content> ChatMessage::getFileTransferInformation() const {
|
||||
//TODO
|
||||
return nullptr;
|
||||
LinphoneContent * ChatMessage::getFileTransferInformation() const {
|
||||
L_D(const ChatMessage);
|
||||
return d->cFileTransferInformation;
|
||||
}
|
||||
|
||||
void ChatMessage::setFileTransferInformation(shared_ptr<Content> content) {
|
||||
//TODO
|
||||
void ChatMessage::setFileTransferInformation(LinphoneContent *content) {
|
||||
L_D(ChatMessage);
|
||||
d->cFileTransferInformation = content;
|
||||
}
|
||||
|
||||
unsigned int ChatMessage::getStorageId() const {
|
||||
|
|
@ -307,12 +307,64 @@ string ChatMessage::getSalCustomHeaderValue(string name) {
|
|||
return sal_custom_header_find(d->salCustomHeaders, name.c_str());
|
||||
}
|
||||
|
||||
shared_ptr<const ErrorInfo> ChatMessage::getErrorInfo () const {
|
||||
L_D(const ChatMessage);
|
||||
//TODO
|
||||
const LinphoneErrorInfo * ChatMessage::getErrorInfo() {
|
||||
L_D(ChatMessage);
|
||||
if (!d->errorInfo) d->errorInfo = linphone_error_info_new(); //let's do it mutable
|
||||
linphone_error_info_from_sal_op(d->errorInfo, d->salOp);
|
||||
return d->errorInfo;
|
||||
}
|
||||
|
||||
bool ChatMessage::isReadOnly () const {
|
||||
L_D(const ChatMessage);
|
||||
return d->isReadOnly;
|
||||
}
|
||||
|
||||
list<shared_ptr<const Content> > ChatMessage::getContents () const {
|
||||
L_D(const ChatMessage);
|
||||
list<shared_ptr<const Content> > contents;
|
||||
for (const auto &content : d->contents)
|
||||
contents.push_back(content);
|
||||
return contents;
|
||||
}
|
||||
|
||||
void ChatMessage::addContent (const shared_ptr<Content> &content) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->contents.push_back(content);
|
||||
}
|
||||
|
||||
void ChatMessage::removeContent (const shared_ptr<const Content> &content) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->contents.remove(const_pointer_cast<Content>(content));
|
||||
}
|
||||
|
||||
string ChatMessage::getCustomHeaderValue (const string &headerName) const {
|
||||
L_D(const ChatMessage);
|
||||
try {
|
||||
return d->customHeaders.at(headerName);
|
||||
} catch (const exception &) {
|
||||
// Key doesn't exist.
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
void ChatMessage::addCustomHeader (const string &headerName, const string &headerValue) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->customHeaders[headerName] = headerValue;
|
||||
}
|
||||
|
||||
void ChatMessage::removeCustomHeader (const string &headerName) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->customHeaders.erase(headerName);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void ChatMessage::updateState(State state) {
|
||||
|
|
@ -325,6 +377,26 @@ void ChatMessage::updateState(State state) {
|
|||
}*/
|
||||
}
|
||||
|
||||
void ChatMessage::send () {
|
||||
L_D(ChatMessage);
|
||||
|
||||
if (d->contents.size() > 1) {
|
||||
MultipartChatMessageModifier mcmm;
|
||||
mcmm.encode(d);
|
||||
}
|
||||
|
||||
LinphoneCore *lc = getChatRoom()->getCore();
|
||||
LpConfig *lpc = linphone_core_get_config(lc);
|
||||
if (lp_config_get_int(lpc, "sip", "use_cpim", 0) == 1) {
|
||||
CpimChatMessageModifier ccmm;
|
||||
ccmm.encode(d);
|
||||
}
|
||||
|
||||
// TODO.
|
||||
|
||||
d->isReadOnly = true;
|
||||
}
|
||||
|
||||
void ChatMessage::reSend() {
|
||||
//TODO
|
||||
/*LinphoneChatMessageState state = linphone_chat_message_get_state(msg);
|
||||
|
|
@ -482,7 +554,7 @@ static void linphone_chat_process_response_from_get_file(void *data, const belle
|
|||
return content;
|
||||
}*/
|
||||
|
||||
void ChatMessage::sendImdn() {
|
||||
void ChatMessage::sendImdn(ImdnType imdnType, LinphoneReason reason) {
|
||||
//TODO
|
||||
/*char *content = linphone_chat_message_create_imdn_xml(cm, imdn_type, reason);
|
||||
if (content) {
|
||||
|
|
@ -491,7 +563,7 @@ void ChatMessage::sendImdn() {
|
|||
}*/
|
||||
}
|
||||
|
||||
void ChatMessage::sendDeliveryNotification() {
|
||||
void ChatMessage::sendDeliveryNotification(LinphoneReason reason) {
|
||||
//TODO
|
||||
/*LinphoneChatRoom *cr = linphone_chat_message_get_chat_room(cm);
|
||||
LinphoneCore *lc = linphone_chat_room_get_core(cr);
|
||||
|
|
@ -1122,82 +1194,4 @@ int ChatMessage::putCharacter(uint32_t character) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void ChatMessage::send () {
|
||||
L_D(ChatMessage);
|
||||
|
||||
if (d->contents.size() > 1) {
|
||||
MultipartChatMessageModifier mcmm;
|
||||
mcmm.encode(d);
|
||||
}
|
||||
|
||||
LinphoneCore *lc = getChatRoom()->getCore();
|
||||
LpConfig *lpc = linphone_core_get_config(lc);
|
||||
if (lp_config_get_int(lpc, "sip", "use_cpim", 0) == 1) {
|
||||
CpimChatMessageModifier ccmm;
|
||||
ccmm.encode(d);
|
||||
}
|
||||
|
||||
// TODO.
|
||||
|
||||
d->isReadOnly = true;
|
||||
}
|
||||
|
||||
bool ChatMessage::containsReadableText () const {
|
||||
// TODO: Check content type.
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatMessage::isReadOnly () const {
|
||||
L_D(const ChatMessage);
|
||||
return d->isReadOnly;
|
||||
}
|
||||
|
||||
list<shared_ptr<const Content> > ChatMessage::getContents () const {
|
||||
L_D(const ChatMessage);
|
||||
list<shared_ptr<const Content> > contents;
|
||||
for (const auto &content : d->contents)
|
||||
contents.push_back(content);
|
||||
return contents;
|
||||
}
|
||||
|
||||
void ChatMessage::addContent (const shared_ptr<Content> &content) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->contents.push_back(content);
|
||||
}
|
||||
|
||||
void ChatMessage::removeContent (const shared_ptr<const Content> &content) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->contents.remove(const_pointer_cast<Content>(content));
|
||||
}
|
||||
|
||||
string ChatMessage::getCustomHeaderValue (const string &headerName) const {
|
||||
L_D(const ChatMessage);
|
||||
try {
|
||||
return d->customHeaders.at(headerName);
|
||||
} catch (const exception &) {
|
||||
// Key doesn't exist.
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
void ChatMessage::addCustomHeader (const string &headerName, const string &headerValue) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->customHeaders[headerName] = headerValue;
|
||||
}
|
||||
|
||||
void ChatMessage::removeCustomHeader (const string &headerName) {
|
||||
L_D(ChatMessage);
|
||||
if (d->isReadOnly) return;
|
||||
|
||||
d->customHeaders.erase(headerName);
|
||||
}
|
||||
|
||||
LINPHONE_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -64,16 +64,16 @@ public:
|
|||
LinphoneChatMessage * getBackPtr();
|
||||
|
||||
std::shared_ptr<ChatRoom> getChatRoom () const;
|
||||
void setChatRoom (std::shared_ptr<ChatRoom> cr);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Methods
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void updateState(State state);
|
||||
void send();
|
||||
void reSend();
|
||||
void sendImdn();
|
||||
void sendDeliveryNotification();
|
||||
void sendImdn(ImdnType imdnType, LinphoneReason reason);
|
||||
void sendDeliveryNotification(LinphoneReason reason);
|
||||
void sendDisplayNotification();
|
||||
int uploadFile();
|
||||
int downloadFile();
|
||||
|
|
@ -119,10 +119,24 @@ public:
|
|||
|
||||
bool isToBeStored() const;
|
||||
void setIsToBeStored(bool store);
|
||||
|
||||
const LinphoneErrorInfo * getErrorInfo ();
|
||||
|
||||
bool isReadOnly () const;
|
||||
|
||||
std::list<std::shared_ptr<const Content> > getContents () const;
|
||||
void addContent (const std::shared_ptr<Content> &content);
|
||||
void removeContent (const std::shared_ptr<const Content> &content);
|
||||
|
||||
std::string getCustomHeaderValue (const std::string &headerName) const;
|
||||
void addCustomHeader (const std::string &headerName, const std::string &headerValue);
|
||||
void removeCustomHeader (const std::string &headerName);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Deprecated methods, only used for C wrapper
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void setChatRoom (std::shared_ptr<ChatRoom> chatRoom);
|
||||
|
||||
std::string getContentType() const;
|
||||
void setContentType(std::string contentType);
|
||||
|
|
@ -130,8 +144,8 @@ public:
|
|||
std::string getText() const;
|
||||
void setText(std::string text);
|
||||
|
||||
std::shared_ptr<Content> getFileTransferInformation() const;
|
||||
void setFileTransferInformation(std::shared_ptr<Content> content);
|
||||
LinphoneContent * getFileTransferInformation() const;
|
||||
void setFileTransferInformation(LinphoneContent *content);
|
||||
|
||||
unsigned int getStorageId() const;
|
||||
void setStorageId(unsigned int id);
|
||||
|
|
@ -150,24 +164,6 @@ public:
|
|||
void addSalCustomHeader(std::string name, std::string value);
|
||||
void removeSalCustomHeader(std::string name);
|
||||
std::string getSalCustomHeaderValue(std::string name);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
std::shared_ptr<const ErrorInfo> getErrorInfo () const;
|
||||
|
||||
void send ();
|
||||
|
||||
bool containsReadableText () const;
|
||||
|
||||
bool isReadOnly () const;
|
||||
|
||||
std::list<std::shared_ptr<const Content> > getContents () const;
|
||||
void addContent (const std::shared_ptr<Content> &content);
|
||||
void removeContent (const std::shared_ptr<const Content> &content);
|
||||
|
||||
std::string getCustomHeaderValue (const std::string &headerName) const;
|
||||
void addCustomHeader (const std::string &headerName, const std::string &headerValue);
|
||||
void removeCustomHeader (const std::string &headerName);
|
||||
|
||||
protected:
|
||||
explicit ChatMessage (ChatMessagePrivate &p);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue