Mercurial > pidgin
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")); |