Mercurial > pidgin.yaz
comparison src/gtkblist.c @ 9754:4a8bf81b82ae
[gaim-migrate @ 10621]
" This will default the room/server fields to the proper
values when an add chat is requested from a
conversation window. It wasn't quite as trivial as the
reporter suggested..." --Nathan (noif) Fredrickson
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Sun, 15 Aug 2004 19:34:20 +0000 |
parents | 60705fd4f411 |
children | 41f302d41839 |
comparison
equal
deleted
inserted
replaced
9753:60705fd4f411 | 9754:4a8bf81b82ae |
---|---|
73 } GaimGtkAddBuddyData; | 73 } GaimGtkAddBuddyData; |
74 | 74 |
75 typedef struct | 75 typedef struct |
76 { | 76 { |
77 GaimAccount *account; | 77 GaimAccount *account; |
78 const char *default_chat_name; | |
78 | 79 |
79 GtkWidget *window; | 80 GtkWidget *window; |
80 GtkWidget *account_menu; | 81 GtkWidget *account_menu; |
81 GtkWidget *alias_entry; | 82 GtkWidget *alias_entry; |
82 GtkWidget *group_combo; | 83 GtkWidget *group_combo; |
947 GaimBlistNode *node; | 948 GaimBlistNode *node; |
948 | 949 |
949 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ | 950 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ |
950 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); | 951 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); |
951 if (GAIM_BLIST_NODE_IS_BUDDY(node)) | 952 if (GAIM_BLIST_NODE_IS_BUDDY(node)) |
952 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent->parent, NULL); | 953 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent->parent, NULL, NULL); |
953 if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) | 954 if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) |
954 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent, NULL); | 955 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent, NULL, NULL); |
955 else if (GAIM_BLIST_NODE_IS_GROUP(node)) | 956 else if (GAIM_BLIST_NODE_IS_GROUP(node)) |
956 gaim_blist_request_add_chat(NULL, (GaimGroup*)node, NULL); | 957 gaim_blist_request_add_chat(NULL, (GaimGroup*)node, NULL, NULL); |
957 } | 958 } |
958 else { | 959 else { |
959 gaim_blist_request_add_chat(NULL, NULL, NULL); | 960 gaim_blist_request_add_chat(NULL, NULL, NULL, NULL); |
960 } | 961 } |
961 } | 962 } |
962 | 963 |
963 static void gaim_gtk_blist_add_buddy_cb() | 964 static void gaim_gtk_blist_add_buddy_cb() |
964 { | 965 { |
4141 static void | 4142 static void |
4142 rebuild_addchat_entries(GaimGtkAddChatData *data) | 4143 rebuild_addchat_entries(GaimGtkAddChatData *data) |
4143 { | 4144 { |
4144 GaimConnection *gc; | 4145 GaimConnection *gc; |
4145 GList *list, *tmp; | 4146 GList *list, *tmp; |
4147 GHashTable *defaults = NULL; | |
4146 struct proto_chat_entry *pce; | 4148 struct proto_chat_entry *pce; |
4147 gboolean focus = TRUE; | 4149 gboolean focus = TRUE; |
4148 | 4150 |
4149 gc = gaim_account_get_connection(data->account); | 4151 gc = gaim_account_get_connection(data->account); |
4150 | 4152 |
4158 g_list_free(data->entries); | 4160 g_list_free(data->entries); |
4159 | 4161 |
4160 data->entries = NULL; | 4162 data->entries = NULL; |
4161 | 4163 |
4162 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); | 4164 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); |
4165 | |
4166 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) | |
4167 defaults = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, | |
4168 data->default_chat_name); | |
4163 | 4169 |
4164 for (tmp = list; tmp; tmp = tmp->next) | 4170 for (tmp = list; tmp; tmp = tmp->next) |
4165 { | 4171 { |
4166 GtkWidget *label; | 4172 GtkWidget *label; |
4167 GtkWidget *rowbox; | 4173 GtkWidget *rowbox; |
4192 gaim_set_accessible_label (spin, label); | 4198 gaim_set_accessible_label (spin, label); |
4193 } | 4199 } |
4194 else | 4200 else |
4195 { | 4201 { |
4196 GtkWidget *entry = gtk_entry_new(); | 4202 GtkWidget *entry = gtk_entry_new(); |
4203 char *value; | |
4197 | 4204 |
4198 g_object_set_data(G_OBJECT(entry), "identifier", pce->identifier); | 4205 g_object_set_data(G_OBJECT(entry), "identifier", pce->identifier); |
4199 data->entries = g_list_append(data->entries, entry); | 4206 data->entries = g_list_append(data->entries, entry); |
4200 | 4207 |
4201 if (pce->def) | 4208 value = g_hash_table_lookup(defaults, pce->identifier); |
4209 if (value != NULL) | |
4210 gtk_entry_set_text(GTK_ENTRY(entry), value); | |
4211 else if (pce->def) | |
4202 gtk_entry_set_text(GTK_ENTRY(entry), pce->def); | 4212 gtk_entry_set_text(GTK_ENTRY(entry), pce->def); |
4203 | 4213 |
4204 if (focus) | 4214 if (focus) |
4205 { | 4215 { |
4206 gtk_widget_grab_focus(entry); | 4216 gtk_widget_grab_focus(entry); |
4220 | 4230 |
4221 g_free(pce); | 4231 g_free(pce); |
4222 } | 4232 } |
4223 | 4233 |
4224 g_list_free(list); | 4234 g_list_free(list); |
4235 g_hash_table_destroy(defaults); | |
4225 | 4236 |
4226 gtk_widget_show_all(data->entries_box); | 4237 gtk_widget_show_all(data->entries_box); |
4227 } | 4238 } |
4228 | 4239 |
4229 static void | 4240 static void |
4250 return (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL); | 4261 return (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL); |
4251 } | 4262 } |
4252 | 4263 |
4253 void | 4264 void |
4254 gaim_gtk_blist_request_add_chat(GaimAccount *account, GaimGroup *group, | 4265 gaim_gtk_blist_request_add_chat(GaimAccount *account, GaimGroup *group, |
4255 const char *alias) | 4266 const char *alias, const char *name) |
4256 { | 4267 { |
4257 GaimGtkAddChatData *data; | 4268 GaimGtkAddChatData *data; |
4258 GaimGtkBuddyList *gtkblist; | 4269 GaimGtkBuddyList *gtkblist; |
4259 GList *l; | 4270 GList *l; |
4260 GaimConnection *gc; | 4271 GaimConnection *gc; |
4268 | 4279 |
4269 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, | 4280 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
4270 GTK_ICON_SIZE_DIALOG); | 4281 GTK_ICON_SIZE_DIALOG); |
4271 | 4282 |
4272 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); | 4283 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); |
4284 | |
4285 data->default_chat_name = name; | |
4273 | 4286 |
4274 if (account != NULL) | 4287 if (account != NULL) |
4275 { | 4288 { |
4276 data->account = account; | 4289 data->account = account; |
4277 } | 4290 } |