]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-roster-model.c
Updated Czech translation
[empathy.git] / libempathy-gtk / empathy-roster-model.c
index ce86e58a698d5119c2981a1c8a1bc0b0f8db94d0..994ab9896435704e67196468d7a48ebce9d3b410 100644 (file)
@@ -18,7 +18,6 @@
  * 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)
@@ -27,6 +26,7 @@ enum
 {
   SIG_INDIVIDUAL_ADDED,
   SIG_INDIVIDUAL_REMOVED,
+  SIG_GROUPS_CHANGED,
   LAST_SIGNAL
 };
 
@@ -50,6 +50,16 @@ empathy_roster_model_default_init (EmpathyRosterModelInterface *iface)
         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 *****/
@@ -68,8 +78,26 @@ empathy_roster_model_fire_individual_removed (EmpathyRosterModel *self,
   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)
 {
@@ -82,3 +110,27 @@ 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);
+}