Mercurial > pidgin.yaz
changeset 31460:695b6e57e255
UI hack ala Google Talk for Facebook.
committer: John Bailey <rekkanoryo@rekkanoryo.org>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Tue, 07 Dec 2010 15:05:46 +0000 |
parents | 05b63edef7e4 |
children | 0bbe0d78db27 |
files | pidgin/gtkaccount.c pidgin/gtkutils.c |
diffstat | 2 files changed, 37 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin/gtkaccount.c Tue Dec 07 15:04:56 2010 +0000 +++ b/pidgin/gtkaccount.c Tue Dec 07 15:05:46 2010 +0000 @@ -559,10 +559,14 @@ /* Google Talk default domain hackery! */ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu)); item = gtk_menu_get_active(GTK_MENU(menu)); - if (value == NULL && g_object_get_data(G_OBJECT(item), "fake") && + if (value == NULL && g_object_get_data(G_OBJECT(item), "fakegoogle") && !strcmp(purple_account_user_split_get_text(split), _("Domain"))) value = "gmail.com"; + if (value == NULL && g_object_get_data(G_OBJECT(item), "fakefacebook") && + !strcmp(purple_account_user_split_get_text(split), _("Domain"))) + value = "chat.facebook.com"; + if (value != NULL) gtk_entry_set_text(GTK_ENTRY(entry), value); } @@ -758,7 +762,7 @@ { PurpleAccountOption *option; PurpleAccount *account; - GtkWidget *vbox, *check, *entry, *combo; + GtkWidget *vbox, *check, *entry, *combo, *menu, *item; GList *list, *node; gint i, idx, int_value; GtkListStore *model; @@ -797,6 +801,9 @@ gtk_label_new_with_mnemonic(_("Ad_vanced")), 1); gtk_widget_show(vbox); + menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu)); + item = gtk_menu_get_active(GTK_MENU(menu)); + for (l = dialog->prpl_info->protocol_options; l != NULL; l = l->next) { option = (PurpleAccountOption *)l->data; @@ -911,6 +918,10 @@ model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER); opt_entry->widget = combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model)); + if (g_object_get_data(G_OBJECT(item), "fakefacebook") && + !strcmp(opt_entry->setting, "connection_security")) + str_value = "opportunistic_tls"; + /* Loop through list of PurpleKeyValuePair items */ for (node = list; node != NULL; node = node->next) { if (node->data != NULL) {
--- a/pidgin/gtkutils.c Tue Dec 07 15:04:56 2010 +0000 +++ b/pidgin/gtkutils.c Tue Dec 07 15:05:46 2010 +0000 @@ -684,7 +684,7 @@ GdkPixbuf *pixbuf = NULL; GtkSizeGroup *sg; GList *p; - const char *gtalk_name = NULL; + const char *gtalk_name = NULL, *facebook_name = NULL; int i; aop_menu = g_malloc0(sizeof(AopMenu)); @@ -693,8 +693,10 @@ gtk_widget_show(aop_menu->menu); sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - if (purple_find_prpl("prpl-jabber")) + if (purple_find_prpl("prpl-jabber")) { gtalk_name = _("Google Talk"); + facebook_name = _("Facebook (XMPP)"); + } for (p = purple_plugins_get_protocols(), i = 0; p != NULL; @@ -712,7 +714,7 @@ gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu), item = aop_menu_item_new(sg, pixbuf, gtalk_name, "prpl-jabber", "protocol")); - g_object_set_data(G_OBJECT(item), "fake", GINT_TO_POINTER(1)); + g_object_set_data(G_OBJECT(item), "fakegoogle", GINT_TO_POINTER(1)); if (pixbuf) g_object_unref(pixbuf); @@ -721,6 +723,25 @@ i++; } + if (facebook_name && strcmp(facebook_name, plugin->info->name) < 0) { + char *filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", + "16", "facebook.png", NULL); + GtkWidget *item; + + pixbuf = gdk_pixbuf_new_from_file(filename, NULL); + g_free(filename); + + gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu), + item = aop_menu_item_new(sg, pixbuf, facebook_name, "prpl-jabber", "protocol")); + g_object_set_data(G_OBJECT(item), "fakefacebook", GINT_TO_POINTER(1)); + + if (pixbuf) + g_object_unref(pixbuf); + + facebook_name = NULL; + i++; + } + pixbuf = pidgin_create_prpl_icon_from_prpl(plugin, PIDGIN_PRPL_ICON_SMALL, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),