incomingcallview: show the peer's uri
In the case that the peer has a display name or is a contact, we
show the uri below so the user is aware of the number or ringId
being used for the call.
Change-Id: I3a59a34452110d1cebc8decde28599926d676d7a
Tuleap: #645
diff --git a/src/incomingcallview.cpp b/src/incomingcallview.cpp
index 6dfaa61..b7e0812 100644
--- a/src/incomingcallview.cpp
+++ b/src/incomingcallview.cpp
@@ -27,6 +27,8 @@
#include <person.h>
#include <globalinstances.h>
#include "native/pixbufmanipulator.h"
+#include <itemdataroles.h>
+#include <numbercategory.h>
struct _IncomingCallView
{
@@ -43,7 +45,8 @@
struct _IncomingCallViewPrivate
{
GtkWidget *image_incoming;
- GtkWidget *label_identity;
+ GtkWidget *label_name;
+ GtkWidget *label_uri;
GtkWidget *spinner_status;
GtkWidget *placeholder;
GtkWidget *label_status;
@@ -88,7 +91,8 @@
"/cx/ring/RingGnome/incomingcallview.ui");
gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, image_incoming);
- gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, label_identity);
+ gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, label_name);
+ gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, label_uri);
gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, spinner_status);
gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, placeholder);
gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), IncomingCallView, label_status);
@@ -168,9 +172,19 @@
gtk_image_set_from_pixbuf(GTK_IMAGE(priv->image_incoming), image.get());
/* get name */
- QVariant var = idx.model()->data(idx, static_cast<int>(Call::Role::Name));
- QByteArray ba_name = var.toString().toLocal8Bit();
- gtk_label_set_text(GTK_LABEL(priv->label_identity), ba_name.constData());
+ auto name = idx.model()->data(idx, static_cast<int>(Ring::Role::Name));
+ gtk_label_set_text(GTK_LABEL(priv->label_name), name.toString().toUtf8().constData());
+
+ /* get uri, if different from name */
+ auto uri = idx.model()->data(idx, static_cast<int>(Ring::Role::Number));
+ if (name.toString() != uri.toString()) {
+ auto cat_uri = g_strdup_printf("(%s) %s"
+ ,call->peerContactMethod()->category()->name().toUtf8().constData()
+ ,uri.toString().toUtf8().constData());
+ gtk_label_set_text(GTK_LABEL(priv->label_uri), cat_uri);
+ g_free(cat_uri);
+ gtk_widget_show(priv->label_uri);
+ }
/* change some things depending on call state */
update_state(view, call);