]> git.0d.be Git - empathy.git/commitdiff
Add a FLAGS column to EmpathyContactListStore
authorDavyd Madeley <davyd@madeley.id.au>
Fri, 24 Apr 2009 06:47:31 +0000 (14:47 +0800)
committerDavyd Madeley <davyd@madeley.id.au>
Wed, 15 Jul 2009 10:12:15 +0000 (11:12 +0100)
libempathy-gtk/empathy-contact-list-store.c
libempathy-gtk/empathy-contact-list-store.h

index 0e9372be189bbb9fbea268995748fb7c2481630e..33cccec012eb251661053321555c7c3b3d16f572 100644 (file)
@@ -33,6 +33,9 @@
 #include <telepathy-glib/util.h>
 
 #include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-enum-types.h>
+#include <libempathy/empathy-contact-manager.h>
+
 #include "empathy-contact-list-store.h"
 #include "empathy-ui-utils.h"
 #include "empathy-gtk-enum-types.h"
@@ -725,19 +728,22 @@ static void
 contact_list_store_setup (EmpathyContactListStore *store)
 {
        EmpathyContactListStorePriv *priv;
-       GType                       types[] = {G_TYPE_STRING,        /* Status icon-name */
-                                              GDK_TYPE_PIXBUF,      /* Avatar pixbuf */
-                                              G_TYPE_BOOLEAN,       /* Avatar pixbuf visible */
-                                              G_TYPE_STRING,        /* Name */
-                                              G_TYPE_STRING,        /* Status string */
-                                              G_TYPE_BOOLEAN,       /* Show status */
-                                              EMPATHY_TYPE_CONTACT, /* Contact type */
-                                              G_TYPE_BOOLEAN,       /* Is group */
-                                              G_TYPE_BOOLEAN,       /* Is active */
-                                              G_TYPE_BOOLEAN,       /* Is online */
-                                              G_TYPE_BOOLEAN,       /* Is separator */
-                                              G_TYPE_BOOLEAN,       /* Can make audio calls */
-                                              G_TYPE_BOOLEAN};      /* Can make video calls */
+       GType types[] = {
+               G_TYPE_STRING,        /* Status icon-name */
+               GDK_TYPE_PIXBUF,      /* Avatar pixbuf */
+               G_TYPE_BOOLEAN,       /* Avatar pixbuf visible */
+               G_TYPE_STRING,        /* Name */
+               G_TYPE_STRING,        /* Status string */
+               G_TYPE_BOOLEAN,       /* Show status */
+               EMPATHY_TYPE_CONTACT, /* Contact type */
+               G_TYPE_BOOLEAN,       /* Is group */
+               G_TYPE_BOOLEAN,       /* Is active */
+               G_TYPE_BOOLEAN,       /* Is online */
+               G_TYPE_BOOLEAN,       /* Is separator */
+               G_TYPE_BOOLEAN,       /* Can make audio calls */
+               G_TYPE_BOOLEAN,       /* Can make video calls */
+               EMPATHY_TYPE_CONTACT_LIST_FLAGS, /* Flags */
+       };
 
        priv = GET_PRIV (store);
 
@@ -851,6 +857,8 @@ contact_list_store_add_contact (EmpathyContactListStore *store,
        EmpathyContactListStorePriv *priv;
        GtkTreeIter                 iter;
        GList                      *groups = NULL, *l;
+       TpConnection               *connection;
+       EmpathyContactListFlags     flags;
 
        priv = GET_PRIV (store);
 
@@ -863,6 +871,10 @@ contact_list_store_add_contact (EmpathyContactListStore *store,
                groups = empathy_contact_list_get_groups (priv->list, contact);
        }
 
+       connection = empathy_contact_get_connection (contact);
+       flags = empathy_contact_manager_get_flags_for_connection (
+                       EMPATHY_CONTACT_MANAGER (priv->list), connection);
+
        /* If no groups just add it at the top level. */
        if (!groups) {
                gtk_tree_store_append (GTK_TREE_STORE (store), &iter, NULL);
@@ -877,6 +889,7 @@ contact_list_store_add_contact (EmpathyContactListStore *store,
                                    EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
                                      empathy_contact_get_capabilities (contact) &
                                        EMPATHY_CAPABILITIES_VIDEO,
+                                   EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, flags,
                                    -1);
        }
 
@@ -899,6 +912,7 @@ contact_list_store_add_contact (EmpathyContactListStore *store,
                                    EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
                                      empathy_contact_get_capabilities (contact) &
                                        EMPATHY_CAPABILITIES_VIDEO,
+                                   EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, flags,
                                    -1);
                g_free (l->data);
        }
index 007a6b069256049564dbf403d3b561dd0661670a..f9785399115de60d99dd93a17fccabeed586dea1 100644 (file)
@@ -62,6 +62,7 @@ typedef enum {
        EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR,
        EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL,
        EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
+       EMPATHY_CONTACT_LIST_STORE_COL_FLAGS,
        EMPATHY_CONTACT_LIST_STORE_COL_COUNT
 } EmpathyContactListStoreCol;