comparison mcabber/src/commands.c @ 1290:e42f48103609

Drawing the MUC nicks by a different color (color is hardcoded to red, needs to be changed to something useable)
author Michal 'vorner' Vaner <vorner@ucw.cz>
date Sun, 26 Aug 2007 18:24:14 +0200
parents 8bbc764139ef
children 382ec54b584e
comparison
equal deleted inserted replaced
1289:57fe57474122 1290:e42f48103609
535 sbuf = g_string_new(""); 535 sbuf = g_string_new("");
536 536
537 if (!winId) { 537 if (!winId) {
538 // We're writing to the status window, so let's show the jid too. 538 // We're writing to the status window, so let's show the jid too.
539 g_string_printf(sbuf, "Annotation on <%s>", note->jid); 539 g_string_printf(sbuf, "Annotation on <%s>", note->jid);
540 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); 540 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
541 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; 541 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
542 } 542 }
543 543
544 // If we have the creation date, display it 544 // If we have the creation date, display it
545 if (note->cdate) { 545 if (note->cdate) {
546 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", 546 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
547 localtime(&note->cdate)); 547 localtime(&note->cdate));
548 g_string_printf(sbuf, "Note created %s", tbuf); 548 g_string_printf(sbuf, "Note created %s", tbuf);
549 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); 549 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
550 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; 550 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
551 } 551 }
552 // If we have the modification date, display it 552 // If we have the modification date, display it
553 // unless it's the same as the creation date 553 // unless it's the same as the creation date
554 if (note->mdate && note->mdate != note->cdate) { 554 if (note->mdate && note->mdate != note->cdate) {
555 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", 555 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
556 localtime(&note->mdate)); 556 localtime(&note->mdate));
557 g_string_printf(sbuf, "Note modified %s", tbuf); 557 g_string_printf(sbuf, "Note modified %s", tbuf);
558 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); 558 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
559 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; 559 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
560 } 560 }
561 // Note text 561 // Note text
562 g_string_printf(sbuf, "Note: %s", note->text); 562 g_string_printf(sbuf, "Note: %s", note->text);
563 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); 563 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
564 564
565 g_string_free(sbuf, TRUE); 565 g_string_free(sbuf, TRUE);
566 g_free(note->text); 566 g_free(note->text);
567 g_free(note->jid); 567 g_free(note->jid);
568 g_free(note); 568 g_free(note);
622 struct annotation *note = jb_get_storage_rosternotes(bjid, FALSE); 622 struct annotation *note = jb_get_storage_rosternotes(bjid, FALSE);
623 if (note) { 623 if (note) {
624 display_and_free_note(note, bjid); 624 display_and_free_note(note, bjid);
625 } else { 625 } else {
626 scr_WriteIncomingMessage(bjid, "This item doesn't have a note.", 0, 626 scr_WriteIncomingMessage(bjid, "This item doesn't have a note.", 0,
627 HBB_PREFIX_INFO); 627 HBB_PREFIX_INFO, 0);
628 } 628 }
629 } 629 }
630 } 630 }
631 631
632 /* Commands callback functions */ 632 /* Commands callback functions */
1392 // Enter chat mode 1392 // Enter chat mode
1393 scr_set_chatmode(TRUE); 1393 scr_set_chatmode(TRUE);
1394 scr_ShowBuddyWindow(); 1394 scr_ShowBuddyWindow();
1395 1395
1396 snprintf(buffer, 4095, "jid: <%s>", bjid); 1396 snprintf(buffer, 4095, "jid: <%s>", bjid);
1397 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1397 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1398 if (name) { 1398 if (name) {
1399 snprintf(buffer, 4095, "Name: %s", name); 1399 snprintf(buffer, 4095, "Name: %s", name);
1400 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1400 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1401 } 1401 }
1402 1402
1403 if (type == ROSTER_TYPE_USER) bstr = "user"; 1403 if (type == ROSTER_TYPE_USER) bstr = "user";
1404 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom"; 1404 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom";
1405 else if (type == ROSTER_TYPE_AGENT) bstr = "agent"; 1405 else if (type == ROSTER_TYPE_AGENT) bstr = "agent";
1406 snprintf(buffer, 127, "Type: %s", bstr); 1406 snprintf(buffer, 127, "Type: %s", bstr);
1407 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1407 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1408 1408
1409 if (esub == sub_both) bstr = "both"; 1409 if (esub == sub_both) bstr = "both";
1410 else if (esub & sub_from) bstr = "from"; 1410 else if (esub & sub_from) bstr = "from";
1411 else if (esub & sub_to) bstr = "to"; 1411 else if (esub & sub_to) bstr = "to";
1412 else bstr = "none"; 1412 else bstr = "none";
1413 snprintf(buffer, 64, "Subscription: %s", bstr); 1413 snprintf(buffer, 64, "Subscription: %s", bstr);
1414 if (esub & sub_pending) 1414 if (esub & sub_pending)
1415 strcat(buffer, " (pending)"); 1415 strcat(buffer, " (pending)");
1416 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1416 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1417 1417
1418 resources = buddy_getresources(bud); 1418 resources = buddy_getresources(bud);
1419 if (!resources && type == ROSTER_TYPE_USER) { 1419 if (!resources && type == ROSTER_TYPE_USER) {
1420 // No resource; display last status message, if any. 1420 // No resource; display last status message, if any.
1421 const char *rst_msg = buddy_getstatusmsg(bud, ""); 1421 const char *rst_msg = buddy_getstatusmsg(bud, "");
1422 if (rst_msg) { 1422 if (rst_msg) {
1423 snprintf(buffer, 4095, "Last status message: %s", rst_msg); 1423 snprintf(buffer, 4095, "Last status message: %s", rst_msg);
1424 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1424 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1425 } 1425 }
1426 } 1426 }
1427 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { 1427 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
1428 gchar rprio; 1428 gchar rprio;
1429 enum imstatus rstatus; 1429 enum imstatus rstatus;
1437 rst_time = buddy_getstatustime(bud, p_res->data); 1437 rst_time = buddy_getstatustime(bud, p_res->data);
1438 rpgp = buddy_resource_pgp(bud, p_res->data); 1438 rpgp = buddy_resource_pgp(bud, p_res->data);
1439 1439
1440 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus], 1440 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
1441 rprio, (char*)p_res->data); 1441 rprio, (char*)p_res->data);
1442 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1442 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1443 if (rst_msg) { 1443 if (rst_msg) {
1444 snprintf(buffer, 4095, "Status message: %s", rst_msg); 1444 snprintf(buffer, 4095, "Status message: %s", rst_msg);
1445 scr_WriteIncomingMessage(bjid, buffer, 1445 scr_WriteIncomingMessage(bjid, buffer,
1446 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 1446 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1447 } 1447 }
1448 if (rst_time) { 1448 if (rst_time) {
1449 char tbuf[128]; 1449 char tbuf[128];
1450 1450
1451 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); 1451 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
1452 snprintf(buffer, 127, "Status timestamp: %s", tbuf); 1452 snprintf(buffer, 127, "Status timestamp: %s", tbuf);
1453 scr_WriteIncomingMessage(bjid, buffer, 1453 scr_WriteIncomingMessage(bjid, buffer,
1454 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 1454 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1455 } 1455 }
1456 #ifdef HAVE_GPGME 1456 #ifdef HAVE_GPGME
1457 if (rpgp && rpgp->sign_keyid) { 1457 if (rpgp && rpgp->sign_keyid) {
1458 snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid); 1458 snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid);
1459 scr_WriteIncomingMessage(bjid, buffer, 1459 scr_WriteIncomingMessage(bjid, buffer,
1460 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 1460 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1461 if (rpgp->last_sigsum) { 1461 if (rpgp->last_sigsum) {
1462 gpgme_sigsum_t ss = rpgp->last_sigsum; 1462 gpgme_sigsum_t ss = rpgp->last_sigsum;
1463 snprintf(buffer, 4095, "Last PGP signature: %s", 1463 snprintf(buffer, 4095, "Last PGP signature: %s",
1464 (ss & GPGME_SIGSUM_GREEN ? "good": 1464 (ss & GPGME_SIGSUM_GREEN ? "good":
1465 (ss & GPGME_SIGSUM_RED ? "bad" : "unknown"))); 1465 (ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
1466 scr_WriteIncomingMessage(bjid, buffer, 1466 scr_WriteIncomingMessage(bjid, buffer,
1467 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 1467 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1468 } 1468 }
1469 } 1469 }
1470 #endif 1470 #endif
1471 g_free(p_res->data); 1471 g_free(p_res->data);
1472 } 1472 }
1488 // We do not display the note, we just tell the user. 1488 // We do not display the note, we just tell the user.
1489 g_free(note->text); 1489 g_free(note->text);
1490 g_free(note->jid); 1490 g_free(note->jid);
1491 g_free(note); 1491 g_free(note);
1492 scr_WriteIncomingMessage(bjid, "(This item has an annotation)", 0, 1492 scr_WriteIncomingMessage(bjid, "(This item has an annotation)", 0,
1493 HBB_PREFIX_INFO); 1493 HBB_PREFIX_INFO, 0);
1494 } 1494 }
1495 } 1495 }
1496 } 1496 }
1497 1497
1498 // room_names() is a variation of do_info(), for chatrooms only 1498 // room_names() is a variation of do_info(), for chatrooms only
1520 1520
1521 bjid = buddy_getjid(bud); 1521 bjid = buddy_getjid(bud);
1522 1522
1523 buffer = g_new(char, 4096); 1523 buffer = g_new(char, 4096);
1524 strncpy(buffer, "Room members:", 127); 1524 strncpy(buffer, "Room members:", 127);
1525 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1525 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1526 1526
1527 resources = buddy_getresources(bud); 1527 resources = buddy_getresources(bud);
1528 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { 1528 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
1529 enum imstatus rstatus; 1529 enum imstatus rstatus;
1530 const char *rst_msg; 1530 const char *rst_msg;
1534 1534
1535 if (style == style_short) { 1535 if (style == style_short) {
1536 snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], 1536 snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus],
1537 (char*)p_res->data, 1537 (char*)p_res->data,
1538 rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); 1538 rst_msg ? " -- " : "", rst_msg ? rst_msg : "");
1539 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1539 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1540 } else { 1540 } else {
1541 // (Style "normal" or "quiet") 1541 // (Style "normal" or "quiet")
1542 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], 1542 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
1543 (char*)p_res->data); 1543 (char*)p_res->data);
1544 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 1544 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1545 if (rst_msg && style == style_normal) { 1545 if (rst_msg && style == style_normal) {
1546 snprintf(buffer, 4095, "Status message: %s", rst_msg); 1546 snprintf(buffer, 4095, "Status message: %s", rst_msg);
1547 scr_WriteIncomingMessage(bjid, buffer, 1547 scr_WriteIncomingMessage(bjid, buffer,
1548 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 1548 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1549 } 1549 }
1550 } 1550 }
1551 g_free(p_res->data); 1551 g_free(p_res->data);
1552 } 1552 }
1553 g_slist_free(resources); 1553 g_slist_free(resources);
2304 realjid = buddy_getrjid(bud, nick); 2304 realjid = buddy_getrjid(bud, nick);
2305 2305
2306 buffer = g_new(char, 4096); 2306 buffer = g_new(char, 4096);
2307 2307
2308 snprintf(buffer, 4095, "Whois [%s]", nick); 2308 snprintf(buffer, 4095, "Whois [%s]", nick);
2309 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); 2309 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
2310 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus], 2310 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus],
2311 rst_msg); 2311 rst_msg);
2312 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2312 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2313 2313
2314 if (rst_time) { 2314 if (rst_time) {
2315 char tbuf[128]; 2315 char tbuf[128];
2316 2316
2317 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); 2317 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
2318 snprintf(buffer, 127, "Timestamp: %s", tbuf); 2318 snprintf(buffer, 127, "Timestamp: %s", tbuf);
2319 scr_WriteIncomingMessage(bjid, buffer, 2319 scr_WriteIncomingMessage(bjid, buffer,
2320 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2320 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2321 } 2321 }
2322 2322
2323 if (realjid) { 2323 if (realjid) {
2324 snprintf(buffer, 4095, "JID : <%s>", realjid); 2324 snprintf(buffer, 4095, "JID : <%s>", realjid);
2325 scr_WriteIncomingMessage(bjid, buffer, 2325 scr_WriteIncomingMessage(bjid, buffer,
2326 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2326 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2327 } 2327 }
2328 2328
2329 snprintf(buffer, 4095, "Role : %s", strrole[role]); 2329 snprintf(buffer, 4095, "Role : %s", strrole[role]);
2330 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2330 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2331 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]); 2331 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
2332 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2332 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2333 snprintf(buffer, 4095, "Priority : %d", rprio); 2333 snprintf(buffer, 4095, "Priority : %d", rprio);
2334 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2334 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2335 2335
2336 scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO); 2336 scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO, 0);
2337 2337
2338 g_free(buffer); 2338 g_free(buffer);
2339 g_free(nick); 2339 g_free(nick);
2340 free_arg_lst(paramlst); 2340 free_arg_lst(paramlst);
2341 } 2341 }
2386 if (!bm) 2386 if (!bm)
2387 return; 2387 return;
2388 2388
2389 sbuf = g_string_new(""); 2389 sbuf = g_string_new("");
2390 2390
2391 scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO); 2391 scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO, 0);
2392 2392
2393 for (bmp = bm; bmp; bmp = g_slist_next(bmp)) { 2393 for (bmp = bm; bmp; bmp = g_slist_next(bmp)) {
2394 g_string_printf(sbuf, "<%s>", (char*)bmp->data); 2394 g_string_printf(sbuf, "<%s>", (char*)bmp->data);
2395 scr_WriteIncomingMessage(NULL, sbuf->str, 2395 scr_WriteIncomingMessage(NULL, sbuf->str,
2396 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); 2396 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
2397 } 2397 }
2398 2398
2399 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); 2399 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
2400 update_roster = TRUE; 2400 update_roster = TRUE;
2401 g_string_free(sbuf, TRUE); 2401 g_string_free(sbuf, TRUE);
2818 case pgp_info: 2818 case pgp_info:
2819 sbuf = g_string_new(""); 2819 sbuf = g_string_new("");
2820 if (settings_pgp_getkeyid(fjid)) { 2820 if (settings_pgp_getkeyid(fjid)) {
2821 g_string_printf(sbuf, "PGP Encryption key id: %s", 2821 g_string_printf(sbuf, "PGP Encryption key id: %s",
2822 settings_pgp_getkeyid(fjid)); 2822 settings_pgp_getkeyid(fjid));
2823 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO); 2823 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
2824 } 2824 }
2825 disabled = settings_pgp_getdisabled(fjid); 2825 disabled = settings_pgp_getdisabled(fjid);
2826 g_string_printf(sbuf, "PGP encryption is %s", 2826 g_string_printf(sbuf, "PGP encryption is %s",
2827 (disabled ? "disabled" : "enabled")); 2827 (disabled ? "disabled" : "enabled"));
2828 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO); 2828 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
2829 if (!disabled && settings_pgp_getforce(fjid)) { 2829 if (!disabled && settings_pgp_getforce(fjid)) {
2830 scr_WriteIncomingMessage(fjid, 2830 scr_WriteIncomingMessage(fjid,
2831 "Encryption enforced (no negotiation)", 2831 "Encryption enforced (no negotiation)",
2832 0, HBB_PREFIX_INFO); 2832 0, HBB_PREFIX_INFO, 0);
2833 } 2833 }
2834 g_string_free(sbuf, TRUE); 2834 g_string_free(sbuf, TRUE);
2835 break; 2835 break;
2836 default: 2836 default:
2837 break; 2837 break;