* Philip Withnall <philip.withnall@collabora.co.uk>
*/
-#include <config.h>
+#include "config.h"
-#include <string.h>
-#include <stdlib.h>
-
-#include <gtk/gtk.h>
#include <glib/gi18n-lib.h>
-#include <telepathy-glib/util.h>
-
-#include <folks/folks.h>
-#include <folks/folks-telepathy.h>
-
#ifdef HAVE_LIBCHAMPLAIN
#include <champlain/champlain.h>
#include <champlain-gtk/champlain-gtk.h>
#endif
-#include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-location.h>
-#include <libempathy/empathy-time.h>
+#include "empathy-utils.h"
+#include "empathy-location.h"
+#include "empathy-time.h"
#include "empathy-avatar-image.h"
#include "empathy-contactinfo-utils.h"
#include "empathy-groups-widget.h"
#include "empathy-gtk-enum-types.h"
-#include "empathy-individual-widget.h"
#include "empathy-ui-utils.h"
#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
+#include "empathy-debug.h"
/**
* SECTION:empathy-individual-widget
TpConnection *conn;
TpAccount *account;
- info = tp_contact_get_contact_info (contact);
+ info = tp_contact_dup_contact_info (contact);
info = g_list_sort (info, (GCompareFunc) empathy_contact_info_field_cmp);
for (l = info; l != NULL; l = l->next)
{
/* Add Title */
title = empathy_contact_info_field_label (field->field_name,
- field->parameters);
+ field->parameters, TRUE);
title_widget = gtk_label_new (title);
/* Add Value */
n_rows++;
}
- g_list_free (info);
+ tp_contact_info_list_free (info);
return n_rows;
}
#ifdef HAVE_LIBCHAMPLAIN
if ((g_hash_table_lookup (location, EMPATHY_LOCATION_LAT) != NULL) &&
- (g_hash_table_lookup (location, EMPATHY_LOCATION_LON) != NULL) &&
- !(priv->flags & EMPATHY_INDIVIDUAL_WIDGET_FOR_TOOLTIP))
+ (g_hash_table_lookup (location, EMPATHY_LOCATION_LON) != NULL))
{
/* Cannot be displayed in tooltips until Clutter-Gtk can deal with such
* windows */
types = tp_contact_get_client_types (priv->contact);
- if (types != NULL
- && g_strv_length ((gchar **) types) > 0
- && !tp_strdiff (types[0], "phone"))
+ if (empathy_client_types_contains_mobile_device ((GStrv) types))
{
gtk_widget_show (priv->hbox_client_types);
}
GtkWidget *status_label, *state_image;
const gchar *message;
gchar *markup_text = NULL;
+ FolksPresenceType presence;
+ gboolean visible = TRUE;
if (FOLKS_IS_INDIVIDUAL (folks_object))
grid = G_OBJECT (priv->individual_grid);
status_label = g_object_get_data (grid, "status-label");
state_image = g_object_get_data (grid, "state-image");
+ presence = folks_presence_details_get_presence_type (
+ FOLKS_PRESENCE_DETAILS (folks_object));
+ if (presence == FOLKS_PRESENCE_TYPE_UNKNOWN ||
+ presence == FOLKS_PRESENCE_TYPE_ERROR)
+ {
+ /* Don't display anything if we don't know the presence */
+ visible = FALSE;
+ goto out;
+ }
+
/* FIXME: Default messages should be moved into libfolks (bgo#627403) */
message = folks_presence_details_get_presence_message (
FOLKS_PRESENCE_DETAILS (folks_object));
if (EMP_STR_EMPTY (message))
{
- message = empathy_presence_get_default_message (
- folks_presence_details_get_presence_type (
- FOLKS_PRESENCE_DETAILS (folks_object)));
+ message = empathy_presence_get_default_message (presence);
}
if (message != NULL)
g_free (markup_text);
gtk_image_set_from_icon_name (GTK_IMAGE (state_image),
- empathy_icon_name_for_presence (
- folks_presence_details_get_presence_type (
- FOLKS_PRESENCE_DETAILS (folks_object))),
+ empathy_icon_name_for_presence (presence),
GTK_ICON_SIZE_BUTTON);
- gtk_widget_show (state_image);
+
+out:
+ gtk_widget_set_visible (status_label, visible);
+ gtk_widget_set_visible (state_image, visible);
}
static void
gtk_container_remove (GTK_CONTAINER (priv->vbox_individual),
GTK_WIDGET (priv->individual_grid));
+
+#ifdef HAVE_LIBCHAMPLAIN
+ if (priv->map_view_embed != NULL)
+ {
+ gtk_container_remove (GTK_CONTAINER (priv->viewport_map),
+ priv->map_view_embed);
+
+ priv->map_view_embed = NULL;
+ }
+#endif
+
priv->individual_grid = NULL;
}
}
else if (!was_showing_personas && will_show_personas)
{
- gboolean c;
-
/* Remove the old Individual grid */
individual_grid_destroy (self);
/* Set up all the Persona grids instead */
- for (c = gee_iterator_first (iter); c; c = gee_iterator_next (iter))
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
{
FolksPersona *persona = gee_iterator_get (iter);
add_persona (self, persona);
}
else if (was_showing_personas && !will_show_personas)
{
- gboolean c;
-
/* Remove all Personas */
- for (c = gee_iterator_first (iter); c; c = gee_iterator_next (iter))
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
{
FolksPersona *persona = gee_iterator_get (iter);
remove_persona (self, persona);