-static void empathy_contact_manager_class_init (EmpathyContactManagerClass *klass);
-static void empathy_contact_manager_init (EmpathyContactManager *manager);
-static void contact_manager_finalize (GObject *object);
-static void contact_manager_setup_foreach (McAccount *account,
- EmpathyContactList *list,
- EmpathyContactManager *manager);
-static gboolean contact_manager_find_foreach (McAccount *account,
- EmpathyContactList *list,
- ContactManagerFindData *data);
-static void contact_manager_add_account (EmpathyContactManager *manager,
- McAccount *account);
-static void contact_manager_added_cb (EmpathyContactList *list,
- GossipContact *contact,
- EmpathyContactManager *manager);
-static void contact_manager_removed_cb (EmpathyContactList *list,
- GossipContact *contact,
- EmpathyContactManager *manager);
-static void contact_manager_destroy_cb (EmpathyContactList *list,
- EmpathyContactManager *manager);
-static void contact_manager_rename_group_foreach (McAccount *account,
- EmpathyContactList *list,
- ContactManagerRenameGroupData *data);
-static void contact_manager_get_groups_foreach (McAccount *account,
- EmpathyContactList *list,
- GList **all_groups);
-static void contact_manager_get_contacts_foreach (McAccount *account,
- EmpathyContactList *list,
- GList **contacts);
-static void contact_manager_status_changed_cb (MissionControl *mc,
- TelepathyConnectionStatus status,
- McPresence presence,
- TelepathyConnectionStatusReason reason,
- const gchar *unique_name,
- EmpathyContactManager *manager);
-
-enum {
- CONTACT_ADDED,
- CONTACT_REMOVED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-G_DEFINE_TYPE (EmpathyContactManager, empathy_contact_manager, G_TYPE_OBJECT);
+static void empathy_contact_manager_class_init (EmpathyContactManagerClass *klass);
+static void contact_manager_iface_init (EmpathyContactListIface *iface);
+static void empathy_contact_manager_init (EmpathyContactManager *manager);
+static void contact_manager_finalize (GObject *object);
+static void contact_manager_setup (EmpathyContactList *manager);
+static GossipContact *contact_manager_find (EmpathyContactList *manager,
+ const gchar *id);
+static void contact_manager_add (EmpathyContactList *manager,
+ GossipContact *contact,
+ const gchar *message);
+static void contact_manager_remove (EmpathyContactList *manager,
+ GossipContact *contact,
+ const gchar *message);
+static GList * contact_manager_get_contacts (EmpathyContactList *manager);
+static void contact_manager_setup_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ EmpathyContactManager *manager);
+static gboolean contact_manager_find_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ ContactManagerFindData *data);
+static void contact_manager_add_account (EmpathyContactManager *manager,
+ McAccount *account);
+static void contact_manager_added_cb (EmpathyTpContactList *list,
+ GossipContact *contact,
+ EmpathyContactManager *manager);
+static void contact_manager_removed_cb (EmpathyTpContactList *list,
+ GossipContact *contact,
+ EmpathyContactManager *manager);
+static void contact_manager_destroy_cb (EmpathyTpContactList *list,
+ EmpathyContactManager *manager);
+static void contact_manager_rename_group_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ ContactManagerRenameGroupData *data);
+static void contact_manager_get_groups_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ GList **all_groups);
+static void contact_manager_get_contacts_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ GList **contacts);
+static void contact_manager_status_changed_cb (MissionControl *mc,
+ TelepathyConnectionStatus status,
+ McPresence presence,
+ TelepathyConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyContactManager *manager);
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyContactManager, empathy_contact_manager, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST,
+ contact_manager_iface_init));