diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-10-13 15:55:10 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-10-13 15:55:10 +0800 |
commit | 69210acf76dceea939ce6844bab411e0c8e63343 (patch) | |
tree | c3f88f209e441f7ec40d7685445699aa2236f1e4 | |
parent | 91ecb23e1dbfdff66bf480d856f0f6b918ca0dbb (diff) | |
download | gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar.gz gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar.bz2 gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar.lz gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar.xz gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.tar.zst gsoc2013-empathy-69210acf76dceea939ce6844bab411e0c8e63343.zip |
automatically save the chatroom mgr XML file when one chatroom is modified
svn path=/trunk/; revision=1568
-rw-r--r-- | libempathy/empathy-chatroom-manager.c | 17 | ||||
-rw-r--r-- | tests/check-empathy-chatroom-manager.c | 74 |
2 files changed, 87 insertions, 4 deletions
diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c index fa12cd277..373ac8c29 100644 --- a/libempathy/empathy-chatroom-manager.c +++ b/libempathy/empathy-chatroom-manager.c @@ -270,9 +270,9 @@ reset_save_timeout (EmpathyChatroomManager *self) } static void -chatroom_favorite_changed_cb (EmpathyChatroom *chatroom, - GParamSpec *spec, - EmpathyChatroomManager *self) +chatroom_changed_cb (EmpathyChatroom *chatroom, + GParamSpec *spec, + EmpathyChatroomManager *self) { reset_save_timeout (self); } @@ -285,8 +285,17 @@ add_chatroom (EmpathyChatroomManager *self, priv->chatrooms = g_list_prepend (priv->chatrooms, g_object_ref (chatroom)); + /* FIXME: disconnect when removed */ g_signal_connect (chatroom, "notify::favorite", - G_CALLBACK (chatroom_favorite_changed_cb), self); + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::name", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::auto-connect", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::room", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::account", + G_CALLBACK (chatroom_changed_cb), self); } gboolean diff --git a/tests/check-empathy-chatroom-manager.c b/tests/check-empathy-chatroom-manager.c index fa0be544d..e59fe7020 100644 --- a/tests/check-empathy-chatroom-manager.c +++ b/tests/check-empathy-chatroom-manager.c @@ -294,6 +294,79 @@ START_TEST (test_empathy_chatroom_manager_change_favorite) } END_TEST +START_TEST (test_empathy_chatroom_manager_change_chatroom) +{ + EmpathyChatroomManager *mgr; + gchar *cmd; + gchar *file; + McAccount *account; + struct chatroom_t chatrooms[] = { + { "name1", "room1", TRUE, TRUE }, + { "name2", "room2", FALSE, TRUE }}; + EmpathyChatroom *chatroom; + + account = create_test_account (); + + /* + copy_xml_file (CHATROOM_SAMPLE, CHATROOM_FILE); + + file = get_user_xml_file (CHATROOM_FILE); + */ + copy_xml_file (CHATROOM_SAMPLE, "foo.xml"); + + file = get_user_xml_file ("foo.xml"); + /* change the chatrooms XML file to use the account we just created */ + cmd = g_strdup_printf ("sed -i 's/CHANGE_ME/%s/' %s", + mc_account_get_unique_name (account), file); + system (cmd); + g_free (cmd); + + mgr = empathy_chatroom_manager_new (file); + + check_chatrooms_list (mgr, account, chatrooms, 2); + + /* change room2 name */ + chatroom = empathy_chatroom_manager_find (mgr, account, "room2"); + fail_if (chatroom == NULL); + empathy_chatroom_set_name (chatroom, "new_name"); + + /* reload chatrooms file */ + g_object_unref (mgr); + mgr = empathy_chatroom_manager_new (file); + + chatrooms[1].name = "new_name"; + check_chatrooms_list (mgr, account, chatrooms, 2); + + /* change room2 auto-connect status */ + chatroom = empathy_chatroom_manager_find (mgr, account, "room2"); + fail_if (chatroom == NULL); + empathy_chatroom_set_auto_connect (chatroom, TRUE); + + /* reload chatrooms file */ + g_object_unref (mgr); + mgr = empathy_chatroom_manager_new (file); + + chatrooms[1].auto_connect = TRUE; + check_chatrooms_list (mgr, account, chatrooms, 2); + + /* change room2 room */ + chatroom = empathy_chatroom_manager_find (mgr, account, "room2"); + fail_if (chatroom == NULL); + empathy_chatroom_set_room (chatroom, "new_room"); + + /* reload chatrooms file */ + g_object_unref (mgr); + mgr = empathy_chatroom_manager_new (file); + + chatrooms[1].room = "new_room"; + check_chatrooms_list (mgr, account, chatrooms, 2); + + g_object_unref (mgr); + g_free (file); + destroy_test_account (account); +} +END_TEST + TCase * make_empathy_chatroom_manager_tcase (void) { @@ -302,5 +375,6 @@ make_empathy_chatroom_manager_tcase (void) tcase_add_test (tc, test_empathy_chatroom_manager_add); tcase_add_test (tc, test_empathy_chatroom_manager_remove); tcase_add_test (tc, test_empathy_chatroom_manager_change_favorite); + tcase_add_test (tc, test_empathy_chatroom_manager_change_chatroom); return tc; } |