*/
#include "config.h"
+#include "empathy-individual-store.h"
-#include <string.h>
-
-#include <glib.h>
#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-
-#include <folks/folks.h>
-#include <folks/folks-telepathy.h>
-#include <telepathy-glib/util.h>
+#include <tp-account-widgets/tpaw-utils.h>
-#include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-enum-types.h>
-
-#include "empathy-individual-store.h"
-#include "empathy-ui-utils.h"
#include "empathy-gtk-enum-types.h"
+#include "empathy-ui-utils.h"
+#include "empathy-utils.h"
#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
+#include "empathy-debug.h"
/* Active users are those which have recently changed state
* (e.g. online, offline or from normal to a busy state).
G_DEFINE_TYPE (EmpathyIndividualStore, empathy_individual_store,
GTK_TYPE_TREE_STORE);
-static const gchar * const *
-individual_get_client_types (FolksIndividual *individual)
-{
- GeeSet *personas;
- GeeIterator *iter;
- const gchar * const *types = NULL;
- FolksPresenceType presence_type = FOLKS_PRESENCE_TYPE_UNSET;
-
- personas = folks_individual_get_personas (individual);
- iter = gee_iterable_iterator (GEE_ITERABLE (personas));
- while (gee_iterator_next (iter))
- {
- FolksPresenceDetails *presence;
- FolksPersona *persona = gee_iterator_get (iter);
-
- /* We only want personas which have presence and a TpContact */
- if (!empathy_folks_persona_is_interesting (persona))
- goto while_finish;
-
- presence = FOLKS_PRESENCE_DETAILS (persona);
-
- if (folks_presence_details_typecmp (
- folks_presence_details_get_presence_type (presence),
- presence_type) > 0)
- {
- TpContact *tp_contact;
-
- presence_type = folks_presence_details_get_presence_type (presence);
-
- tp_contact = tpf_persona_get_contact (TPF_PERSONA (persona));
- if (tp_contact != NULL)
- types = tp_contact_get_client_types (tp_contact);
- }
-
-while_finish:
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
-
- return types;
-}
-
static void
add_individual_to_store (GtkTreeStore *store,
GtkTreeIter *iter,
empathy_individual_can_audio_video_call (individual, &can_audio_call,
&can_video_call, NULL);
- types = individual_get_client_types (individual);
+ types = empathy_individual_get_client_types (individual);
gtk_tree_store_insert_with_values (store, iter, parent, 0,
EMPATHY_INDIVIDUAL_STORE_COL_NAME,
}
}
-static GList *
-individual_store_find_contact (EmpathyIndividualStore *self,
+GList *
+/* (transfer full) free with empathy_individual_store_free_iters() */
+empathy_individual_store_find_contact (EmpathyIndividualStore *self,
FolksIndividual *individual)
{
GQueue *row_refs_queue;
return iters_list;
}
-static void
-free_iters (GList *iters)
+void
+empathy_individual_store_free_iters (GList *iters)
{
g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
g_list_free (iters);
GeeSet *group_set = NULL;
gboolean grouped = FALSE;
- if (EMP_STR_EMPTY (folks_alias_details_get_alias (
+ if (TPAW_STR_EMPTY (folks_alias_details_get_alias (
FOLKS_ALIAS_DETAILS (individual))))
return;
model = GTK_TREE_MODEL (self);
- iters = individual_store_find_contact (self, individual);
+ iters = empathy_individual_store_find_contact (self, individual);
for (l = iters; l; l = l->next)
{
GtkTreePath *path;
}
}
- free_iters (iters);
+ empathy_individual_store_free_iters (iters);
}
static void individual_store_contact_active_free (ShowActiveData *data);
{
GList *iters, *l;
- iters = individual_store_find_contact (data->store, individual);
+ iters = empathy_individual_store_find_contact (data->store, individual);
for (l = iters; l; l = l->next)
{
gtk_tree_store_set (GTK_TREE_STORE (data->store), l->data,
-1);
}
- free_iters (iters);
+ empathy_individual_store_free_iters (iters);
}
/* Free things */
model = GTK_TREE_MODEL (self);
- iters = individual_store_find_contact (self, individual);
+ iters = empathy_individual_store_find_contact (self, individual);
if (!iters)
{
in_list = FALSE;
empathy_individual_can_audio_video_call (individual, &can_audio_call,
&can_video_call, NULL);
- types = individual_get_client_types (individual);
+ types = empathy_individual_get_client_types (individual);
gtk_tree_store_set (GTK_TREE_STORE (self), l->data,
EMPATHY_INDIVIDUAL_STORE_COL_ICON_STATUS, pixbuf_status,
* timeout removes the user from the contact list, really we
* should remove the first timeout.
*/
- free_iters (iters);
+ empathy_individual_store_free_iters (iters);
}
static void
{
GeeIterator *iter;
- DEBUG ("Individual '%s' personas-changed.",
- folks_individual_get_id (individual));
-
iter = gee_iterable_iterator (GEE_ITERABLE (removed));
/* FIXME: libfolks hasn't grown capabilities support yet, so we have to go
* through the EmpathyContacts for them. */
g_assert (account_b != NULL);
/* protocol */
- ret_val = g_strcmp0 (tp_account_get_protocol (account_a),
- tp_account_get_protocol (account_b));
+ ret_val = g_strcmp0 (tp_account_get_protocol_name (account_a),
+ tp_account_get_protocol_name (account_b));
if (ret_val != 0)
goto out;