--- a/mcabber/mcabber/roster.c Thu Mar 22 19:27:48 2018 +0100
+++ b/mcabber/mcabber/roster.c Sun Sep 23 22:52:29 2018 +0200
@@ -108,6 +108,7 @@
/* Flag used for the UI */
guint flags;
guint ui_prio; // Boolean, positive if "attention" is requested
+ guint unread;
// list: user -> points to his group; group -> points to its users list
GSList *list;
@@ -729,6 +730,27 @@
}
}
+// roster_msg_update_unread()
+// If increment is true, increment the unread messages count for jid by 1.
+// If increment is false, reset the unread messages count for jid to 0.
+void roster_msg_update_unread(const char *jid, gboolean increment)
+{
+ GSList *sl_user;
+ roster *roster_usr;
+
+ sl_user = roster_find(jid, jidsearch,
+ ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT);
+ if (!sl_user)
+ return;
+
+ roster_usr = (roster*)sl_user->data;
+
+ if (increment)
+ roster_usr->unread++;
+ else
+ roster_usr->unread = 0;
+}
+
// roster_setuiprio(jid, special, prio_value, action)
// Set the "attention" priority value for the given roster item.
// Note that this function doesn't create the roster item if it doesn't exist.
@@ -1541,6 +1563,12 @@
return roster_usr->ui_prio;
}
+guint buddy_getunread(gpointer rosterdata)
+{
+ roster *roster_usr = rosterdata;
+ return roster_usr->unread;
+}
+
// buddy_setonserverflag()
// Set the on_server flag
void buddy_setonserverflag(gpointer rosterdata, guint onserver)