*/
#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;
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;
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 (
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
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);
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);
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)
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);
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);