Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/roster.c @ 1802:b135572fcd26
Add urgent flag per screen buffer
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 21 Mar 2010 15:13:33 +0100 |
parents | e6e89b1d7831 |
children | 7d3060070d10 |
comparison
equal
deleted
inserted
replaced
1801:07e73049f7c5 | 1802:b135572fcd26 |
---|---|
101 /* To keep track of last status message */ | 101 /* To keep track of last status message */ |
102 gchar *offline_status_message; | 102 gchar *offline_status_message; |
103 | 103 |
104 /* Flag used for the UI */ | 104 /* Flag used for the UI */ |
105 guint flags; | 105 guint flags; |
106 guint ui_prio; // Boolean, positive if "attention" is requested | |
106 | 107 |
107 // list: user -> points to his group; group -> points to its users list | 108 // list: user -> points to his group; group -> points to its users list |
108 GSList *list; | 109 GSList *list; |
109 } roster; | 110 } roster; |
110 | 111 |
608 unread_list = g_slist_append(unread_list, roster_usr); | 609 unread_list = g_slist_append(unread_list, roster_usr); |
609 } else { | 610 } else { |
610 if (roster_usr->flags & ROSTER_FLAG_MSG) | 611 if (roster_usr->flags & ROSTER_FLAG_MSG) |
611 unread_list_modified = TRUE; | 612 unread_list_modified = TRUE; |
612 roster_usr->flags &= ~ROSTER_FLAG_MSG; | 613 roster_usr->flags &= ~ROSTER_FLAG_MSG; |
614 roster_usr->ui_prio = 0; | |
613 if (unread_list) { | 615 if (unread_list) { |
614 GSList *node = g_slist_find(unread_list, roster_usr); | 616 GSList *node = g_slist_find(unread_list, roster_usr); |
615 if (node) | 617 if (node) |
616 unread_list = g_slist_delete_link(unread_list, node); | 618 unread_list = g_slist_delete_link(unread_list, node); |
617 } | 619 } |
643 // Message flag is FALSE. | 645 // Message flag is FALSE. |
644 guint msg = FALSE; | 646 guint msg = FALSE; |
645 if (roster_usr->flags & ROSTER_FLAG_MSG) | 647 if (roster_usr->flags & ROSTER_FLAG_MSG) |
646 unread_list_modified = TRUE; | 648 unread_list_modified = TRUE; |
647 roster_usr->flags &= ~ROSTER_FLAG_MSG; | 649 roster_usr->flags &= ~ROSTER_FLAG_MSG; |
650 roster_usr->ui_prio = 0; | |
648 if (unread_list) { | 651 if (unread_list) { |
649 GSList *node = g_slist_find(unread_list, roster_usr); | 652 GSList *node = g_slist_find(unread_list, roster_usr); |
650 if (node) | 653 if (node) |
651 unread_list = g_slist_delete_link(unread_list, node); | 654 unread_list = g_slist_delete_link(unread_list, node); |
652 } | 655 } |
681 /* Call external command */ | 684 /* Call external command */ |
682 hk_ext_cmd("", 'U', (guchar)MIN(255, unread_count), NULL); | 685 hk_ext_cmd("", 'U', (guchar)MIN(255, unread_count), NULL); |
683 } | 686 } |
684 } | 687 } |
685 | 688 |
689 // roster_setuiprio(jid, special, prio_value, action) | |
690 // Set the "attention" priority value for the given roster item. | |
691 // Note that this function doesn't create the roster item if it doesn't exist. | |
692 void roster_setuiprio(const char *jid, guint special, guint value, | |
693 enum setuiprio_ops action) | |
694 { | |
695 guint oldval, newval; | |
696 roster *roster_usr; | |
697 | |
698 if (special) { | |
699 roster_usr = &roster_special; | |
700 } else { | |
701 GSList *sl_user = roster_find(jid, jidsearch, | |
702 ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT); | |
703 if (!sl_user) | |
704 return; | |
705 | |
706 roster_usr = (roster*)sl_user->data; | |
707 } | |
708 oldval = roster_usr->ui_prio; | |
709 | |
710 if (action == prio_max) | |
711 newval = MAX(oldval, value); | |
712 else if (action == prio_inc) | |
713 newval = oldval + value; | |
714 else // prio_set | |
715 newval = value; | |
716 | |
717 roster_usr->ui_prio = newval; | |
718 } | |
719 | |
720 guint roster_getuiprio(const char *jid, guint special) | |
721 { | |
722 roster *roster_usr; | |
723 GSList *sl_user; | |
724 | |
725 if (special) { | |
726 roster_usr = &roster_special; | |
727 return roster_usr->ui_prio; | |
728 } | |
729 | |
730 sl_user = roster_find(jid, jidsearch, | |
731 ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT); | |
732 if (!sl_user) | |
733 return 0; | |
734 roster_usr = (roster*)sl_user->data; | |
735 return roster_usr->ui_prio; | |
736 } | |
737 | |
686 const char *roster_getname(const char *jid) | 738 const char *roster_getname(const char *jid) |
687 { | 739 { |
688 GSList *sl_user; | 740 GSList *sl_user; |
689 roster *roster_usr; | 741 roster *roster_usr; |
690 | 742 |
1392 { | 1444 { |
1393 roster *roster_usr = rosterdata; | 1445 roster *roster_usr = rosterdata; |
1394 return roster_usr->flags; | 1446 return roster_usr->flags; |
1395 } | 1447 } |
1396 | 1448 |
1449 guint buddy_getuiprio(gpointer rosterdata) | |
1450 { | |
1451 roster *roster_usr = rosterdata; | |
1452 return roster_usr->ui_prio; | |
1453 } | |
1454 | |
1397 // buddy_setonserverflag() | 1455 // buddy_setonserverflag() |
1398 // Set the on_server flag | 1456 // Set the on_server flag |
1399 void buddy_setonserverflag(gpointer rosterdata, guint onserver) | 1457 void buddy_setonserverflag(gpointer rosterdata, guint onserver) |
1400 { | 1458 { |
1401 roster *roster_usr = rosterdata; | 1459 roster *roster_usr = rosterdata; |