comparison finch/gntblist.c @ 18332:1862a23b1751

Show better tooltips for contacts.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Thu, 28 Jun 2007 01:09:51 +0000
parents 70325b0c5792
children 2d4df5ef0090
comparison
equal deleted inserted replaced
18331:d19a86daa7f8 18332:1862a23b1751
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;