Mercurial > pidgin
comparison pidgin/gtkblist.c @ 32663:79a8ed88de20
propagate from branch 'im.pidgin.pidgin' (head bfb757dfe6b2549ab37a9b19f78f5f1f2f9df0cd)
to branch 'im.pidgin.cpw.qulogic.gtk3' (head 73a08f798ab6ede72ea1c28a63c2dc0cc23db620)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Mon, 21 Mar 2011 01:53:46 +0000 |
parents | ea07a6230b57 c0a122c22475 |
children | d1315b4e1e4a |
comparison
equal
deleted
inserted
replaced
32662:1b4988e242fc | 32663:79a8ed88de20 |
---|---|
83 { | 83 { |
84 PidginBlistRequestData rq_data; | 84 PidginBlistRequestData rq_data; |
85 GtkWidget *combo; | 85 GtkWidget *combo; |
86 GtkWidget *entry; | 86 GtkWidget *entry; |
87 GtkWidget *entry_for_alias; | 87 GtkWidget *entry_for_alias; |
88 GtkWidget *entry_for_invite; | |
88 | 89 |
89 } PidginAddBuddyData; | 90 } PidginAddBuddyData; |
90 | 91 |
91 typedef struct | 92 typedef struct |
92 { | 93 { |
7149 | 7150 |
7150 static void | 7151 static void |
7151 add_buddy_select_account_cb(GObject *w, PurpleAccount *account, | 7152 add_buddy_select_account_cb(GObject *w, PurpleAccount *account, |
7152 PidginAddBuddyData *data) | 7153 PidginAddBuddyData *data) |
7153 { | 7154 { |
7155 PurpleConnection *pc = NULL; | |
7156 PurplePlugin *prpl = NULL; | |
7157 PurplePluginProtocolInfo *prpl_info = NULL; | |
7158 gboolean invite_enabled = TRUE; | |
7159 | |
7154 /* Save our account */ | 7160 /* Save our account */ |
7155 data->rq_data.account = account; | 7161 data->rq_data.account = account; |
7162 | |
7163 if (account) | |
7164 pc = purple_account_get_connection(account); | |
7165 if (pc) | |
7166 prpl = purple_connection_get_prpl(pc); | |
7167 if (prpl) | |
7168 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
7169 if (prpl_info && !(prpl_info->options & OPT_PROTO_INVITE_MESSAGE)) | |
7170 invite_enabled = FALSE; | |
7171 | |
7172 gtk_widget_set_sensitive(data->entry_for_invite, invite_enabled); | |
7156 } | 7173 } |
7157 | 7174 |
7158 static void | 7175 static void |
7159 destroy_add_buddy_dialog_cb(GtkWidget *win, PidginAddBuddyData *data) | 7176 destroy_add_buddy_dialog_cb(GtkWidget *win, PidginAddBuddyData *data) |
7160 { | 7177 { |
7162 } | 7179 } |
7163 | 7180 |
7164 static void | 7181 static void |
7165 add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data) | 7182 add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data) |
7166 { | 7183 { |
7167 const char *grp, *who, *whoalias; | 7184 const char *grp, *who, *whoalias, *invite; |
7168 PurpleAccount *account; | 7185 PurpleAccount *account; |
7169 PurpleGroup *g; | 7186 PurpleGroup *g; |
7170 PurpleBuddy *b; | 7187 PurpleBuddy *b; |
7171 PurpleConversation *c; | 7188 PurpleConversation *c; |
7172 PurpleBuddyIcon *icon; | 7189 PurpleBuddyIcon *icon; |
7176 who = gtk_entry_get_text(GTK_ENTRY(data->entry)); | 7193 who = gtk_entry_get_text(GTK_ENTRY(data->entry)); |
7177 grp = pidgin_text_combo_box_entry_get_text(data->combo); | 7194 grp = pidgin_text_combo_box_entry_get_text(data->combo); |
7178 whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias)); | 7195 whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias)); |
7179 if (*whoalias == '\0') | 7196 if (*whoalias == '\0') |
7180 whoalias = NULL; | 7197 whoalias = NULL; |
7198 invite = gtk_entry_get_text(GTK_ENTRY(data->entry_for_invite)); | |
7199 if (*invite == '\0') | |
7200 invite = NULL; | |
7181 | 7201 |
7182 account = data->rq_data.account; | 7202 account = data->rq_data.account; |
7183 | 7203 |
7184 g = NULL; | 7204 g = NULL; |
7185 if ((grp != NULL) && (*grp != '\0')) | 7205 if ((grp != NULL) && (*grp != '\0')) |
7201 { | 7221 { |
7202 b = purple_buddy_new(account, who, whoalias); | 7222 b = purple_buddy_new(account, who, whoalias); |
7203 purple_blist_add_buddy(b, NULL, g, NULL); | 7223 purple_blist_add_buddy(b, NULL, g, NULL); |
7204 } | 7224 } |
7205 | 7225 |
7206 purple_account_add_buddy(account, b); | 7226 purple_account_add_buddy_with_invite(account, b, invite); |
7207 | 7227 |
7208 /* Offer to merge people with the same alias. */ | 7228 /* Offer to merge people with the same alias. */ |
7209 if (whoalias != NULL && g != NULL) | 7229 if (whoalias != NULL && g != NULL) |
7210 gtk_blist_auto_personize((PurpleBlistNode *)g, whoalias); | 7230 gtk_blist_auto_personize((PurpleBlistNode *)g, whoalias); |
7211 | 7231 |
7239 pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username, | 7259 pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username, |
7240 const char *group, const char *alias) | 7260 const char *group, const char *alias) |
7241 { | 7261 { |
7242 PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1); | 7262 PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1); |
7243 | 7263 |
7264 if (account == NULL) | |
7265 account = purple_connection_get_account(purple_connections_get_all()->data); | |
7266 | |
7244 make_blist_request_dialog((PidginBlistRequestData *)data, | 7267 make_blist_request_dialog((PidginBlistRequestData *)data, |
7245 (account != NULL | 7268 account, |
7246 ? account : purple_connection_get_account(purple_connections_get_all()->data)), | |
7247 _("Add Buddy"), "add_buddy", | 7269 _("Add Buddy"), "add_buddy", |
7248 _("Add a buddy.\n"), | 7270 _("Add a buddy.\n"), |
7249 G_CALLBACK(add_buddy_select_account_cb), NULL, | 7271 G_CALLBACK(add_buddy_select_account_cb), NULL, |
7250 G_CALLBACK(add_buddy_cb)); | 7272 G_CALLBACK(add_buddy_cb)); |
7251 gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window), | 7273 gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window), |
7285 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias); | 7307 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias); |
7286 | 7308 |
7287 if (username != NULL) | 7309 if (username != NULL) |
7288 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias)); | 7310 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias)); |
7289 | 7311 |
7312 data->entry_for_invite = gtk_entry_new(); | |
7313 pidgin_add_widget_to_vbox(data->rq_data.vbox, _("(Optional) _Invite message:"), | |
7314 data->rq_data.sg, data->entry_for_invite, TRUE, | |
7315 NULL); | |
7316 | |
7290 data->combo = pidgin_text_combo_box_entry_new(group, groups_tree()); | 7317 data->combo = pidgin_text_combo_box_entry_new(group, groups_tree()); |
7291 pidgin_add_widget_to_vbox(data->rq_data.vbox, _("Add buddy to _group:"), | 7318 pidgin_add_widget_to_vbox(data->rq_data.vbox, _("Add buddy to _group:"), |
7292 data->rq_data.sg, data->combo, TRUE, NULL); | 7319 data->rq_data.sg, data->combo, TRUE, NULL); |
7293 | 7320 |
7294 gtk_widget_show_all(data->rq_data.window); | 7321 gtk_widget_show_all(data->rq_data.window); |
7322 | |
7323 /* Force update of invite message entry sensitivity */ | |
7324 add_buddy_select_account_cb(NULL, account, data); | |
7295 } | 7325 } |
7296 | 7326 |
7297 static void | 7327 static void |
7298 add_chat_cb(GtkWidget *w, PidginAddChatData *data) | 7328 add_chat_cb(GtkWidget *w, PidginAddChatData *data) |
7299 { | 7329 { |