aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2010-07-02 00:03:59 +0800
committerTravis Reitter <treitter@gmail.com>2010-07-21 07:12:36 +0800
commit2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e (patch)
tree3ecac9006bf0638fd3ec866bcaaa294bf92e73d0 /libempathy
parent2999dda22d4d80df40420334273fcbb7aadac091 (diff)
downloadgsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar.gz
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar.bz2
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar.lz
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar.xz
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.tar.zst
gsoc2013-empathy-2fcee569ba4bf86f78b6b5d6c12bfeeecbb1c47e.zip
Support removing groups
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-individual-manager.c26
-rw-r--r--libempathy/empathy-individual-manager.h3
2 files changed, 29 insertions, 0 deletions
diff --git a/libempathy/empathy-individual-manager.c b/libempathy/empathy-individual-manager.c
index ef2688b14..c2c2eefae 100644
--- a/libempathy/empathy-individual-manager.c
+++ b/libempathy/empathy-individual-manager.c
@@ -329,6 +329,32 @@ empathy_individual_manager_remove (EmpathyIndividualManager *self,
folks_individual_aggregator_remove_individual (priv->aggregator, individual);
}
+static void
+remove_group_cb (const gchar *id, FolksIndividual *individual,
+ const gchar *group)
+{
+ folks_groups_change_group (FOLKS_GROUPS (individual), group, FALSE);
+}
+
+void
+empathy_individual_manager_remove_group (EmpathyIndividualManager *manager,
+ const gchar *group)
+{
+ EmpathyIndividualManagerPriv *priv;
+ GHashTable *individuals;
+
+ g_return_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager));
+ g_return_if_fail (group != NULL);
+
+ priv = GET_PRIV (manager);
+
+ DEBUG (G_STRLOC ": removing group %s", group);
+
+ /* Remove every individual from the group */
+ individuals = folks_individual_aggregator_get_individuals (priv->aggregator);
+ g_hash_table_foreach (individuals, (GHFunc) remove_group_cb, group);
+}
+
EmpathyIndividualManagerFlags
empathy_individual_manager_get_flags_for_connection (
EmpathyIndividualManager *self,
diff --git a/libempathy/empathy-individual-manager.h b/libempathy/empathy-individual-manager.h
index 2fab1ffb0..66014bcbb 100644
--- a/libempathy/empathy-individual-manager.h
+++ b/libempathy/empathy-individual-manager.h
@@ -79,6 +79,9 @@ void empathy_individual_manager_remove (EmpathyIndividualManager *manager,
FolksIndividual *individual,
const gchar *message);
+void empathy_individual_manager_remove_group (EmpathyIndividualManager *manager,
+ const gchar *group);
+
EmpathyIndividualManagerFlags
empathy_individual_manager_get_flags_for_connection (
EmpathyIndividualManager *manager,