# HG changeset patch # User Mark Doliner # Date 1213382125 0 # Node ID 2a5bc3e6da7bb1719d0a12d6a18e368e227e19e4 # Parent 6b09c40a15d108ea8542bf869987238ae7e191d5# Parent da78db9f188fe093fdda70bc05f577736b2e42e7 merge of '705949560fe813ff0ffc4170eb4ca7545d1bd4e4' and 'ba3f5db0711c5a3b7c5b5510df2e5e3ae5adbbc3' diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/buddy.c --- a/libpurple/protocols/jabber/buddy.c Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/buddy.c Fri Jun 13 18:35:25 2008 +0000 @@ -1793,22 +1793,6 @@ } } -void jabber_buddy_get_info_chat(PurpleConnection *gc, int id, - const char *resource) -{ - JabberStream *js = gc->proto_data; - JabberChat *chat = jabber_chat_find_by_id(js, id); - char *full_jid; - - if(!chat) - return; - - full_jid = g_strdup_printf("%s@%s/%s", chat->room, chat->server, resource); - jabber_buddy_get_info_for_jid(js, full_jid); - g_free(full_jid); -} - - static void jabber_buddy_set_invisibility(JabberStream *js, const char *who, gboolean invisible) { diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/buddy.h --- a/libpurple/protocols/jabber/buddy.h Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/buddy.h Fri Jun 13 18:35:25 2008 +0000 @@ -96,8 +96,6 @@ void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource); const char *jabber_buddy_get_status_msg(JabberBuddy *jb); void jabber_buddy_get_info(PurpleConnection *gc, const char *who); -void jabber_buddy_get_info_chat(PurpleConnection *gc, int id, - const char *resource); GList *jabber_blist_node_menu(PurpleBlistNode *node); diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/chat.c --- a/libpurple/protocols/jabber/chat.c Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/chat.c Fri Jun 13 18:35:25 2008 +0000 @@ -342,12 +342,18 @@ { JabberStream *js = gc->proto_data; JabberChat *chat; + JabberChatMember *jcm; chat = jabber_chat_find_by_id(js, id); if(!chat) return NULL; + jcm = g_hash_table_lookup(chat->members, who); + if (jcm != NULL && jcm->jid) + return g_strdup(jcm->jid); + + return g_strdup_printf("%s@%s/%s", chat->room, chat->server, who); } diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Fri Jun 13 18:35:25 2008 +0000 @@ -76,9 +76,9 @@ jabber_roster_remove_buddy, /* remove_buddy */ NULL, /* remove_buddies */ NULL, /* add_permit */ - jabber_google_roster_add_deny, /* add_deny */ + jabber_google_roster_add_deny, /* add_deny */ NULL, /* rem_permit */ - jabber_google_roster_rem_deny, /* rem_deny */ + jabber_google_roster_rem_deny, /* rem_deny */ NULL, /* set_permit_deny */ jabber_chat_join, /* join_chat */ NULL, /* reject_chat */ @@ -89,7 +89,7 @@ jabber_message_send_chat, /* chat_send */ jabber_keepalive, /* keepalive */ jabber_register_account, /* register_user */ - jabber_buddy_get_info_chat, /* get_cb_info */ + NULL, /* get_cb_info */ NULL, /* get_cb_away */ jabber_roster_alias_change, /* alias_buddy */ jabber_roster_group_change, /* group_buddy */ @@ -105,7 +105,7 @@ jabber_roomlist_get_list, /* roomlist_get_list */ jabber_roomlist_cancel, /* roomlist_cancel */ NULL, /* roomlist_expand_category */ - NULL, /* can_receive_file */ + jabber_si_xfer_can_receive_file,/* can_receive_file */ jabber_si_xfer_send, /* send_file */ jabber_si_new_xfer, /* new_xfer */ jabber_offline_message, /* offline_message */ diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/si.c --- a/libpurple/protocols/jabber/si.c Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/si.c Fri Jun 13 18:35:25 2008 +0000 @@ -1205,6 +1205,13 @@ return xfer; } +gboolean jabber_si_xfer_can_receive_file(PurpleConnection *conn, const char *who) +{ + JabberStream *js = conn->proto_data; + + return purple_find_buddy(conn->account, who) && jabber_buddy_find(js, who, FALSE); +} + void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file) { JabberStream *js; @@ -1213,7 +1220,7 @@ js = gc->proto_data; - if(!purple_find_buddy(gc->account, who) || !jabber_buddy_find(js, who, FALSE)) + if (!jabber_si_xfer_can_receive_file(gc, who)) return; xfer = jabber_si_new_xfer(gc, who); diff -r 6b09c40a15d1 -r 2a5bc3e6da7b libpurple/protocols/jabber/si.h --- a/libpurple/protocols/jabber/si.h Thu Jun 12 16:09:58 2008 +0000 +++ b/libpurple/protocols/jabber/si.h Fri Jun 13 18:35:25 2008 +0000 @@ -28,6 +28,7 @@ void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet); void jabber_si_parse(JabberStream *js, xmlnode *packet); +gboolean jabber_si_xfer_can_receive_file(PurpleConnection *conn, const char *who); PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who); void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file); diff -r 6b09c40a15d1 -r 2a5bc3e6da7b pidgin/gtkconv.c --- a/pidgin/gtkconv.c Thu Jun 12 16:09:58 2008 +0000 +++ b/pidgin/gtkconv.c Fri Jun 13 18:35:25 2008 +0000 @@ -1481,7 +1481,7 @@ PurpleAccount *account; PurpleConnection *gc; PurplePluginProtocolInfo *prpl_info = NULL; - char *real_who; + gchar *real_who = NULL; account = purple_conversation_get_account(conv); g_return_if_fail(account != NULL); @@ -1494,13 +1494,11 @@ if (prpl_info && prpl_info->get_cb_real_name) real_who = prpl_info->get_cb_real_name(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who); - else - real_who = g_strdup(who); - - if(!real_who) + + if(!who && !real_who) return; - pidgin_dialogs_im_with_user(account, real_who); + pidgin_dialogs_im_with_user(account, real_who ? real_who : who); g_free(real_who); } @@ -1539,11 +1537,22 @@ static void menu_chat_send_file_cb(GtkWidget *w, PidginConversation *gtkconv) { + PurplePluginProtocolInfo *prpl_info; PurpleConversation *conv = gtkconv->active_conv; const char *who = g_object_get_data(G_OBJECT(w), "user_data"); PurpleConnection *gc = purple_conversation_get_gc(conv); - - serv_send_file(gc, who, NULL); + gchar *real_who = NULL; + + g_return_if_fail(gc != NULL); + + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); + + if (prpl_info && prpl_info->get_cb_real_name) + real_who = prpl_info->get_cb_real_name(gc, + purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who); + + serv_send_file(gc, real_who ? real_who : who, NULL); + g_free(real_who); } static void @@ -1659,23 +1668,34 @@ if (gc == NULL) gtk_widget_set_sensitive(button, FALSE); - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); if (prpl_info && prpl_info->send_file) { + gboolean can_receive_file = TRUE; + button = pidgin_new_item_from_stock(menu, _("Send File"), PIDGIN_STOCK_TOOLBAR_SEND_FILE, G_CALLBACK(menu_chat_send_file_cb), PIDGIN_CONVERSATION(conv), 0, 0, NULL); - if (gc == NULL || prpl_info == NULL || - !(!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) - { + if (gc == NULL || prpl_info == NULL) + can_receive_file = FALSE; + else { + gchar *real_who = NULL; + if (prpl_info->get_cb_real_name) + real_who = prpl_info->get_cb_real_name(gc, + purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who); + if (!(!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, real_who ? real_who : who))) + can_receive_file = FALSE; + g_free(real_who); + } + + if (!can_receive_file) gtk_widget_set_sensitive(button, FALSE); - } - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } @@ -1688,8 +1708,8 @@ if (gc == NULL) gtk_widget_set_sensitive(button, FALSE); - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } if (prpl_info && (prpl_info->get_info || prpl_info->get_cb_info)) { @@ -1698,8 +1718,8 @@ if (gc == NULL) gtk_widget_set_sensitive(button, FALSE); - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } if (prpl_info && prpl_info->get_cb_away) { @@ -1708,8 +1728,8 @@ if (gc == NULL) gtk_widget_set_sensitive(button, FALSE); - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } if (!is_me && prpl_info && !(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { @@ -1722,8 +1742,8 @@ if (gc == NULL) gtk_widget_set_sensitive(button, FALSE); - - g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); + else + g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } button = pidgin_new_item_from_stock(menu, _("Last said"), GTK_STOCK_INDEX, diff -r 6b09c40a15d1 -r 2a5bc3e6da7b pidgin/gtkutils.c --- a/pidgin/gtkutils.c Thu Jun 12 16:09:58 2008 +0000 +++ b/pidgin/gtkutils.c Fri Jun 13 18:35:25 2008 +0000 @@ -1001,13 +1001,14 @@ } prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(conn->prpl); + if (prpl_info != NULL && prpl_info->get_cb_real_name) + who = prpl_info->get_cb_real_name(conn, chat, name); if (prpl_info == NULL || prpl_info->get_cb_info == NULL) { - pidgin_retrieve_user_info(conn, name); + pidgin_retrieve_user_info(conn, who ? who : name); + g_free(who); return; } - if (prpl_info->get_cb_real_name) - who = prpl_info->get_cb_real_name(conn, chat, name); show_retrieveing_info(conn, who ? who : name); prpl_info->get_cb_info(conn, chat, name); g_free(who); diff -r 6b09c40a15d1 -r 2a5bc3e6da7b po/de.po --- a/po/de.po Thu Jun 12 16:09:58 2008 +0000 +++ b/po/de.po Fri Jun 13 18:35:25 2008 +0000 @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-06-09 20:56+0200\n" -"PO-Revision-Date: 2008-06-09 20:55+0200\n" +"POT-Creation-Date: 2008-06-12 18:33+0200\n" +"PO-Revision-Date: 2008-06-12 18:32+0200\n" "Last-Translator: Jochen Kemnade \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" @@ -6174,11 +6174,11 @@ msgid "In local permit/deny" msgstr "In lokaler erlaubt/verboten-Liste" -msgid "Too evil (sender)" -msgstr "Zu boshaft (Sender)" - -msgid "Too evil (receiver)" -msgstr "Zu boshaft (Empfänger)" +msgid "Warning level too high (sender)" +msgstr "Warnstufe zu hoch (Absender)" + +msgid "Warning level too high (receiver)" +msgstr "Warnstufe zu hoch (Empfänger)" msgid "User temporarily unavailable" msgstr "Benutzer ist temporär nicht verfügbar" @@ -6538,20 +6538,26 @@ "überschritten wurde." #, c-format -msgid "You missed %hu message from %s because he/she was too evil." -msgid_plural "You missed %hu messages from %s because he/she was too evil." +msgid "" +"You missed %hu message from %s because his/her warning level is too high." +msgid_plural "" +"You missed %hu messages from %s because his/her warning level is too high." msgstr[0] "" -"Sie haben %hu Nachricht von %s nicht erhalten, da er/sie zu boshaft war." +"Sie haben %hu Nachricht von %s nicht erhalten, da seine/ihre Warnstufe zu " +"hoch ist." msgstr[1] "" -"Sie haben %hu Nachrichten von %s nicht erhalten,/sie zu boshaft war." - -#, c-format -msgid "You missed %hu message from %s because you are too evil." -msgid_plural "You missed %hu messages from %s because you are too evil." +"Sie haben %hu Nachrichten von %s nicht erhalten, da seine/ihre Warnstufe zu " +"hoch ist." + +#, c-format +msgid "You missed %hu message from %s because your warning level is too high." +msgid_plural "" +"You missed %hu messages from %s because your warning level is too high." msgstr[0] "" -"Sie haben %hu Nachricht von %s nicht erhalten, da Sie zu boshaft sind." +"Sie haben %hu Nachricht von %s nicht erhalten, da Ihre Warnstufe zu hoch ist." msgstr[1] "" -"Sie haben %hu Nachrichten von %s nicht erhalten, da Sie zu boshaft sind." +"Sie haben %hu Nachrichten von %s nicht erhalten, da Ihre Warnstufe zu hoch " +"ist." #, c-format msgid "You missed %hu message from %s for an unknown reason." @@ -10263,9 +10269,6 @@ msgid "/Tools/_Certificates" msgstr "/Werkzeuge/_Zertifikate" -msgid "/Tools/Smile_y" -msgstr "/Werkzeuge/Smile_y" - msgid "/Tools/Plu_gins" msgstr "/Werkzeuge/Plu_gins" @@ -10275,6 +10278,9 @@ msgid "/Tools/Pr_ivacy" msgstr "/Werkzeuge/Pri_vatsphäre" +msgid "/Tools/Smile_y" +msgstr "/Werkzeuge/Smile_y" + msgid "/Tools/_File Transfers" msgstr "/Werkzeuge/_Dateiübertragungen" @@ -10508,6 +10514,12 @@ msgid "Please enter the name of the group to be added." msgstr "Bitte geben Sie den Namen der Gruppe ein, die hinzugefügt werden soll." +msgid "Enable Account" +msgstr "Konten aktivieren" + +msgid "/Accounts/Enable Account" +msgstr "/Konten/Konto aktivieren" + msgid "/Accounts/" msgstr "/Konten/" @@ -10520,12 +10532,6 @@ msgid "_Disable" msgstr "_Deaktivieren" -msgid "Enable Account" -msgstr "Konten aktivieren" - -msgid "/Accounts/Enable Account" -msgstr "/Konten/Konto aktivieren" - msgid "/Tools" msgstr "/Werkzeuge" @@ -11559,11 +11565,14 @@ msgid "Insert Image" msgstr "Bild einfügen" -msgid "" -"This smiley is disabled because a custom smiley exists for this shortcut." +#, c-format +msgid "" +"This smiley is disabled because a custom smiley exists for this shortcut:\n" +" %s" msgstr "" "Dieser Smiley ist deaktiviert, da ein benutzerdefinierter Smiley für diese " -"Tastenkombination existiert." +"Tastenkombination existiert:\n" +" %s" msgid "Smile!" msgstr "Lächeln!"