Mercurial > pidgin.yaz
comparison pidgin/gtkblist.c @ 29731:3420370e4dfb
a bunch more struct hiding fixes, but too much for me at the moment
author | Gary Kramlich <grim@reaperworld.com> |
---|---|
date | Fri, 11 Dec 2009 02:32:08 +0000 |
parents | e3206d6da6c7 |
children | f8e29cf10629 |
comparison
equal
deleted
inserted
replaced
29730:bbd19d235b72 | 29731:3420370e4dfb |
---|---|
600 * specifically want to check the contact alias only (i.e. not | 600 * specifically want to check the contact alias only (i.e. not |
601 * the priority buddy, which purple_contact_get_alias does). | 601 * the priority buddy, which purple_contact_get_alias does). |
602 * Adding yet another get_alias is evil, so figure this out | 602 * Adding yet another get_alias is evil, so figure this out |
603 * later :-P | 603 * later :-P |
604 */ | 604 */ |
605 if (contact->alias || gtknode->contact_expanded) { | 605 if (purple_contact_get_alias(contact) || gtknode->contact_expanded) { |
606 purple_blist_alias_contact(contact, arg2); | 606 purple_blist_alias_contact(contact, arg2); |
607 gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2); | 607 gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2); |
608 } else { | 608 } else { |
609 PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); | 609 PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); |
610 purple_blist_alias_buddy(buddy, arg2); | 610 purple_blist_alias_buddy(buddy, arg2); |
1203 | 1203 |
1204 g_free(title); | 1204 g_free(title); |
1205 | 1205 |
1206 purple_blist_node_set_bool(node, "collapsed", TRUE); | 1206 purple_blist_node_set_bool(node, "collapsed", TRUE); |
1207 | 1207 |
1208 for(cnode = node->child; cnode; cnode = cnode->next) { | 1208 for(cnode = purple_blist_node_get_first_child(node); cnode; cnode = purple_blist_node_get_sibling_next(cnode)) { |
1209 if (PURPLE_BLIST_NODE_IS_CONTACT(cnode)) { | 1209 if (PURPLE_BLIST_NODE_IS_CONTACT(cnode)) { |
1210 gtknode = cnode->ui_data; | 1210 gtknode = purple_blist_node_get_ui_data(cnode); |
1211 if (!gtknode->contact_expanded) | 1211 if (!gtknode->contact_expanded) |
1212 continue; | 1212 continue; |
1213 gtknode->contact_expanded = FALSE; | 1213 gtknode->contact_expanded = FALSE; |
1214 pidgin_blist_update_contact(NULL, cnode); | 1214 pidgin_blist_update_contact(NULL, cnode); |
1215 } | 1215 } |
1237 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) | 1237 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) |
1238 buddy = purple_contact_get_priority_buddy((PurpleContact*)node); | 1238 buddy = purple_contact_get_priority_buddy((PurpleContact*)node); |
1239 else | 1239 else |
1240 buddy = (PurpleBuddy*)node; | 1240 buddy = (PurpleBuddy*)node; |
1241 | 1241 |
1242 pidgin_dialogs_im_with_user(buddy->account, buddy->name); | 1242 pidgin_dialogs_im_with_user(purple_buddy_get_account(buddy), purple_buddy_get_name(buddy)); |
1243 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { | 1243 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
1244 gtk_blist_join_chat((PurpleChat *)node); | 1244 gtk_blist_join_chat((PurpleChat *)node); |
1245 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { | 1245 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
1246 /* if (gtk_tree_view_row_expanded(tv, path)) | 1246 /* if (gtk_tree_view_row_expanded(tv, path)) |
1247 gtk_tree_view_collapse_row(tv, path); | 1247 gtk_tree_view_collapse_row(tv, path); |
1257 PurpleBlistNode *node; | 1257 PurpleBlistNode *node; |
1258 | 1258 |
1259 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ | 1259 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ |
1260 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); | 1260 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); |
1261 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) | 1261 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
1262 purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent->parent, NULL, NULL); | 1262 purple_blist_request_add_chat(NULL, purple_buddy_get_group(PURPLE_BUDDY(node)), NULL, NULL); |
1263 if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node)) | 1263 if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node)) |
1264 purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent, NULL, NULL); | 1264 purple_blist_request_add_chat(NULL, purple_contact_get_group(PURPLE_CONTACT(node)), NULL, NULL); |
1265 else if (PURPLE_BLIST_NODE_IS_GROUP(node)) | 1265 else if (PURPLE_BLIST_NODE_IS_GROUP(node)) |
1266 purple_blist_request_add_chat(NULL, (PurpleGroup*)node, NULL, NULL); | 1266 purple_blist_request_add_chat(NULL, (PurpleGroup*)node, NULL, NULL); |
1267 } | 1267 } |
1268 else { | 1268 else { |
1269 purple_blist_request_add_chat(NULL, NULL, NULL, NULL); | 1269 purple_blist_request_add_chat(NULL, NULL, NULL, NULL); |
1277 PurpleBlistNode *node; | 1277 PurpleBlistNode *node; |
1278 | 1278 |
1279 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ | 1279 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ |
1280 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); | 1280 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); |
1281 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { | 1281 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
1282 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent->parent)->name, | 1282 PurpleGroup *group = purple_buddy_get_group(PURPLE_BUDDY(node)); |
1283 NULL); | 1283 purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(group), NULL); |
1284 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) | 1284 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node)) { |
1285 || PURPLE_BLIST_NODE_IS_CHAT(node)) { | 1285 PurpleGroup *group = purple_contact_get_group(PURPLE_CONTACT(node)); |
1286 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent)->name, NULL); | 1286 purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(group), NULL); |
1287 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { | 1287 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
1288 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node)->name, NULL); | 1288 purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(PURPLE_GROUP(node)), NULL); |
1289 } | 1289 } |
1290 } | 1290 } |
1291 else { | 1291 else { |
1292 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); | 1292 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); |
1293 } | 1293 } |
1335 GtkTreePath *path; | 1335 GtkTreePath *path; |
1336 | 1336 |
1337 if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) | 1337 if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) |
1338 return; | 1338 return; |
1339 | 1339 |
1340 gtknode = (struct _pidgin_blist_node *)node->ui_data; | 1340 gtknode = purple_blist_node_get_ui_data(node); |
1341 | 1341 |
1342 gtknode->contact_expanded = TRUE; | 1342 gtknode->contact_expanded = TRUE; |
1343 | 1343 |
1344 for(bnode = node->child; bnode; bnode = bnode->next) { | 1344 for(bnode = purple_blist_node_get_first_child(node); bnode; bnode = purple_blist_node_get_sibling_next(bnode)) { |
1345 pidgin_blist_update(NULL, bnode); | 1345 pidgin_blist_update(NULL, bnode); |
1346 } | 1346 } |
1347 | 1347 |
1348 /* This ensures that the bottom buddy is visible, i.e. not scrolled off the alignment */ | 1348 /* This ensures that the bottom buddy is visible, i.e. not scrolled off the alignment */ |
1349 if (get_iter_from_node(node, &parent)) { | 1349 if (get_iter_from_node(node, &parent)) { |
1354 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); | 1354 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); |
1355 | 1355 |
1356 /* Let the treeview draw so it knows where to scroll */ | 1356 /* Let the treeview draw so it knows where to scroll */ |
1357 ex->treeview = GTK_TREE_VIEW(gtkblist->treeview); | 1357 ex->treeview = GTK_TREE_VIEW(gtkblist->treeview); |
1358 ex->path = path; | 1358 ex->path = path; |
1359 ex->node = node->child; | 1359 ex->node = purple_blist_node_get_first_child(node); |
1360 g_idle_add(scroll_to_expanded_cell, ex); | 1360 g_idle_add(scroll_to_expanded_cell, ex); |
1361 } | 1361 } |
1362 } | 1362 } |
1363 | 1363 |
1364 static void | 1364 static void |
1368 struct _pidgin_blist_node *gtknode; | 1368 struct _pidgin_blist_node *gtknode; |
1369 | 1369 |
1370 if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) | 1370 if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) |
1371 return; | 1371 return; |
1372 | 1372 |
1373 gtknode = (struct _pidgin_blist_node *)node->ui_data; | 1373 gtknode = purple_blist_node_get_ui_data(node); |
1374 | 1374 |
1375 gtknode->contact_expanded = FALSE; | 1375 gtknode->contact_expanded = FALSE; |
1376 | 1376 |
1377 for(bnode = node->child; bnode; bnode = bnode->next) { | 1377 for(bnode = purple_blist_node_get_first_child(node); bnode; bnode = purple_blist_node_get_sibling_next(bnode)) { |
1378 pidgin_blist_update(NULL, bnode); | 1378 pidgin_blist_update(NULL, bnode); |
1379 } | 1379 } |
1380 } | 1380 } |
1381 | 1381 |
1382 static void | 1382 static void |
1463 gtk_widget_show(menuitem); | 1463 gtk_widget_show(menuitem); |
1464 | 1464 |
1465 submenu = gtk_menu_new(); | 1465 submenu = gtk_menu_new(); |
1466 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); | 1466 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
1467 | 1467 |
1468 for (group = purple_blist_get_root(); group; group = group->next) { | 1468 for (group = purple_blist_get_root(); group; group = purple_blist_node_get_sibling_next(group)) { |
1469 if (group->type != PURPLE_BLIST_GROUP_NODE) | 1469 if (!PURPLE_BLIST_NODE_IS_GROUP(group)) |
1470 continue; | 1470 continue; |
1471 if (group == node->parent) | 1471 if (group == purple_blist_node_get_parent(node)) |
1472 continue; | 1472 continue; |
1473 menuitem = pidgin_new_item_from_stock(submenu, purple_group_get_name((PurpleGroup *)group), NULL, | 1473 menuitem = pidgin_new_item_from_stock(submenu, purple_group_get_name((PurpleGroup *)group), NULL, |
1474 G_CALLBACK(gtk_blist_menu_move_to_cb), node, 0, 0, NULL); | 1474 G_CALLBACK(gtk_blist_menu_move_to_cb), node, 0, 0, NULL); |
1475 g_object_set_data(G_OBJECT(menuitem), "groupnode", group); | 1475 g_object_set_data(G_OBJECT(menuitem), "groupnode", group); |
1476 } | 1476 } |
1477 gtk_widget_show_all(submenu); | 1477 gtk_widget_show_all(submenu); |
1478 } | 1478 } |
1479 | 1479 |
1480 void | 1480 void |
1481 pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) { | 1481 pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) { |
1482 PurpleAccount *account = NULL; | |
1483 PurpleConnection *pc = NULL; | |
1482 PurplePluginProtocolInfo *prpl_info; | 1484 PurplePluginProtocolInfo *prpl_info; |
1483 PurpleContact *contact; | 1485 PurpleContact *contact; |
1484 PurpleBlistNode *node; | 1486 PurpleBlistNode *node; |
1485 gboolean contact_expanded = FALSE; | 1487 gboolean contact_expanded = FALSE; |
1486 | 1488 |
1487 g_return_if_fail(menu); | 1489 g_return_if_fail(menu); |
1488 g_return_if_fail(buddy); | 1490 g_return_if_fail(buddy); |
1489 | 1491 |
1490 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl); | 1492 account = purple_buddy_get_account(buddy); |
1491 | 1493 pc = purple_account_get_connection(account); |
1492 node = (PurpleBlistNode*)buddy; | 1494 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(pc)); |
1495 | |
1496 node = PURPLE_BLIST_NODE(buddy); | |
1493 | 1497 |
1494 contact = purple_buddy_get_contact(buddy); | 1498 contact = purple_buddy_get_contact(buddy); |
1495 if (contact) { | 1499 if (contact) { |
1496 contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded; | 1500 PidginBlistNode *node = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(contact)); |
1501 contact_expanded = node->contact_expanded; | |
1497 } | 1502 } |
1498 | 1503 |
1499 if (prpl_info && prpl_info->get_info) { | 1504 if (prpl_info && prpl_info->get_info) { |
1500 pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO, | 1505 pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO, |
1501 G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL); | 1506 G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL); |