mcabber/mcabber/roster.c
changeset 1839 f0a07658e009
parent 1812 5dbb3ebbc466
child 1866 e45d13074721
equal deleted inserted replaced
1838:d10c291d31a7 1839:f0a07658e009
   588     roster_usr->flags |= flags;
   588     roster_usr->flags |= flags;
   589   else
   589   else
   590     roster_usr->flags &= ~flags;
   590     roster_usr->flags &= ~flags;
   591 }
   591 }
   592 
   592 
   593 //  roster_unread_count()
   593 //  roster_unread_check()
   594 guint roster_unread_count(void)
   594 static void roster_unread_check(void)
   595 {
   595 {
   596   guint unread_count = 0;
   596   guint unread_count = 0;
   597 #ifdef MODULES_ENABLE
       
   598   gpointer unread_ptr, first_unread;
   597   gpointer unread_ptr, first_unread;
   599   guint muc_unread = 0, muc_attention = 0;
   598   guint muc_unread = 0, muc_attention = 0;
   600   guint attention_count = 0;
   599   guint attention_count = 0;
   601 
   600 
   602   unread_ptr = first_unread = unread_msg(NULL);
   601   unread_ptr = first_unread = unread_msg(NULL);
   617     } while (unread_ptr && unread_ptr != first_unread);
   616     } while (unread_ptr && unread_ptr != first_unread);
   618   }
   617   }
   619 
   618 
   620   hk_unread_list_change(unread_count, attention_count,
   619   hk_unread_list_change(unread_count, attention_count,
   621                         muc_unread, muc_attention);
   620                         muc_unread, muc_attention);
   622 #endif
       
   623   return unread_count;
       
   624 }
   621 }
   625 
   622 
   626 //  roster_msg_setflag()
   623 //  roster_msg_setflag()
   627 // Set the ROSTER_FLAG_MSG to the given value for the given jid.
   624 // Set the ROSTER_FLAG_MSG to the given value for the given jid.
   628 // It will update the buddy's group message flag.
   625 // It will update the buddy's group message flag.
   718   if (buddylist && (new_roster_item || !g_list_find(buddylist, roster_usr)))
   715   if (buddylist && (new_roster_item || !g_list_find(buddylist, roster_usr)))
   719     buddylist_build();
   716     buddylist_build();
   720 
   717 
   721 roster_msg_setflag_return:
   718 roster_msg_setflag_return:
   722   if (unread_list_modified) {
   719   if (unread_list_modified) {
   723     guint unread_count;
       
   724     hlog_save_state();
   720     hlog_save_state();
   725 
   721     roster_unread_check();
   726 #ifdef MODULES_ENABLE
       
   727     unread_count = roster_unread_count();
       
   728 #else
       
   729     unread_count = g_slist_length(unread_list);
       
   730 #endif
       
   731 
       
   732     /* Call external command */
       
   733     hk_ext_cmd("", 'U', (guchar)MIN(255, unread_count), NULL);
       
   734   }
   722   }
   735 }
   723 }
   736 
   724 
   737 //  roster_setuiprio(jid, special, prio_value, action)
   725 //  roster_setuiprio(jid, special, prio_value, action)
   738 // Set the "attention" priority value for the given roster item.
   726 // Set the "attention" priority value for the given roster item.
   763     newval = value;
   751     newval = value;
   764 
   752 
   765   roster_usr->ui_prio = newval;
   753   roster_usr->ui_prio = newval;
   766   unread_list = g_slist_sort(unread_list,
   754   unread_list = g_slist_sort(unread_list,
   767                              (GCompareFunc)&_roster_compare_uiprio);
   755                              (GCompareFunc)&_roster_compare_uiprio);
   768   roster_unread_count();
   756   roster_unread_check();
   769 }
   757 }
   770 
   758 
   771 guint roster_getuiprio(const char *jid, guint special)
   759 guint roster_getuiprio(const char *jid, guint special)
   772 {
   760 {
   773   roster *roster_usr;
   761   roster *roster_usr;