diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/empathy-account-assistant.c | 27 | ||||
-rw-r--r-- | src/empathy-accounts-dialog.c | 35 | ||||
-rw-r--r-- | src/empathy.c | 77 |
3 files changed, 86 insertions, 53 deletions
diff --git a/src/empathy-account-assistant.c b/src/empathy-account-assistant.c index d8aa46f1d..c8379ae02 100644 --- a/src/empathy-account-assistant.c +++ b/src/empathy-account-assistant.c @@ -97,8 +97,7 @@ account_assistant_build_error_page (EmpathyAccountAssistant *self, GError *error, gint page_num) { GtkWidget *main_vbox, *w, *hbox; - GString *str; - char *message; + const char *message; PangoAttrList *list; EmpathyAccountAssistantPriv *priv = GET_PRIV (self); @@ -115,24 +114,16 @@ account_assistant_build_error_page (EmpathyAccountAssistant *self, gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_widget_show (w); - /* translators: this is followed by the "while ..." strings some lines - * down this file. - */ - str = g_string_new (_("There has been an error ")); - if (page_num == PAGE_IMPORT) - /* translators: this follows the "There has been an error " string */ - str = g_string_append (str, _("while importing the accounts.")); + message = _("There has been an error while importing the accounts."); else if (page_num >= PAGE_ENTER_CREATE && priv->first_resp == RESPONSE_ENTER_ACCOUNT) - /* translators: this follows the "There has been an error " string */ - str = g_string_append (str, _("while parsing the account details.")); + message = _("There has been an error while parsing the account details."); else if (page_num >= PAGE_ENTER_CREATE && priv->first_resp == RESPONSE_CREATE_ACCOUNT) - /* translators: this follows the "There has been an error " string */ - str = g_string_append (str, _("while creating the account.")); - - message = g_string_free (str, FALSE); + message = _("There has been an error while creating the account."); + else + message = _("There has been an error."); w = gtk_label_new (message); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); @@ -144,7 +135,6 @@ account_assistant_build_error_page (EmpathyAccountAssistant *self, gtk_label_set_line_wrap (GTK_LABEL (w), TRUE); gtk_widget_show (w); - g_free (message); pango_attr_list_unref (list); message = g_markup_printf_escaped @@ -157,7 +147,7 @@ account_assistant_build_error_page (EmpathyAccountAssistant *self, gtk_widget_show (w); w = gtk_label_new (_("You can either go back and try to enter your " - "accounts' details again or quit this wizard and add accounts " + "accounts' details again or quit this assistant and add accounts " "later from the Edit menu.")); gtk_box_pack_start (GTK_BOX (main_vbox), w, FALSE, FALSE, 6); gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); @@ -334,8 +324,7 @@ account_assistant_protocol_changed_cb (GtkComboBox *chooser, if (priv->first_resp == RESPONSE_CREATE_ACCOUNT) empathy_account_settings_set_boolean (settings, "register", TRUE); - widget_object = empathy_account_widget_new_for_protocol (proto->name, - settings, TRUE); + widget_object = empathy_account_widget_new_for_protocol (settings, TRUE); account_widget = empathy_account_widget_get_widget (widget_object); if (priv->current_account_widget != NULL) diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 74c9e7bd5..c28dbd30d 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -247,34 +247,6 @@ empathy_account_dialog_account_created_cb (EmpathyAccountWidget *widget_object, g_object_unref (settings); } -static GtkWidget * -get_account_setup_widget (EmpathyAccountSettings *settings, - EmpathyAccountWidget **widget_object) -{ - const gchar *proto = empathy_account_settings_get_protocol (settings); - EmpathyConnectionManagers *cm = - empathy_connection_managers_dup_singleton (); - GList *cms = empathy_connection_managers_get_cms (cm); - GList *l; - - for (l = cms; l; l = l->next) - { - TpConnectionManager *tp_cm = l->data; - if (tp_connection_manager_has_protocol (tp_cm, proto)) - { - g_object_unref (cm); - *widget_object = empathy_account_widget_new_for_protocol (proto, - settings, FALSE); - return empathy_account_widget_get_widget (*widget_object); - } - } - - g_object_unref (cm); - *widget_object = empathy_account_widget_new_for_protocol ("generic", settings, - FALSE); - return empathy_account_widget_get_widget (*widget_object); -} - static void account_dialog_create_settings_widget (EmpathyAccountsDialog *dialog, EmpathyAccountSettings *settings) @@ -283,7 +255,10 @@ account_dialog_create_settings_widget (EmpathyAccountsDialog *dialog, EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); gchar *icon_name; - priv->settings_widget = get_account_setup_widget (settings, &widget_object); + widget_object = empathy_account_widget_new_for_protocol (settings, FALSE); + + priv->settings_widget = empathy_account_widget_get_widget (widget_object); + g_signal_connect (widget_object, "account-created", G_CALLBACK (empathy_account_dialog_account_created_cb), dialog); g_signal_connect (widget_object, "cancelled", @@ -1235,7 +1210,7 @@ static void accounts_dialog_button_help_clicked_cb (GtkWidget *button, EmpathyAccountsDialog *dialog) { - empathy_url_show (button, "ghelp:empathy?empathy-create-account"); + empathy_url_show (button, "ghelp:empathy?accounts-window"); } static void diff --git a/src/empathy.c b/src/empathy.c index 38fd56c54..84bdfdd9c 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -558,6 +558,75 @@ account_manager_ready_cb (EmpathyAccountManager *manager, } } +static EmpathyDispatcher * +setup_dispatcher (void) +{ + EmpathyDispatcher *d; + GPtrArray *filters; + struct { + const gchar *channeltype; + TpHandleType handletype; + } types[] = { + /* Text channels with handle types none, contact and room */ + { TP_IFACE_CHANNEL_TYPE_TEXT, TP_HANDLE_TYPE_NONE }, + { TP_IFACE_CHANNEL_TYPE_TEXT, TP_HANDLE_TYPE_CONTACT }, + { TP_IFACE_CHANNEL_TYPE_TEXT, TP_HANDLE_TYPE_ROOM }, + /* file transfer to contacts */ + { TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, TP_HANDLE_TYPE_CONTACT }, + /* stream media to contacts */ + { TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, TP_HANDLE_TYPE_CONTACT }, + /* stream tubes to contacts and rooms */ + { TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, TP_HANDLE_TYPE_CONTACT }, + { TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, TP_HANDLE_TYPE_ROOM }, + /* d-bus tubes to contacts and rooms */ + { TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, TP_HANDLE_TYPE_CONTACT }, + { TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, TP_HANDLE_TYPE_ROOM }, + /* roomlists */ + { TP_IFACE_CHANNEL_TYPE_ROOM_LIST, TP_HANDLE_TYPE_NONE }, + }; + gchar *capabilities[] = { + "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp", + "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/gtalk-p2p", + NULL }; + GHashTable *asv; + int i; + + /* Setup the basic Client.Handler that matches our client filter */ + filters = g_ptr_array_new (); + asv = tp_asv_new ( + TP_IFACE_CHANNEL ".ChannelType", G_TYPE_STRING, + TP_IFACE_CHANNEL_TYPE_TEXT, + TP_IFACE_CHANNEL ".TargetHandleType", G_TYPE_INT, + TP_HANDLE_TYPE_CONTACT, + NULL); + g_ptr_array_add (filters, asv); + + d = empathy_dispatcher_new (PACKAGE_NAME, filters, NULL); + + g_ptr_array_foreach (filters, (GFunc) g_hash_table_destroy, NULL); + g_ptr_array_free (filters, TRUE); + + /* Setup the an extended Client.Handler that matches everything we can do */ + filters = g_ptr_array_new (); + for (i = 0 ; i < G_N_ELEMENTS (types); i++) + { + asv = tp_asv_new ( + TP_IFACE_CHANNEL ".ChannelType", G_TYPE_STRING, types[i].channeltype, + TP_IFACE_CHANNEL ".TargetHandleType", G_TYPE_INT, types[i].handletype, + NULL); + + g_ptr_array_add (filters, asv); + } + + empathy_dispatcher_add_handler (d, PACKAGE_NAME"MoreThenMeetsTheEye", + filters, capabilities); + + g_ptr_array_foreach (filters, (GFunc) g_hash_table_destroy, NULL); + g_ptr_array_free (filters, TRUE); + + return d; +} + int main (int argc, char *argv[]) { @@ -699,6 +768,10 @@ main (int argc, char *argv[]) g_signal_connect (account_manager, "notify::ready", G_CALLBACK (account_manager_ready_cb), NULL); + /* Handle channels */ + dispatcher = setup_dispatcher (); + g_signal_connect (dispatcher, "dispatch", G_CALLBACK (dispatch_cb), NULL); + migrate_config_to_xdg_dir (); /* Setting up UI */ @@ -708,10 +781,6 @@ main (int argc, char *argv[]) g_signal_connect (unique_app, "message-received", G_CALLBACK (unique_app_message_cb), window); - /* Handle channels */ - dispatcher = empathy_dispatcher_dup_singleton (); - g_signal_connect (dispatcher, "dispatch", G_CALLBACK (dispatch_cb), NULL); - /* Logging */ log_manager = empathy_log_manager_dup_singleton (); empathy_log_manager_observe (log_manager, dispatcher); |