]> git.0d.be Git - empathy.git/commitdiff
Make chatroom manager retain room's "always_urgent" state
authorJonas Bonn <jonas@southpole.se>
Fri, 5 Mar 2010 15:52:08 +0000 (16:52 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 27 May 2010 15:00:15 +0000 (17:00 +0200)
This patch adds the always_urgent property to the list of chatroom
properties that are saved by the chatroom manager for the favorite
chatrooms.  This allows Empathy to bring favorite chatrooms back
up with the same notification properties they had the last time they
were used.

This seems reasonable as a room marked as "Notify Always" will most likely
be of such a character that this would be a reasonable setting every time
the room is joined.

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

index cf3b75331c2d96fe8630cc93447f99812ece564d..57aa75402202d1142acdf8ac15b3eac52c6d594b 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/interfaces.h>
+#include <telepathy-glib/util.h>
 
 #include "empathy-tp-chat.h"
 #include "empathy-chatroom-manager.h"
@@ -118,6 +119,9 @@ chatroom_manager_file_save (EmpathyChatroomManager *manager)
                xmlNewTextChild (node, NULL, (const xmlChar *) "auto_connect",
                        empathy_chatroom_get_auto_connect (chatroom) ?
                        (const xmlChar *) "yes" : (const xmlChar *) "no");
+               xmlNewTextChild (node, NULL, (const xmlChar *) "always_urgent",
+                       empathy_chatroom_is_always_urgent (chatroom) ?
+                       (const xmlChar *) "yes" : (const xmlChar *) "no");
        }
 
        /* Make sure the XML is indented properly */
@@ -190,6 +194,7 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
        gchar                     *room;
        gchar                     *account_id;
        gboolean                   auto_connect;
+       gboolean                   always_urgent;
 
        priv = GET_PRIV (manager);
 
@@ -197,6 +202,7 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
        name = NULL;
        room = NULL;
        auto_connect = TRUE;
+       always_urgent = FALSE;
        account_id = NULL;
 
        for (child = node->children; child; child = child->next) {
@@ -222,6 +228,13 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
                                auto_connect = FALSE;
                        }
                }
+               else if (!tp_strdiff (tag, "always_urgent")) {
+                       if (strcmp (str, "yes") == 0) {
+                               always_urgent = TRUE;
+                       } else {
+                               always_urgent = FALSE;
+                       }
+               }
                else if (strcmp (tag, "account") == 0) {
                        account_id = g_strdup (str);
                }
@@ -240,6 +253,7 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
 
        chatroom = empathy_chatroom_new_full (account, room, name, auto_connect);
        empathy_chatroom_set_favorite (chatroom, TRUE);
+       empathy_chatroom_set_always_urgent (chatroom, always_urgent);
        add_chatroom (manager, chatroom);
        g_signal_emit (manager, signals[CHATROOM_ADDED], 0, chatroom);
 
index df6b953f6e196917a180134c7615509d298b9334..d40cae23ad487762a627b93aaf04416805a88f29 100644 (file)
@@ -8,10 +8,11 @@
 <!ELEMENT chatrooms (chatroom*)>
 
 <!ELEMENT chatroom 
-    (name,room,account,(auto_connect?))>
+    (name,room,account,(auto_connect?),(always_urgent?))>
 
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT room (#PCDATA)>
 <!ELEMENT auto_connect (#PCDATA)>
+<!ELEMENT always_urgent (#PCDATA)>
 <!ELEMENT account (#PCDATA)>