| 1517 |
1517 |
| 1518 g_slist_free(parms); |
1518 g_slist_free(parms); |
| 1519 } |
1519 } |
| 1520 |
1520 |
| 1521 static void |
1521 static void |
| 1522 _initiate_conference_cb(GaimConnection *gc, const char *who) |
1522 _initiate_conference_cb(GaimBlistNode *node, gpointer ignored) |
| 1523 { |
1523 { |
| |
1524 GaimBuddy *buddy; |
| |
1525 GaimConnection *gc; |
| |
1526 |
| 1524 NMUser *user; |
1527 NMUser *user; |
| 1525 const char *conf_name; |
1528 const char *conf_name; |
| 1526 GaimConversation *chat = NULL; |
1529 GaimConversation *chat = NULL; |
| 1527 NMUserRecord *user_record; |
1530 NMUserRecord *user_record; |
| 1528 NMConference *conference; |
1531 NMConference *conference; |
| 1529 |
1532 |
| |
1533 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
| |
1534 |
| |
1535 buddy = (GaimBuddy *) node; |
| |
1536 gc = gaim_account_get_connection(buddy->account); |
| |
1537 |
| 1530 user = gc->proto_data; |
1538 user = gc->proto_data; |
| 1531 if (user == NULL) |
1539 if (user == NULL) |
| 1532 return; |
1540 return; |
| 1533 |
1541 |
| 1534 /* We should already have a userrecord for the buddy */ |
1542 /* We should already have a userrecord for the buddy */ |
| 1535 user_record = nm_find_user_record(user, who); |
1543 user_record = nm_find_user_record(user, buddy->name); |
| 1536 if (user_record == NULL) |
1544 if (user_record == NULL) |
| 1537 return; |
1545 return; |
| 1538 |
1546 |
| 1539 conf_name = _get_conference_name(++user->conference_count); |
1547 conf_name = _get_conference_name(++user->conference_count); |
| 1540 chat = serv_got_joined_chat(gc, user->conference_count, conf_name); |
1548 chat = serv_got_joined_chat(gc, user->conference_count, conf_name); |
| 3272 break; |
3280 break; |
| 3273 } |
3281 } |
| 3274 } |
3282 } |
| 3275 |
3283 |
| 3276 static GList * |
3284 static GList * |
| 3277 novell_buddy_menu(GaimConnection *gc, const char *who) |
3285 novell_blist_node_menu(GaimBlistNode *node) |
| 3278 { |
3286 { |
| 3279 GList *list = NULL; |
3287 GList *list = NULL; |
| 3280 struct proto_buddy_menu *pbm; |
3288 GaimBlistNodeAction *act; |
| 3281 |
3289 |
| 3282 pbm = g_new0(struct proto_buddy_menu, 1); |
3290 if(GAIM_BLIST_NODE_IS_BUDDY(node)) { |
| 3283 pbm->label = _("Initiate _Chat"); |
3291 act = gaim_blist_node_action_new(_("Initiate _Chat"), |
| 3284 pbm->callback = _initiate_conference_cb; |
3292 _initiate_conference_cb, NULL); |
| 3285 pbm->gc = gc; |
3293 list = g_list_append(list, act); |
| 3286 list = g_list_append(list, pbm); |
3294 } |
| 3287 |
3295 |
| 3288 return list; |
3296 return list; |
| 3289 } |
3297 } |
| 3290 |
3298 |
| 3291 static GaimPluginProtocolInfo prpl_info = { |
3299 static GaimPluginProtocolInfo prpl_info = { |
| 3296 novell_list_icon, |
3304 novell_list_icon, |
| 3297 novell_list_emblems, |
3305 novell_list_emblems, |
| 3298 novell_status_text, |
3306 novell_status_text, |
| 3299 novell_tooltip_text, |
3307 novell_tooltip_text, |
| 3300 novell_away_states, |
3308 novell_away_states, |
| 3301 novell_buddy_menu, |
3309 novell_blist_node_menu, |
| 3302 NULL, /* chat_info */ |
3310 NULL, /* chat_info */ |
| 3303 novell_login, |
3311 novell_login, |
| 3304 novell_close, |
3312 novell_close, |
| 3305 novell_send_im, |
3313 novell_send_im, |
| 3306 NULL, /* set_info */ |
3314 NULL, /* set_info */ |
| 3335 NULL, /* buddy_free */ |
3343 NULL, /* buddy_free */ |
| 3336 novell_convo_closed, |
3344 novell_convo_closed, |
| 3337 NULL, /* normalize */ |
3345 NULL, /* normalize */ |
| 3338 NULL, /* set_buddy_icon */ |
3346 NULL, /* set_buddy_icon */ |
| 3339 novell_remove_group, |
3347 novell_remove_group, |
| |
3348 NULL, |
| |
3349 NULL, |
| |
3350 NULL, |
| |
3351 NULL, |
| |
3352 NULL, |
| 3340 NULL |
3353 NULL |
| 3341 }; |
3354 }; |
| 3342 |
3355 |
| 3343 static GaimPluginInfo info = { |
3356 static GaimPluginInfo info = { |
| 3344 GAIM_PLUGIN_API_VERSION, /**< api_version */ |
3357 GAIM_PLUGIN_API_VERSION, /**< api_version */ |