comparison finch/gntblist.c @ 18997:90d8d8bb395a

merge of '05f31e865f99d6f9afec4c0f635a0c64e2884d8c' and '8684b5a2faae1ccbd37e2af4ae3717e14395f62d'
author William Ehlhardt <williamehlhardt@gmail.com>
date Sun, 08 Jul 2007 01:37:37 +0000
parents 2d4df5ef0090
children 1dbd8ce2f11f
comparison
equal deleted inserted replaced
18959:88be01d503fb 18997:90d8d8bb395a
1258 gnt_screen_menu_show(GNT_MENU(context)); 1258 gnt_screen_menu_show(GNT_MENU(context));
1259 g_free(title); 1259 g_free(title);
1260 } 1260 }
1261 1261
1262 static void 1262 static void
1263 tooltip_for_buddy(PurpleBuddy *buddy, GString *str) 1263 tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full)
1264 { 1264 {
1265 PurplePlugin *prpl; 1265 PurplePlugin *prpl;
1266 PurplePluginProtocolInfo *prpl_info; 1266 PurplePluginProtocolInfo *prpl_info;
1267 PurpleAccount *account; 1267 PurpleAccount *account;
1268 PurpleNotifyUserInfo *user_info; 1268 PurpleNotifyUserInfo *user_info;
1271 1271
1272 user_info = purple_notify_user_info_new(); 1272 user_info = purple_notify_user_info_new();
1273 1273
1274 account = purple_buddy_get_account(buddy); 1274 account = purple_buddy_get_account(buddy);
1275 1275
1276 if (g_utf8_collate(purple_buddy_get_name(buddy), alias)) 1276 if (!full || g_utf8_collate(purple_buddy_get_name(buddy), alias))
1277 purple_notify_user_info_add_pair(user_info, _("Nickname"), alias); 1277 purple_notify_user_info_add_pair(user_info, _("Nickname"), alias);
1278 1278
1279 tmp = g_strdup_printf("%s (%s)", 1279 tmp = g_strdup_printf("%s (%s)",
1280 purple_account_get_username(account), 1280 purple_account_get_username(account),
1281 purple_account_get_protocol_name(account)); 1281 purple_account_get_protocol_name(account));
1283 g_free(tmp); 1283 g_free(tmp);
1284 1284
1285 prpl = purple_find_prpl(purple_account_get_protocol_id(account)); 1285 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
1286 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); 1286 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
1287 if (prpl_info && prpl_info->tooltip_text) { 1287 if (prpl_info && prpl_info->tooltip_text) {
1288 prpl_info->tooltip_text(buddy, user_info, TRUE); 1288 prpl_info->tooltip_text(buddy, user_info, full);
1289 } 1289 }
1290 1290
1291 if (purple_prefs_get_bool("/finch/blist/idletime")) { 1291 if (purple_prefs_get_bool("/finch/blist/idletime")) {
1292 PurplePresence *pre = purple_buddy_get_presence(buddy); 1292 PurplePresence *pre = purple_buddy_get_presence(buddy);
1293 if (purple_presence_is_idle(pre)) { 1293 if (purple_presence_is_idle(pre)) {
1355 gboolean offline = !PURPLE_BUDDY_IS_ONLINE(pr); 1355 gboolean offline = !PURPLE_BUDDY_IS_ONLINE(pr);
1356 gboolean showoffline = purple_prefs_get_bool(PREF_ROOT "/showoffline"); 1356 gboolean showoffline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
1357 const char *name = purple_buddy_get_name(pr); 1357 const char *name = purple_buddy_get_name(pr);
1358 1358
1359 title = g_strdup(name); 1359 title = g_strdup(name);
1360 tooltip_for_buddy(pr, str); 1360 tooltip_for_buddy(pr, str, TRUE);
1361 for (node = node->child; node; node = node->next) { 1361 for (node = node->child; node; node = node->next) {
1362 PurpleBuddy *buddy = (PurpleBuddy*)node; 1362 PurpleBuddy *buddy = (PurpleBuddy*)node;
1363 if (offline) { 1363 if (offline) {
1364 int value = purple_blist_node_get_int(node, "last_seen"); 1364 int value = purple_blist_node_get_int(node, "last_seen");
1365 if (value > lastseen) 1365 if (value > lastseen)
1370 if (!purple_account_is_connected(buddy->account)) 1370 if (!purple_account_is_connected(buddy->account))
1371 continue; 1371 continue;
1372 if (!showoffline && !PURPLE_BUDDY_IS_ONLINE(buddy)) 1372 if (!showoffline && !PURPLE_BUDDY_IS_ONLINE(buddy))
1373 continue; 1373 continue;
1374 str = g_string_append(str, "\n----------\n"); 1374 str = g_string_append(str, "\n----------\n");
1375 tooltip_for_buddy(buddy, str); 1375 tooltip_for_buddy(buddy, str, FALSE);
1376 } 1376 }
1377 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { 1377 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
1378 PurpleBuddy *buddy = (PurpleBuddy *)node; 1378 PurpleBuddy *buddy = (PurpleBuddy *)node;
1379 tooltip_for_buddy(buddy, str); 1379 tooltip_for_buddy(buddy, str, TRUE);
1380 title = g_strdup(purple_buddy_get_name(buddy)); 1380 title = g_strdup(purple_buddy_get_name(buddy));
1381 if (!PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node)) 1381 if (!PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node))
1382 lastseen = purple_blist_node_get_int(node, "last_seen"); 1382 lastseen = purple_blist_node_get_int(node, "last_seen");
1383 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { 1383 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
1384 PurpleGroup *group = (PurpleGroup *)node; 1384 PurpleGroup *group = (PurpleGroup *)node;
1420 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW); 1420 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW);
1421 gnt_box_set_title(GNT_BOX(box), title); 1421 gnt_box_set_title(GNT_BOX(box), title);
1422 1422
1423 str = make_sure_text_fits(str); 1423 str = make_sure_text_fits(str);
1424 gnt_util_get_text_bound(str->str, &w, &h); 1424 gnt_util_get_text_bound(str->str, &w, &h);
1425 h = MAX(2, h); 1425 h = MAX(1, h);
1426 tv = gnt_text_view_new(); 1426 tv = gnt_text_view_new();
1427 gnt_widget_set_size(tv, w + 1, h); 1427 gnt_widget_set_size(tv, w + 1, h);
1428 gnt_text_view_set_flag(GNT_TEXT_VIEW(tv), GNT_TEXT_VIEW_NO_SCROLL);
1428 gnt_box_add_widget(GNT_BOX(box), tv); 1429 gnt_box_add_widget(GNT_BOX(box), tv);
1429 1430
1430 gnt_widget_set_position(box, x, y); 1431 gnt_widget_set_position(box, x, y);
1431 GNT_WIDGET_UNSET_FLAGS(box, GNT_WIDGET_CAN_TAKE_FOCUS); 1432 GNT_WIDGET_UNSET_FLAGS(box, GNT_WIDGET_CAN_TAKE_FOCUS);
1432 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT); 1433 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
2247 static void 2248 static void
2248 blist_show(PurpleBuddyList *list) 2249 blist_show(PurpleBuddyList *list)
2249 { 2250 {
2250 if (ggblist == NULL) 2251 if (ggblist == NULL)
2251 new_list(list); 2252 new_list(list);
2252 else if (ggblist->window) 2253 else if (ggblist->window) {
2253 return; 2254 gnt_window_present(ggblist->window);
2255 return;
2256 }
2254 2257
2255 ggblist->window = gnt_vwindow_new(FALSE); 2258 ggblist->window = gnt_vwindow_new(FALSE);
2256 gnt_widget_set_name(ggblist->window, "buddylist"); 2259 gnt_widget_set_name(ggblist->window, "buddylist");
2257 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE); 2260 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE);
2258 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List")); 2261 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List"));