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);