void TAccountXmpp::IconUpdate_MessagesReadForContact(TContact * pContact) { Assert(pContact != NULL); if (m_arraypContactsMessagesUnread.RemoveElementFastF(pContact)) { // We have removed the contact, so check if the list is empty to update the icon if (m_arraypContactsMessagesUnread.FIsEmpty()) { m_uFlagsAccountStatus &= ~FAS_kfMessageUnread; TreeItemAccount_UpdateIcon(); // No more unread messages, so set the normal icon } } MainWindow_SystemTrayMessageReadForContact(pContact); }
// TGroup::ITreeItem::TreeItem_IconUpdateOnMessagesRead() void TGroup::TreeItem_IconUpdateOnMessagesRead() { if (m_cMessagesUnread <= 0) return; // There are no unread messsages m_cMessagesUnread = 0; // Loop through every member and remove the count TGroupMember ** ppMemberStop; TGroupMember ** ppMember = m_arraypaMembers.PrgpGetMembersStop(OUT &ppMemberStop); while (ppMember != ppMemberStop) { TGroupMember * pMember = *ppMember++; Assert(pMember != NULL); Assert(pMember->EGetRuntimeClass() == RTI(TGroupMember)); if (pMember->m_cMessagesUnread > 0) { pMember->m_cMessagesUnread = 0; pMember->TreeItemW_UpdateText(); pMember->TreeItem_IconUpdate(); MainWindow_SystemTrayMessageReadForContact(pMember->m_pContact); } } TreeItemChatLog_UpdateTextAndIcon(); }