comparison mcabber/src/screen.c @ 1502:50dbbca69b55

Small style improvement of buddy status line
author Maxim Vuets <maxim.vuets@gmail.com>
date Sat, 23 Aug 2008 19:47:49 +0300
parents e9c71ce96dca
children c74cfe7fd848
comparison
equal deleted inserted replaced
1501:24ff212a1c54 1502:50dbbca69b55
1597 // Redraw the buddy status bar. 1597 // Redraw the buddy status bar.
1598 // Set forceupdate to TRUE if update_panels() must be called. 1598 // Set forceupdate to TRUE if update_panels() must be called.
1599 void scr_UpdateChatStatus(int forceupdate) 1599 void scr_UpdateChatStatus(int forceupdate)
1600 { 1600 {
1601 unsigned short btype, isgrp, ismuc, isspe; 1601 unsigned short btype, isgrp, ismuc, isspe;
1602 const char *btypetext = "Unknown";
1602 const char *fullname; 1603 const char *fullname;
1603 const char *msg = NULL; 1604 const char *msg = NULL;
1604 char status; 1605 char status;
1605 char *buf, *buf_locale; 1606 char *buf, *buf_locale;
1606 1607
1622 } 1623 }
1623 1624
1624 fullname = buddy_getname(BUDDATA(current_buddy)); 1625 fullname = buddy_getname(BUDDATA(current_buddy));
1625 btype = buddy_gettype(BUDDATA(current_buddy)); 1626 btype = buddy_gettype(BUDDATA(current_buddy));
1626 1627
1627 isgrp = btype & ROSTER_TYPE_GROUP; 1628 isgrp = ismuc = isspe = 0;
1628 ismuc = btype & ROSTER_TYPE_ROOM; 1629 if (btype & ROSTER_TYPE_USER) {
1629 isspe = btype & ROSTER_TYPE_SPECIAL; 1630 btypetext = "Buddy";
1631 } else if (btype & ROSTER_TYPE_GROUP) {
1632 btypetext = "Group";
1633 isgrp = 1;
1634 } else if (btype & ROSTER_TYPE_AGENT) {
1635 btypetext = "Agent";
1636 } else if (btype & ROSTER_TYPE_ROOM) {
1637 btypetext = "Room";
1638 ismuc = 1;
1639 } else if (btype & ROSTER_TYPE_SPECIAL) {
1640 btypetext = "Special buffer";
1641 isspe = 1;
1642 }
1630 1643
1631 if (chatmode && !isgrp) { 1644 if (chatmode && !isgrp) {
1632 winbuf *win_entry; 1645 winbuf *win_entry;
1633 win_entry = scr_SearchWindow(buddy_getjid(BUDDATA(current_buddy)), isspe); 1646 win_entry = scr_SearchWindow(buddy_getjid(BUDDATA(current_buddy)), isspe);
1634 if (win_entry && win_entry->bd->lock) 1647 if (win_entry && win_entry->bd->lock)
1635 mvwprintw(chatstatusWnd, 0, 0, "*"); 1648 mvwprintw(chatstatusWnd, 0, 0, "*");
1636 } 1649 }
1637 1650
1638 if (isgrp || isspe) { 1651 if (isgrp || isspe) {
1639 buf_locale = from_utf8(fullname); 1652 buf_locale = from_utf8(fullname);
1640 if (isgrp) 1653 mvwprintw(chatstatusWnd, 0, 5, "%s: %s", btypetext, buf_locale);
1641 mvwprintw(chatstatusWnd, 0, 5, "Group: %s", buf_locale);
1642 else
1643 mvwprintw(chatstatusWnd, 0, 5, "Special buffer: %s", buf_locale);
1644 g_free(buf_locale); 1654 g_free(buf_locale);
1645 if (forceupdate) { 1655 if (forceupdate) {
1646 update_panels(); 1656 update_panels();
1647 } 1657 }
1648 return; 1658 return;
1660 budstate = buddy_getstatus(BUDDATA(current_buddy), NULL); 1670 budstate = buddy_getstatus(BUDDATA(current_buddy), NULL);
1661 if (budstate < imstatus_size) 1671 if (budstate < imstatus_size)
1662 status = imstatus2char[budstate]; 1672 status = imstatus2char[budstate];
1663 } 1673 }
1664 1674
1665 // No status message for groups & MUC rooms 1675 // No status message for MUC rooms
1666 if (!isgrp && !ismuc) { 1676 if (!ismuc) {
1667 GSList *resources, *p_res; 1677 GSList *resources, *p_res;
1668 resources = buddy_getresources(BUDDATA(current_buddy)); 1678 resources = buddy_getresources(BUDDATA(current_buddy));
1669 msg = buddy_getstatusmsg(BUDDATA(current_buddy), 1679 msg = buddy_getstatusmsg(BUDDATA(current_buddy),
1670 resources ? resources->data : ""); 1680 resources ? resources->data : "");
1671 // Free the resources list data 1681 // Free the resources list data
1672 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) 1682 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res))
1673 g_free(p_res->data); 1683 g_free(p_res->data);
1674 g_slist_free(resources); 1684 g_slist_free(resources);
1675 } else if (ismuc) { 1685 } else {
1676 msg = buddy_gettopic(BUDDATA(current_buddy)); 1686 msg = buddy_gettopic(BUDDATA(current_buddy));
1677 } 1687 }
1678 if (!msg) 1688
1679 msg = ""; 1689 if (msg)
1680 1690 buf = g_strdup_printf("[%c] %s: %s -- %s", status, btypetext, fullname, msg);
1681 buf = g_strdup_printf("[%c] Buddy: %s -- %s", status, fullname, msg); 1691 else
1692 buf = g_strdup_printf("[%c] %s: %s", status, btypetext, fullname);
1682 replace_nl_with_dots(buf); 1693 replace_nl_with_dots(buf);
1683 buf_locale = from_utf8(buf); 1694 buf_locale = from_utf8(buf);
1684 mvwprintw(chatstatusWnd, 0, 1, "%s", buf_locale); 1695 mvwprintw(chatstatusWnd, 0, 1, "%s", buf_locale);
1685 g_free(buf_locale); 1696 g_free(buf_locale);
1686 g_free(buf); 1697 g_free(buf);