int OnEventFilterAdd(WPARAM hContact, LPARAM lParam) { DBEVENTINFO *dbei = (DBEVENTINFO *)lParam; if (FLAG_CONTAINS(dbei->flags, DBEF_SENT) && CheckProtoSupport(dbei->szModule) && db_get_b(hContact, "Tab_SRMsg", "no_ack", 0)) SetSRMMIcon(hContact, ICON_NOSENT); ExtraIconsApply(hContact, 0); return 0; }
bool HasUnread(MCONTACT hContact) { const char *szProto = GetContactProto(hContact); if (CheckProtoSupport(szProto)) { return ((GetLastSentMessageTime(hContact) > db_get_dw(hContact, MODULENAME, DBKEY_MESSAGE_READ_TIME, 0)) && db_get_dw(hContact, MODULENAME, DBKEY_MESSAGE_READ_TIME, 0) != 0); } return false; }
int OnProtoAck(WPARAM, LPARAM lParam) { ACKDATA *pAck = (ACKDATA *)lParam; if (pAck && pAck->type == ACKTYPE_MESSAGE && CheckProtoSupport(pAck->szModule)) { if (pAck->result == ACKRESULT_SUCCESS) { SetSRMMIcon(pAck->hContact, ICON_UNREAD); ExtraIconsApply(pAck->hContact, 0); } else if (pAck->result == ACKRESULT_FAILED) { SetSRMMIcon(pAck->hContact, ICON_FAILED); } } return 0; }
int OnSrmmWindowEvent(WPARAM, LPARAM lParam) { MessageWindowEventData *event = (MessageWindowEventData *)lParam; if (event == NULL) return 0; if (event->uType == MSG_WINDOW_EVT_OPEN) { const char *szProto = GetContactProto(event->hContact); if (CheckProtoSupport(szProto)) { arMonitoredWindows.insert((HANDLE)event->hContact); IconsUpdate(event->hContact, db_get_dw(event->hContact, MODULENAME, DBKEY_MESSAGE_READ_TIME, 0)); } } else if (event->uType == MSG_WINDOW_EVT_CLOSE) arMonitoredWindows.remove(event->hContact); return 0; }