aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--TODO1
-rw-r--r--libempathy-gtk/empathy-main-window.c43
-rw-r--r--libempathy-gtk/gossip-new-chatroom-dialog.c66
4 files changed, 51 insertions, 69 deletions
diff --git a/ChangeLog b/ChangeLog
index df6ac5037..069075904 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2007-05-31 Xavier Claessens <xclaesse@gmail.com>
+ * libempathy-gtk/gossip-new-chatroom-dialog.c: No need to RequestHandle,
+ MissionControl has API to request the channel from handle string.
+
+ * libempathy-gtk/empathy-main-window.c: Request room channel when
+ clicking on favorite rooms.
+
+ * TODO: Add a task: supporting registering.
+
+2007-05-31 Xavier Claessens <xclaesse@gmail.com>
+
* libempathy/empathy-idle.c: Do not restore away presence message when
coming back after the user set manually to away.
diff --git a/TODO b/TODO
index 8367547b0..f6d5d9cd5 100644
--- a/TODO
+++ b/TODO
@@ -10,6 +10,7 @@ Things you can do if you want to help:
- Remove Quit option everywhere, empathy is a session service and shouldn't be leaved.
- Add sound events
- Import loggin system from gossip
+ - Add register capability in GossipAccountsDialog if the profile says it's supported.
- Testing and Bugfixing.
SoC projects:
diff --git a/libempathy-gtk/empathy-main-window.c b/libempathy-gtk/empathy-main-window.c
index befe2f531..1ae227410 100644
--- a/libempathy-gtk/empathy-main-window.c
+++ b/libempathy-gtk/empathy-main-window.c
@@ -111,6 +111,7 @@ static void main_window_favorite_chatroom_menu_activate_cb (GtkMenuItem
static void main_window_favorite_chatroom_menu_update (EmpathyMainWindow *window);
static void main_window_favorite_chatroom_menu_add (EmpathyMainWindow *window,
GossipChatroom *chatroom);
+static void main_window_favorite_chatroom_join (GossipChatroom *chatroom);
static void main_window_chat_quit_cb (GtkWidget *widget,
EmpathyMainWindow *window);
static void main_window_chat_new_message_cb (GtkWidget *widget,
@@ -446,17 +447,7 @@ static void
main_window_favorite_chatroom_menu_activate_cb (GtkMenuItem *menu_item,
GossipChatroom *chatroom)
{
-/*FIXME:
- GossipSession *session;
- GossipAccount *account;
- GossipChatroomProvider *provider;
-
- session = gossip_app_get_session ();
- account = gossip_chatroom_get_account (chatroom);
- provider = gossip_session_get_chatroom_provider (session, account);
-
- gossip_group_chat_new (provider, chatroom);
-*/
+ main_window_favorite_chatroom_join (chatroom);
}
static void
@@ -502,6 +493,28 @@ main_window_favorite_chatroom_menu_add (EmpathyMainWindow *window,
}
static void
+main_window_favorite_chatroom_join (GossipChatroom *chatroom)
+{
+ MissionControl *mc;
+ McAccount *account;
+ const gchar *room;
+
+ mc = gossip_mission_control_new ();
+ account = gossip_chatroom_get_account (chatroom);
+ room = gossip_chatroom_get_room (chatroom);
+
+ gossip_debug (DEBUG_DOMAIN, "Requesting channel for '%s'", room);
+
+ mission_control_request_channel_with_string_handle (mc,
+ account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ room,
+ TP_HANDLE_TYPE_ROOM,
+ NULL, NULL);
+ g_object_unref (mc);
+}
+
+static void
main_window_chat_quit_cb (GtkWidget *widget,
EmpathyMainWindow *window)
{
@@ -533,7 +546,13 @@ static void
main_window_room_join_favorites_cb (GtkWidget *widget,
EmpathyMainWindow *window)
{
- //gossip_session_chatroom_join_favorites (window->session);
+ GList *chatrooms, *l;
+
+ chatrooms = gossip_chatroom_manager_get_chatrooms (window->chatroom_manager, NULL);
+ for (l = chatrooms; l; l = l->next) {
+ main_window_favorite_chatroom_join (l->data);
+ }
+ g_list_free (chatrooms);
}
static void
diff --git a/libempathy-gtk/gossip-new-chatroom-dialog.c b/libempathy-gtk/gossip-new-chatroom-dialog.c
index 838f90a74..81594f1d1 100644
--- a/libempathy-gtk/gossip-new-chatroom-dialog.c
+++ b/libempathy-gtk/gossip-new-chatroom-dialog.c
@@ -128,10 +128,6 @@ static void new_chatroom_dialog_model_row_deleted_cb (GtkTreeMode
static void new_chatroom_dialog_model_selection_changed (GtkTreeSelection *selection,
GossipNewChatroomDialog *dialog);
static void new_chatroom_dialog_join (GossipNewChatroomDialog *dialog);
-static void new_chatroom_dialog_request_handles_cb (DBusGProxy *proxy,
- GArray *handles,
- GError *error,
- McAccount *account);
static void new_chatroom_dialog_entry_changed_cb (GtkWidget *entry,
GossipNewChatroomDialog *dialog);
static void new_chatroom_dialog_browse_start (GossipNewChatroomDialog *dialog);
@@ -604,12 +600,10 @@ new_chatroom_dialog_join (GossipNewChatroomDialog *dialog)
McAccount *account;
GossipAccountChooser *account_chooser;
MissionControl *mc;
- TpConn *tp_conn;
GList *chatrooms, *l;
const gchar *room;
const gchar *server = NULL;
gchar *room_name = NULL;
- const gchar *room_names[2] = {NULL, NULL};
chatrooms = new_chatroom_dialog_model_get_selected (dialog);
if (chatrooms) {
@@ -626,66 +620,24 @@ new_chatroom_dialog_join (GossipNewChatroomDialog *dialog)
}
account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
account = gossip_account_chooser_get_account (account_chooser);
- mc = gossip_mission_control_new ();
- tp_conn = mission_control_get_connection (mc, account, NULL);
-
- if (!tp_conn) {
- g_object_unref (mc);
- return;
- }
if (!G_STR_EMPTY (server)) {
room_name = g_strconcat (room, "@", server, NULL);
- room_names[0] = room_name;
} else {
- room_names[0] = room;
+ room_name = g_strdup (room);
}
- gossip_debug (DEBUG_DOMAIN, "Requesting handle for room '%s'",
- room_names[0]);
-
- /* Gives the ref of account/tp_conn to the callback */
- tp_conn_request_handles_async (DBUS_G_PROXY (tp_conn),
- TP_HANDLE_TYPE_ROOM,
- room_names,
- (tp_conn_request_handles_reply)
- new_chatroom_dialog_request_handles_cb,
- account);
- g_free (room_name);
- g_object_unref (mc);
-}
-
-static void
-new_chatroom_dialog_request_handles_cb (DBusGProxy *proxy,
- GArray *handles,
- GError *error,
- McAccount *account)
-{
- MissionControl *mc;
- guint handle;
-
- if (error) {
- gossip_debug (DEBUG_DOMAIN,
- "Error requesting room handle: %s",
- error ? error->message : "No error given");
- goto OUT;
- }
+ gossip_debug (DEBUG_DOMAIN, "Requesting channel for '%s'", room_name);
mc = gossip_mission_control_new ();
- handle = g_array_index (handles, guint, 0);
-
- gossip_debug (DEBUG_DOMAIN, "Got handle %d, requesting channel", handle);
- mission_control_request_channel (mc,
- account,
- TP_IFACE_CHANNEL_TYPE_TEXT,
- handle,
- TP_HANDLE_TYPE_ROOM,
- NULL, NULL);
+ mission_control_request_channel_with_string_handle (mc,
+ account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ room_name,
+ TP_HANDLE_TYPE_ROOM,
+ NULL, NULL);
+ g_free (room_name);
g_object_unref (mc);
-
-OUT:
- g_object_unref (account);
- g_object_unref (proxy);
}
static void