]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-chatroom-manager.c
Updated Swedish translation
[empathy.git] / libempathy / empathy-chatroom-manager.c
index bf9ecf11f02a4979707e2e1bb8bc6cefa6628046..3a117b18e85176c4eae84acc889db8a8aa98711d 100644 (file)
  */
 
 #include "config.h"
+#include "empathy-chatroom-manager.h"
 
-#include <string.h>
-#include <sys/types.h>
 #include <sys/stat.h>
-
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-
-#include <telepathy-glib/account-manager.h>
-#include <telepathy-glib/interfaces.h>
-#include <telepathy-glib/simple-observer.h>
-#include <telepathy-glib/util.h>
+#include <tp-account-widgets/tpaw-utils.h>
+#include <telepathy-glib/telepathy-glib-dbus.h>
 
 #include "empathy-client-factory.h"
-#include "empathy-tp-chat.h"
-#include "empathy-chatroom-manager.h"
 #include "empathy-utils.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include "empathy-debug.h"
 
 #define CHATROOMS_XML_FILENAME "chatrooms.xml"
-#define CHATROOMS_DTD_FILENAME "empathy-chatroom-manager.dtd"
+#define CHATROOMS_DTD_RESOURCENAME "/org/gnome/Empathy/empathy-chatroom-manager.dtd"
 #define SAVE_TIMER 4
 
 static EmpathyChatroomManager *chatroom_manager_singleton = NULL;
@@ -204,13 +195,15 @@ add_chatroom (EmpathyChatroomManager *self,
       G_CALLBACK (chatroom_changed_cb), self);
   g_signal_connect (chatroom, "notify::always_urgent",
       G_CALLBACK (chatroom_changed_cb), self);
+  g_signal_connect (chatroom, "notify::favorite",
+      G_CALLBACK (chatroom_changed_cb), self);
 }
 
 static void
 chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
     xmlNodePtr node)
 {
-  EmpathyChatroom *chatroom;
+  EmpathyChatroom *chatroom = NULL;
   TpAccount *account;
   xmlNodePtr child;
   gchar *str;
@@ -269,6 +262,11 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
       xmlFree (str);
     }
 
+  /* account has to be a valid Account object path */
+  if (!tp_dbus_check_valid_object_path (account_id, NULL) ||
+      !g_str_has_prefix (account_id, TP_ACCOUNT_OBJECT_PATH_BASE))
+    goto out;
+
   factory = empathy_client_factory_dup ();
 
   account = tp_simple_client_factory_ensure_account (
@@ -292,10 +290,11 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
   add_chatroom (manager, chatroom);
   g_signal_emit (manager, signals[CHATROOM_ADDED], 0, chatroom);
 
+out:
   g_free (name);
   g_free (room);
   g_free (account_id);
-  g_object_unref (chatroom);
+  tp_clear_object (&chatroom);
 }
 
 static gboolean
@@ -323,7 +322,7 @@ chatroom_manager_file_parse (EmpathyChatroomManager *manager,
       return FALSE;
     }
 
-  if (!empathy_xml_validate (doc, CHATROOMS_DTD_FILENAME))
+  if (!tpaw_xml_validate_from_resource (doc, CHATROOMS_DTD_RESOURCENAME))
     {
       g_warning ("Failed to validate file:'%s'", filename);
       xmlFreeDoc (doc);
@@ -512,7 +511,7 @@ account_manager_ready_cb (GObject *source_object,
   GError *error = NULL;
   GFile *file = NULL;
 
-  if (!tp_account_manager_prepare_finish (manager, result, &error))
+  if (!tp_proxy_prepare_finish (manager, result, &error))
     {
       DEBUG ("Failed to prepare account manager: %s", error->message);
       g_error_free (error);
@@ -569,7 +568,7 @@ empathy_chatroom_manager_constructor (GType type,
 
   priv->account_manager = tp_account_manager_dup ();
 
-  tp_account_manager_prepare_async (priv->account_manager, NULL,
+  tp_proxy_prepare_async (priv->account_manager, NULL,
       account_manager_ready_cb, g_object_ref (self));
 
   if (priv->file == NULL)
@@ -642,7 +641,7 @@ empathy_chatroom_manager_class_init (EmpathyChatroomManagerClass *klass)
       G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST,
       0, NULL, NULL,
-      g_cclosure_marshal_VOID__OBJECT,
+      g_cclosure_marshal_generic,
       G_TYPE_NONE,
       1, EMPATHY_TYPE_CHATROOM);
 
@@ -650,7 +649,7 @@ empathy_chatroom_manager_class_init (EmpathyChatroomManagerClass *klass)
       G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST,
       0, NULL, NULL,
-      g_cclosure_marshal_VOID__OBJECT,
+      g_cclosure_marshal_generic,
       G_TYPE_NONE,
       1, EMPATHY_TYPE_CHATROOM);