static gboolean link_event_handler(GtkTextTag *tag, GObject *text_view,GdkEvent *event, GtkTextIter *iter, GtkWidget *chat_view) { if(event->type == GDK_BUTTON_PRESS) { GtkTextIter uri_begin = *iter; GtkTextIter uri_end = *iter; gchar *uri = NULL; LinphoneChatRoom *chat_room = (LinphoneChatRoom *)g_object_get_data(G_OBJECT(chat_view), "cr"); gtk_text_iter_backward_to_tag_toggle(&uri_begin, tag); gtk_text_iter_forward_to_tag_toggle(&uri_end, tag); uri = gtk_text_iter_get_slice(&uri_begin, &uri_end); if(((GdkEventButton *)event)->button == 1) { linphone_gtk_open_browser(uri); } else if(((GdkEventButton *)event)->button == 3) { GtkMenu *menu = GTK_MENU(g_object_get_data(text_view, "link_ctx_menu")); g_object_set_data_full(G_OBJECT(menu), "uri", g_strdup(uri), g_free); gtk_menu_popup(menu, NULL, NULL, NULL, NULL, 3, gdk_event_get_time(event)); } g_free(uri); linphone_chat_room_mark_as_read(chat_room); linphone_gtk_friend_list_update_chat_picture(); return TRUE; } return FALSE; }
// Messages Received (with attachments) static void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *msg) { qDebug() << "Unread:" << linphone_chat_room_get_unread_messages_count(room); linphone_chat_room_mark_as_read(room); QLinPhoneCore *lcc = static_cast<QLinPhoneCore *>(linphone_core_get_user_data(lc)); lcc->messageReceivedCb(msg); }
/* Messages with attachments */ static void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message) { Q_UNUSED(lc) Q_UNUSED(room) qDebug() << "Unread:" << linphone_chat_room_get_unread_messages_count(room); linphone_chat_room_mark_as_read(room); SipClient *sc = SipClient::instance(); sc->messageReceivedCb(message); }
void linphone_gtk_compose_text(void) { GtkWidget *main_window=linphone_gtk_get_main_window(); GtkWidget *friendlist=linphone_gtk_get_widget(main_window,"contact_list"); GtkWidget *w=(GtkWidget*)g_object_get_data(G_OBJECT(friendlist),"chatview"); LinphoneChatRoom *cr=g_object_get_data(G_OBJECT(w),"cr"); if (cr) { linphone_chat_room_compose(cr); linphone_chat_room_mark_as_read(cr); linphone_gtk_friend_list_update_chat_picture(); } }
void linphone_gtk_quit_chatroom(LinphoneChatRoom *cr) { GtkWidget *main_window=linphone_gtk_get_main_window (); GtkWidget *nb=linphone_gtk_get_widget(main_window,"viewswitch"); GtkWidget *friendlist=linphone_gtk_get_widget(main_window,"contact_list"); GtkWidget *w=g_object_get_data(G_OBJECT(friendlist),"chatview"); gchar *from; g_return_if_fail(w!=NULL); gtk_notebook_remove_page(GTK_NOTEBOOK(nb),gtk_notebook_page_num(GTK_NOTEBOOK(nb),w)); linphone_chat_room_mark_as_read(cr); linphone_gtk_friend_list_update_chat_picture(); g_object_set_data(G_OBJECT(friendlist),"chatview",NULL); from=g_object_get_data(G_OBJECT(w),"from_message"); if (from){ g_object_set_data(G_OBJECT(w),"from_message",NULL); g_free(from); } g_object_set_data(G_OBJECT(w),"cr",NULL); linphone_gtk_friend_list_set_active_address(NULL); gtk_widget_destroy(w); }