static void SetGender(MCONTACT hContact, int gender, bool clear) { if (hContact == NULL) return; char *proto = GetContactProto(hContact); if (IsEmpty(proto)) return; if (gender <= 0) gender = db_get_b(hContact, proto, "Gender", 0); if (gender <= 0) gender = db_get_b(hContact, "UserInfo", "Gender", 0); const char *ico; if (gender == 'M') ico = "gender_male"; else if (gender == 'F') ico = "gender_female"; else ico = NULL; if (ico != NULL || clear) { ExtraIcon *extra = GetExtraIcon(hExtraGender); if (extra) extra->setIconByName((int)hExtraGender, hContact, ico); } }
static void SetVisibility(MCONTACT hContact, int apparentMode, bool clear) { if (hContact == NULL) return; char *proto = GetContactProto(hContact); if (IsEmpty(proto)) return; if (apparentMode <= 0) apparentMode = db_get_w(hContact, proto, "ApparentMode", 0); HANDLE hExtraIcon, hIcolib = NULL; if (db_get_b(hContact, proto, "ChatRoom", 0)) { // Is chat hExtraIcon = hExtraChat; if (apparentMode == ID_STATUS_OFFLINE) hIcolib = Skin_GetIconHandle("ChatActivity"); } else { // Not chat hExtraIcon = hExtraVisibility; if (apparentMode == ID_STATUS_OFFLINE) hIcolib = LoadSkinnedIconHandle(SKINICON_OTHER_INVISIBLE_ALL); else if (apparentMode == ID_STATUS_ONLINE) hIcolib = LoadSkinnedIconHandle(SKINICON_OTHER_VISIBLE_ALL); } if (hIcolib != NULL || clear) { ExtraIcon *extra = GetExtraIcon(hExtraIcon); if (extra) extra->setIcon((int)hExtraIcon, hContact, hIcolib); } }
MIR_APP_DLL(int) ExtraIcon_Clear(HANDLE hExtraIcon, MCONTACT hContact) { if (hExtraIcon == NULL || hContact == NULL) return -1; ExtraIcon *extra = GetExtraIcon(hExtraIcon); if (extra == NULL) return -1; return extra->setIcon((INT_PTR)hExtraIcon, hContact, NULL); }
MIR_APP_DLL(int) ExtraIcon_SetIconByName(HANDLE hExtraIcon, MCONTACT hContact, const char *icoName) { if (hExtraIcon == NULL || hContact == NULL) return -1; ExtraIcon *extra = GetExtraIcon(hExtraIcon); if (extra == NULL) return -1; return extra->setIconByName((INT_PTR)hExtraIcon, hContact, icoName); }
INT_PTR ExtraIcon_SetIconByName(WPARAM wParam, LPARAM lParam) { if (wParam == 0) return -1; EXTRAICON *ei = (EXTRAICON*)wParam; if (ei->cbSize < (int)sizeof(EXTRAICON) || ei->hExtraIcon == NULL || ei->hContact == NULL) return -1; ExtraIcon *extra = GetExtraIcon(ei->hExtraIcon); if (extra == NULL) return -1; return extra->setIconByName((int)ei->hExtraIcon, ei->hContact, ei->icoName); }