* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "config.h"
-
#include "empathy-roster-model.h"
G_DEFINE_INTERFACE (EmpathyRosterModel, empathy_roster_model, G_TYPE_OBJECT)
{
SIG_INDIVIDUAL_ADDED,
SIG_INDIVIDUAL_REMOVED,
+ SIG_GROUPS_CHANGED,
LAST_SIGNAL
};
0, NULL, NULL, NULL,
G_TYPE_NONE, 1,
FOLKS_TYPE_INDIVIDUAL);
+
+ signals[SIG_GROUPS_CHANGED] =
+ g_signal_new ("groups-changed",
+ EMPATHY_TYPE_ROSTER_MODEL,
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE, 3,
+ FOLKS_TYPE_INDIVIDUAL,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN);
}
/***** Restricted *****/
g_signal_emit (self, signals[SIG_INDIVIDUAL_REMOVED], 0, individual);
}
+void
+empathy_roster_model_fire_groups_changed (EmpathyRosterModel *self,
+ FolksIndividual *individual,
+ const gchar *group,
+ gboolean is_member)
+{
+ g_signal_emit (self, signals[SIG_GROUPS_CHANGED], 0, individual, group,
+ is_member);
+}
+
/***** Public *****/
+/**
+ * empathy_roster_model_get_individuals:
+ * @self: a #EmpathyRosterModel
+ *
+ * Returns all the individuals stored by @self.
+ *
+ * Returns: (transfer container): a #GList of #FolksIndividual
+ */
GList *
empathy_roster_model_get_individuals (EmpathyRosterModel *self)
{
return (* iface->get_individuals) (self);
}
+
+/**
+ * empathy_roster_model_dup_groups_for_individual:
+ * @self: a #EmpathyRosterModel
+ * @individual: a #FolksIndidivual
+ *
+ * Returns the groups of which @individual is a member of.
+ *
+ * Returns: (transfer full): a #GList of (gchar *) representing the
+ * groups of @individual
+ */
+GList *
+empathy_roster_model_dup_groups_for_individual (EmpathyRosterModel *self,
+ FolksIndividual *individual)
+{
+ EmpathyRosterModelInterface *iface;
+
+ g_return_val_if_fail (EMPATHY_IS_ROSTER_MODEL (self), NULL);
+
+ iface = EMPATHY_ROSTER_MODEL_GET_IFACE (self);
+ g_return_val_if_fail (iface->dup_groups_for_individual != NULL, NULL);
+
+ return (* iface->dup_groups_for_individual) (self, individual);
+}