finch/gntblist.c

changeset 20793
2cf364db44c2
parent 20666
4521cf45c8e3
child 20823
4f1e2463fc36
child 21162
8359073125ba
equal deleted inserted replaced
20790:0fd0c5943273 20793:2cf364db44c2
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));

mercurial