| 2200 fields = purple_request_fields_new(); |
2200 fields = purple_request_fields_new(); |
| 2201 |
2201 |
| 2202 group = purple_request_field_group_new(NULL); |
2202 group = purple_request_field_group_new(NULL); |
| 2203 purple_request_fields_add_group(fields, group); |
2203 purple_request_fields_add_group(fields, group); |
| 2204 |
2204 |
| 2205 field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE); |
2205 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE); |
| 2206 purple_request_field_set_type_hint(field, "screenname"); |
2206 purple_request_field_set_type_hint(field, "screenname"); |
| 2207 purple_request_field_set_required(field, TRUE); |
2207 purple_request_field_set_required(field, TRUE); |
| 2208 purple_request_field_group_add_field(group, field); |
2208 purple_request_field_group_add_field(group, field); |
| 2209 |
2209 |
| 2210 field = purple_request_field_account_new("account", _("_Account"), NULL); |
2210 field = purple_request_field_account_new("account", _("Account"), NULL); |
| 2211 purple_request_field_set_type_hint(field, "account"); |
2211 purple_request_field_set_type_hint(field, "account"); |
| 2212 purple_request_field_set_visible(field, |
2212 purple_request_field_set_visible(field, |
| 2213 (purple_connections_get_all() != NULL && |
2213 (purple_connections_get_all() != NULL && |
| 2214 purple_connections_get_all()->next != NULL)); |
2214 purple_connections_get_all()->next != NULL)); |
| 2215 purple_request_field_set_required(field, TRUE); |
2215 purple_request_field_set_required(field, TRUE); |
| 2225 NULL, NULL, NULL, |
2225 NULL, NULL, NULL, |
| 2226 NULL); |
2226 NULL); |
| 2227 } |
2227 } |
| 2228 |
2228 |
| 2229 static void |
2229 static void |
| |
2230 join_chat_select_cb(gpointer data, PurpleRequestFields *fields) |
| |
2231 { |
| |
2232 PurpleAccount *account; |
| |
2233 const char *name; |
| |
2234 PurpleConnection *gc; |
| |
2235 PurpleChat *chat; |
| |
2236 GHashTable *hash = NULL; |
| |
2237 |
| |
2238 account = purple_request_fields_get_account(fields, "account"); |
| |
2239 name = purple_request_fields_get_string(fields, "chat"); |
| |
2240 |
| |
2241 if (!purple_account_is_connected(account)) |
| |
2242 return; |
| |
2243 |
| |
2244 gc = purple_account_get_connection(account); |
| |
2245 purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name); |
| |
2246 chat = purple_blist_find_chat(account, name); |
| |
2247 if (chat == NULL) { |
| |
2248 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) |
| |
2249 hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name); |
| |
2250 } else { |
| |
2251 hash = chat->components; |
| |
2252 } |
| |
2253 serv_join_chat(gc, hash); |
| |
2254 if (chat == NULL && hash != NULL) |
| |
2255 g_hash_table_destroy(hash); |
| |
2256 } |
| |
2257 |
| |
2258 static void |
| |
2259 join_chat_select(GntMenuItem *item, gpointer n) |
| |
2260 { |
| |
2261 PurpleRequestFields *fields; |
| |
2262 PurpleRequestFieldGroup *group; |
| |
2263 PurpleRequestField *field; |
| |
2264 |
| |
2265 fields = purple_request_fields_new(); |
| |
2266 |
| |
2267 group = purple_request_field_group_new(NULL); |
| |
2268 purple_request_fields_add_group(fields, group); |
| |
2269 |
| |
2270 field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE); |
| |
2271 purple_request_field_set_required(field, TRUE); |
| |
2272 purple_request_field_group_add_field(group, field); |
| |
2273 |
| |
2274 field = purple_request_field_account_new("account", _("Account"), NULL); |
| |
2275 purple_request_field_set_type_hint(field, "account"); |
| |
2276 purple_request_field_set_visible(field, |
| |
2277 (purple_connections_get_all() != NULL && |
| |
2278 purple_connections_get_all()->next != NULL)); |
| |
2279 purple_request_field_set_required(field, TRUE); |
| |
2280 purple_request_field_group_add_field(group, field); |
| |
2281 |
| |
2282 purple_request_fields(purple_get_blist(), _("Join a Chat"), |
| |
2283 NULL, |
| |
2284 _("Please enter the name of the chat you want to join."), |
| |
2285 fields, |
| |
2286 _("Join"), G_CALLBACK(join_chat_select_cb), |
| |
2287 _("Cancel"), NULL, |
| |
2288 NULL, NULL, NULL, |
| |
2289 NULL); |
| |
2290 } |
| |
2291 |
| |
2292 static void |
| 2230 menu_add_buddy_cb(GntMenuItem *item, gpointer null) |
2293 menu_add_buddy_cb(GntMenuItem *item, gpointer null) |
| 2231 { |
2294 { |
| 2232 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); |
2295 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); |
| 2233 } |
2296 } |
| 2234 |
2297 |
| 2265 gnt_menuitem_set_submenu(item, GNT_MENU(sub)); |
2328 gnt_menuitem_set_submenu(item, GNT_MENU(sub)); |
| 2266 |
2329 |
| 2267 item = gnt_menuitem_new(_("Send IM...")); |
2330 item = gnt_menuitem_new(_("Send IM...")); |
| 2268 gnt_menu_add_item(GNT_MENU(sub), item); |
2331 gnt_menu_add_item(GNT_MENU(sub), item); |
| 2269 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL); |
2332 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL); |
| |
2333 |
| |
2334 item = gnt_menuitem_new(_("Join Chat...")); |
| |
2335 gnt_menu_add_item(GNT_MENU(sub), item); |
| |
2336 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL); |
| 2270 |
2337 |
| 2271 item = gnt_menuitem_new(_("Show")); |
2338 item = gnt_menuitem_new(_("Show")); |
| 2272 gnt_menu_add_item(GNT_MENU(sub), item); |
2339 gnt_menu_add_item(GNT_MENU(sub), item); |
| 2273 subsub = gnt_menu_new(GNT_MENU_POPUP); |
2340 subsub = gnt_menu_new(GNT_MENU_POPUP); |
| 2274 gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); |
2341 gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); |