Mercurial > ~mikael > mcabber > hg
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); |