/pidgin/main: 47474e8b92dd: Implement purple_account_user_split_...
Tomasz Wasilczyk <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 47474e8b92ddb9dc0a3db04f320293d0cc814925 Author: Tomasz Wasilczyk <[email protected]> Date: 2014-05-07 19:35 +0200 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/47474e8b92dd Description: Implement purple_account_user_split_(is|set)_constant, remove unsupported Facebook XMPP features diffstat: finch/gntaccount.c | 22 ++-- libpurple/accountopt.c | 18 ++++ libpurple/accountopt.h | 25 ++++++ libpurple/protocols/jabber/libfacebook.c | 125 ++++-------------------------- pidgin/gtkaccount.c | 23 +++-- 5 files changed, 87 insertions(+), 126 deletions(-) diffs (truncated from 360 to 300 lines): diff --git a/finch/gntaccount.c b/finch/gntaccount.c --- a/finch/gntaccount.c +++ b/finch/gntaccount.c @@ -139,7 +139,7 @@ save_account_cb(AccountEditDialog *dialo PurpleAccountUserSplit *split = iter->data; GntWidget *entry = entries->data; - value = gnt_entry_get_text(GNT_ENTRY(entry)); + value = entry ? gnt_entry_get_text(GNT_ENTRY(entry)) : NULL; if (value == NULL || *value == '\0') value = purple_account_user_split_get_default_value(split); g_string_append_printf(username, "%c%s", @@ -321,17 +321,19 @@ update_user_splits(AccountEditDialog *di for (iter = prplinfo->user_splits; iter; iter = iter->next) { PurpleAccountUserSplit *split = iter->data; - GntWidget *entry; - char *buf; + GntWidget *entry = NULL; + char *buf = NULL; - hbox = gnt_hbox_new(TRUE); - gnt_box_add_widget(GNT_BOX(dialog->splits), hbox); + if (!purple_account_user_split_is_constant(split)) { + hbox = gnt_hbox_new(TRUE); + gnt_box_add_widget(GNT_BOX(dialog->splits), hbox); - buf = g_strdup_printf("%s:", purple_account_user_split_get_text(split)); - gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(buf)); + buf = g_strdup_printf("%s:", purple_account_user_split_get_text(split)); + gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(buf)); - entry = gnt_entry_new(NULL); - gnt_box_add_widget(GNT_BOX(hbox), entry); + entry = gnt_entry_new(NULL); + gnt_box_add_widget(GNT_BOX(hbox), entry); + } dialog->split_entries = g_list_append(dialog->split_entries, entry); g_free(buf); @@ -362,7 +364,7 @@ update_user_splits(AccountEditDialog *di if (value == NULL) value = purple_account_user_split_get_default_value(split); - if (value != NULL) + if (value != NULL && entry != NULL) gnt_entry_set_text(GNT_ENTRY(entry), value); } diff --git a/libpurple/accountopt.c b/libpurple/accountopt.c --- a/libpurple/accountopt.c +++ b/libpurple/accountopt.c @@ -73,6 +73,7 @@ struct _PurpleAccountUserSplit gboolean reverse; /* TRUE if the separator should be found starting a the end of the string, FALSE otherwise */ + gboolean constant; }; @@ -442,3 +443,20 @@ purple_account_user_split_set_reverse(Pu split->reverse = reverse; } + +gboolean +purple_account_user_split_is_constant(const PurpleAccountUserSplit *split) +{ + g_return_val_if_fail(split != NULL, FALSE); + + return split->constant; +} + +void +purple_account_user_split_set_constant(PurpleAccountUserSplit *split, + gboolean constant) +{ + g_return_if_fail(split != NULL); + + split->constant = constant; +} diff --git a/libpurple/accountopt.h b/libpurple/accountopt.h --- a/libpurple/accountopt.h +++ b/libpurple/accountopt.h @@ -412,6 +412,31 @@ gboolean purple_account_user_split_get_r */ void purple_account_user_split_set_reverse(PurpleAccountUserSplit *split, gboolean reverse); +/** + * purple_account_user_split_is_constant: + * @split: The account username split. + * + * Returns the constant parameter for an account split. + * + * When split is constant, it does not need to be displayed + * in configuration dialog. + * + * Returns: %TRUE, if the split is constant. + */ +gboolean +purple_account_user_split_is_constant(const PurpleAccountUserSplit *split); + +/** + * purple_account_user_split_set_constant: + * @split: The account username split. + * @constant: %TRUE, if the split is a constant part. + * + * Sets the constant parameter of account split. + */ +void +purple_account_user_split_set_constant(PurpleAccountUserSplit *split, + gboolean constant); + G_END_DECLS #endif /* _PURPLE_ACCOUNTOPT_H_ */ diff --git a/libpurple/protocols/jabber/libfacebook.c b/libpurple/protocols/jabber/libfacebook.c --- a/libpurple/protocols/jabber/libfacebook.c +++ b/libpurple/protocols/jabber/libfacebook.c @@ -81,18 +81,18 @@ static PurplePlugin *my_protocol = NULL; static PurplePluginProtocolInfo prpl_info = { sizeof(PurplePluginProtocolInfo), /* struct_size */ - OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME, + 0, /* PurpleProtocolOptions */ NULL, /* user_splits */ NULL, /* protocol_options */ - {"png", 32, 32, 96, 96, 0, PURPLE_ICON_SCALE_SEND | PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */ + NO_BUDDY_ICONS, /* icon_spec */ facebook_list_icon, /* list_icon */ jabber_list_emblem, /* list_emblems */ jabber_status_text, /* status_text */ jabber_tooltip_text, /* tooltip_text */ jabber_status_types, /* status_types */ - jabber_blist_node_menu, /* blist_node_menu */ - jabber_chat_info, /* chat_info */ - jabber_chat_info_defaults, /* chat_info_defaults */ + NULL, /* blist_node_menu */ + NULL, /* chat_info */ + NULL, /* chat_info_defaults */ facebook_login, /* login */ jabber_close, /* close */ jabber_message_send_im, /* send_im */ @@ -111,13 +111,13 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* rem_permit */ NULL, /* rem_deny */ NULL, /* set_permit_deny */ - jabber_chat_join, /* join_chat */ + NULL, /* join_chat */ NULL, /* reject_chat */ - jabber_get_chat_name, /* get_chat_name */ - jabber_chat_invite, /* chat_invite */ - jabber_chat_leave, /* chat_leave */ + NULL, /* get_chat_name */ + NULL, /* chat_invite */ + NULL, /* chat_leave */ NULL, /* chat_whisper */ - jabber_message_send_chat, /* chat_send */ + NULL, /* chat_send */ jabber_keepalive, /* keepalive */ NULL, /* register_user */ NULL, /* get_cb_info */ @@ -127,13 +127,13 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* buddy_free */ jabber_convo_closed, /* convo_closed */ jabber_normalize, /* normalize */ - jabber_set_buddy_icon, /* set_buddy_icon */ + NULL, /* set_buddy_icon */ NULL, /* remove_group */ - jabber_chat_user_real_name, /* get_cb_real_name */ - jabber_chat_set_topic, /* set_chat_topic */ - jabber_find_blist_chat, /* find_blist_chat */ - jabber_roomlist_get_list, /* roomlist_get_list */ - jabber_roomlist_cancel, /* roomlist_cancel */ + NULL, /* get_cb_real_name */ + NULL, /* set_chat_topic */ + NULL, /* find_blist_chat */ + NULL, /* roomlist_get_list */ + NULL, /* roomlist_cancel */ NULL, /* roomlist_expand_category */ NULL, /* can_receive_file */ NULL, /* send_file */ @@ -205,71 +205,6 @@ static PurplePluginInfo info = NULL }; -static PurpleAccount *find_acct(const char *prpl, const char *acct_id) -{ - PurpleAccount *acct = NULL; - - /* If we have a specific acct, use it */ - if (acct_id) { - acct = purple_accounts_find(acct_id, prpl); - if (acct && !purple_account_is_connected(acct)) - acct = NULL; - } else { /* Otherwise find an active account for the protocol */ - GList *l = purple_accounts_get_all(); - while (l) { - if (!strcmp(prpl, purple_account_get_protocol_id(l->data)) - && purple_account_is_connected(l->data)) { - acct = l->data; - break; - } - l = l->next; - } - } - - return acct; -} - -static gboolean xmpp_uri_handler(const char *proto, const char *user, GHashTable *params) -{ - char *acct_id = params ? g_hash_table_lookup(params, "account") : NULL; - PurpleAccount *acct; - - if (g_ascii_strcasecmp(proto, "xmpp")) - return FALSE; - - acct = find_acct(purple_plugin_get_id(my_protocol), acct_id); - - if (!acct) - return FALSE; - - /* xmpp:[email protected]?message;subject=Test%20Message;body=Here%27s%20a%20test%20message */ - /* params is NULL if the URI has no '?' (or anything after it) */ - if (!params || g_hash_table_lookup_extended(params, "message", NULL, NULL)) { - char *body = g_hash_table_lookup(params, "body"); - if (user && *user) { - PurpleIMConversation *im = - purple_im_conversation_new(acct, user); - purple_conversation_present(PURPLE_CONVERSATION(im)); - if (body && *body) - purple_conversation_send_confirm(PURPLE_CONVERSATION(im), body); - } - } else if (g_hash_table_lookup_extended(params, "roster", NULL, NULL)) { - char *name = g_hash_table_lookup(params, "name"); - if (user && *user) - purple_blist_request_add_buddy(acct, user, NULL, name); - } else if (g_hash_table_lookup_extended(params, "join", NULL, NULL)) { - PurpleConnection *gc = purple_account_get_connection(acct); - if (user && *user) { - GHashTable *params = jabber_chat_info_defaults(gc, user); - jabber_chat_join(gc, params); - } - return TRUE; - } - - return FALSE; -} - - static void init_plugin(PurplePlugin *plugin) { @@ -280,10 +215,12 @@ init_plugin(PurplePlugin *plugin) /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */ split = purple_account_user_split_new(_("Domain"), "chat.facebook.com", '@'); purple_account_user_split_set_reverse(split, FALSE); + purple_account_user_split_set_constant(split, TRUE); prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); split = purple_account_user_split_new(_("Resource"), "", '/'); purple_account_user_split_set_reverse(split, FALSE); + purple_account_user_split_set_constant(split, TRUE); prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); #define ADD_VALUE(list, desc, v) { \ @@ -307,38 +244,12 @@ init_plugin(PurplePlugin *plugin) prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - option = purple_account_option_bool_new( - _("Allow plaintext auth over unencrypted streams"), - "auth_plain_in_clear", FALSE); - prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, - option); - - option = purple_account_option_int_new(_("Connect port"), "port", 5222); - prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, - option); - - option = purple_account_option_string_new(_("Connect server"), - "connect_server", NULL); - prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, - option); - option = purple_account_option_string_new(_("BOSH URL"), "bosh_url", NULL); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - /* this should probably be part of global smiley theme settings later on, - shared with MSN */ - option = purple_account_option_bool_new(_("Show Custom Smileys"), - "custom_smileys", TRUE); - prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, - option); - my_protocol = plugin; -