More work on chat_message.cpp

This commit is contained in:
Sylvain Berfini 2017-09-27 16:11:25 +02:00
parent f3aa06edc7
commit 21ddaf03d6
3 changed files with 15 additions and 9 deletions

View file

@ -1084,6 +1084,7 @@ void linphone_core_message_storage_set_debug(LinphoneCore *lc, bool_t debug);
void linphone_chat_message_set_time(LinphoneChatMessage* msg, time_t time);
void linphone_chat_message_set_incoming(LinphoneChatMessage *msg);
void linphone_chat_message_set_outgoing(LinphoneChatMessage *msg);
LinphoneChatMessageStateChangedCb linphone_chat_message_get_message_state_changed_cb(LinphoneChatMessage* msg);
void linphone_chat_message_set_message_state_changed_cb(LinphoneChatMessage* msg, LinphoneChatMessageStateChangedCb cb);
void linphone_chat_message_set_message_state_changed_cb_user_data(LinphoneChatMessage* msg, void *user_data);
void * linphone_chat_message_get_message_state_changed_cb_user_data(LinphoneChatMessage* msg);

View file

@ -300,6 +300,10 @@ LinphoneStatus linphone_chat_message_put_char(LinphoneChatMessage *msg, uint32_t
// Old listener
// =============================================================================
LinphoneChatMessageStateChangedCb linphone_chat_message_get_message_state_changed_cb(LinphoneChatMessage* msg) {
return msg->message_state_changed_cb;
}
void linphone_chat_message_set_message_state_changed_cb(LinphoneChatMessage* msg, LinphoneChatMessageStateChangedCb cb) {
msg->message_state_changed_cb = cb;
}

View file

@ -46,6 +46,8 @@ ChatMessagePrivate::ChatMessagePrivate (const shared_ptr<ChatRoom> &room)
ChatMessagePrivate::~ChatMessagePrivate () {}
// -----------------------------------------------------------------------------
// =============================================================================
// ChatMessage
// =============================================================================
@ -137,10 +139,9 @@ void ChatMessage::setState(State state) {
d->state = state;
LinphoneChatMessage *msg = L_GET_C_BACK_PTR(this);
/* TODO
if (msg->message_state_changed_cb) {
msg->message_state_changed_cb(msg, msg->state, msg->message_state_changed_user_data);
}*/
if (linphone_chat_message_get_message_state_changed_cb(msg)) {
linphone_chat_message_get_message_state_changed_cb(msg)(msg, (LinphoneChatMessageState)state, linphone_chat_message_get_message_state_changed_cb_user_data(msg));
}
LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(msg);
if (linphone_chat_message_cbs_get_msg_state_changed(cbs)) {
linphone_chat_message_cbs_get_msg_state_changed(cbs)(msg, linphone_chat_message_get_state(msg));
@ -160,12 +161,12 @@ void ChatMessage::setId (string id) {
bool ChatMessage::isRead() const {
return false;
/* TODO
L_D(const ChatMessage);
shared_ptr<ImNotifyPolicy> policy =d->chatRoom->core->getImNotifPolicy();
if (policy->getRecvImdnDisplayed() && d->state == Displayed) return true;
if (policy->getRecvImdnDelivered() && (d->state == DeliveredToUser || d->state == Displayed)) return true;
return d->state == Delivered || d->state == Displayed || d->state == DeliveredToUser;*/
LinphoneCore *lc = d->chatRoom->getCore();
LinphoneImNotifPolicy *policy = linphone_core_get_im_notif_policy(lc);
if (linphone_im_notif_policy_get_recv_imdn_displayed(policy) && d->state == Displayed) return true;
if (linphone_im_notif_policy_get_recv_imdn_delivered(policy) && (d->state == DeliveredToUser || d->state == Displayed)) return true;
return d->state == Delivered || d->state == Displayed || d->state == DeliveredToUser;
}
string ChatMessage::getAppdata () const {