]> git.0d.be Git - empathy.git/commitdiff
Add function ensure_chatroom to chatroom manager
authorJonas Bonn <jonas@southpole.se>
Fri, 5 Mar 2010 15:42:05 +0000 (16:42 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 27 May 2010 14:32:35 +0000 (16:32 +0200)
This function tries to find an existing chatroom, but if it fails
to do so it creates a new room and returns that instead.

libempathy/empathy-chatroom-manager.c
libempathy/empathy-chatroom-manager.h

index d5513caf12e0873a207b1c6b6ed9155279446d26..cf3b75331c2d96fe8630cc93447f99812ece564d 100644 (file)
@@ -632,6 +632,28 @@ empathy_chatroom_manager_find (EmpathyChatroomManager *manager,
        return NULL;
 }
 
+EmpathyChatroom *
+empathy_chatroom_manager_ensure_chatroom (EmpathyChatroomManager *manager,
+                                         TpAccount *account,
+                                         const gchar *room,
+                                         const gchar *name)
+{
+       EmpathyChatroom *chatroom;
+
+       chatroom = empathy_chatroom_manager_find (manager, account, room);
+
+       if (chatroom) {
+               return g_object_ref(chatroom);
+       } else {
+               chatroom = empathy_chatroom_new_full (account,
+                       room,
+                       name,
+                       FALSE);
+               empathy_chatroom_manager_add (manager, chatroom);
+               return chatroom;
+       }
+}
+
 GList *
 empathy_chatroom_manager_get_chatrooms (EmpathyChatroomManager *manager,
                                       TpAccount *account)
index 8ee2a897a93ce187ca5dc2ae3455e2f0d7c33913..9a1de1828642214f97d789701d5949e21fee544d 100644 (file)
@@ -62,6 +62,10 @@ void                   empathy_chatroom_manager_remove        (EmpathyChatroomMa
 EmpathyChatroom *       empathy_chatroom_manager_find          (EmpathyChatroomManager *manager,
                                                              TpAccount               *account,
                                                              const gchar             *room);
+EmpathyChatroom *      empathy_chatroom_manager_ensure_chatroom (EmpathyChatroomManager *manager,
+                                                             TpAccount               *account,
+                                                             const gchar             *room,
+                                                             const gchar             *name);
 GList *                empathy_chatroom_manager_get_chatrooms (EmpathyChatroomManager *manager,
                                                              TpAccount               *account);
 guint                  empathy_chatroom_manager_get_count     (EmpathyChatroomManager *manager,