static void webkit_chat_container_ready(ChatView* self) { /* The webkit chat container has loaded the javascript libraries, we can * now use it. */ ChatViewPrivate *priv = CHAT_VIEW_GET_PRIVATE(self); webkit_chat_container_clear( WEBKIT_CHAT_CONTAINER(priv->webkit_chat_container) ); /* print the text recordings */ if (priv->call) { print_text_recording(priv->call->peerContactMethod()->textRecording(), self); } else if (priv->cm) { print_text_recording(priv->cm->textRecording(), self); } else if (priv->person) { /* get the selected cm and print the text recording */ selected_cm_changed(self); } }
GtkWidget * chat_view_new_call(Call *call) { g_return_val_if_fail(call, nullptr); ChatView *self = CHAT_VIEW(g_object_new(CHAT_VIEW_TYPE, NULL)); ChatViewPrivate *priv = CHAT_VIEW_GET_PRIVATE(self); priv->call = call; auto cm = priv->call->peerContactMethod(); print_text_recording(cm->textRecording(), self); return (GtkWidget *)self; }
static void selected_cm_changed(GtkComboBox *box, ChatView *self) { g_return_if_fail(IS_CHAT_VIEW(self)); ChatViewPrivate *priv = CHAT_VIEW_GET_PRIVATE(self); auto cms = priv->person->phoneNumbers(); auto active = gtk_combo_box_get_active(box); if (active >= 0 && active < cms.size()) { print_text_recording(cms.at(active)->textRecording(), self); } else { g_warning("no valid ContactMethod selected to display chat conversation"); } }
static void selected_cm_changed(ChatView *self) { auto priv = CHAT_VIEW_GET_PRIVATE(self); /* make sure the webkit view is ready, in case we get this signal before it is */ if (!webkit_chat_container_is_ready(WEBKIT_CHAT_CONTAINER(priv->webkit_chat_container))) return; auto cm = get_active_contactmethod(self); if (cm){ print_text_recording(cm->textRecording(), self); } else { g_warning("no valid ContactMethod selected to display chat conversation"); } }
GtkWidget * chat_view_new_cm(ContactMethod *cm) { g_return_val_if_fail(cm, nullptr); ChatView *self = CHAT_VIEW(g_object_new(CHAT_VIEW_TYPE, NULL)); ChatViewPrivate *priv = CHAT_VIEW_GET_PRIVATE(self); priv->cm = cm; print_text_recording(priv->cm->textRecording(), self); update_name(self); gtk_widget_show(priv->hbox_chat_info); return (GtkWidget *)self; }