void CMraProto::SetExtraIcons(MCONTACT hContact) { DWORD dwID, dwGroupID, dwContactSeverFlags; if (GetContactBasicInfoW(hContact, &dwID, &dwGroupID, NULL, &dwContactSeverFlags, NULL, NULL, NULL, NULL)) return; DWORD dwIconID = -1; DWORD dwXStatus = MRA_MIR_XSTATUS_NONE; if (m_bLoggedIn) { dwXStatus = getByte(hContact, DBSETTING_XSTATUSID, MRA_MIR_XSTATUS_NONE); if (dwID == -1) dwIconID = (dwContactSeverFlags == -1) ? ADV_ICON_DELETED : ADV_ICON_NOT_ON_SERVER; else { if (dwGroupID == 103) dwIconID = ADV_ICON_PHONE; else { if (dwContactSeverFlags) if (dwContactSeverFlags == -1) dwIconID = ADV_ICON_DELETED; else dwIconID = ADV_ICON_NOT_AUTHORIZED; } } } if (dwIconID == -1) { CMStringW statusMsg; mraGetStringW(hContact, DBSETTING_BLOGSTATUS, statusMsg); if (statusMsg.GetLength()) dwIconID = ADV_ICON_BLOGSTATUS; } ExtraIcon_SetIcon(hExtraXstatusIcon, hContact, (IsXStatusValid(dwXStatus) || dwXStatus == MRA_MIR_XSTATUS_UNKNOWN) ? hXStatusAdvancedStatusIcons[dwXStatus] : NULL); ExtraIcon_SetIcon(hExtraInfo, hContact, (dwIconID != -1) ? gdiExtraStatusIconsItems[dwIconID].hIcolib : NULL); }
static int ProtocolApplyIcon(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE) wParam; char *proto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); if (IsEmpty(proto)) return 0; ProtoInfo *pi = FindProto(proto); HANDLE hImage = INVALID_HANDLE_VALUE; if (pi != NULL) hImage = pi->hImage; ExtraIcon_SetIcon(hExtraProto, hContact, hImage); return 0; }
static int SettingChanged(WPARAM hContact, LPARAM lParam) { if (hContact == NULL) return 0; char *proto = GetContactProto(hContact); if (IsEmpty(proto)) return 0; DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; bool isProto = (strcmp(cws->szModule, proto) == 0); if (isProto && strcmp(cws->szSetting, "ApparentMode") == 0) { SetVisibility(hContact, cws->value.type == DBVT_DELETED ? 0 : cws->value.wVal, true); return 0; } if (strcmp(cws->szSetting, "Gender") == 0 && (isProto || strcmp(cws->szModule, "UserInfo") == 0)) { SetGender(hContact, cws->value.type == DBVT_DELETED ? 0 : cws->value.bVal, true); return 0; } for (int i = 0; i < SIZEOF(infos); i++) { Info &p = infos[i]; for (int j = 0; j < SIZEOF(p.db); j += 2) { if (p.db[j + 1] == NULL) break; if (p.db[j] == NULL && !isProto) continue; if (p.db[j] != NULL && strcmp(cws->szModule, p.db[j])) continue; if (strcmp(cws->szSetting, p.db[j + 1])) continue; bool show = (cws->value.type != DBVT_DELETED && !IsEmpty(cws->value.pszVal)); ExtraIcon_SetIcon(p.hExtraIcon, hContact, show ? p.hIcolib : NULL); break; } } return 0; }
int __fastcall ApplyFingerprintImage(MCONTACT hContact, LPTSTR szMirVer) { if (hContact == NULL) return 0; HANDLE hImage = INVALID_HANDLE_VALUE; if (szMirVer) hImage = GetIconIndexFromFI(szMirVer); ExtraIcon_SetIcon(hExtraIcon, hContact, hImage); if (arMonitoredWindows.getIndex((HANDLE)hContact) != -1) SetSrmmIcon(hContact, szMirVer); MCONTACT hMeta = db_mc_getMeta(hContact); if (hMeta && db_mc_getMostOnline(hMeta) == hContact) db_set_ts(hMeta, META_PROTO, "MirVer", szMirVer); return 0; }
bool SetContactExtraImage(MCONTACT hContact, EImageIndex nIndex) { if (!hExtraIcon) return false; HANDLE hIcolib; switch (nIndex) { case eiUp: hIcolib = Quotes_GetIconHandle(IDI_ICON_UP); break; case eiDown: hIcolib = Quotes_GetIconHandle(IDI_ICON_DOWN); break; case eiNotChanged: hIcolib = Quotes_GetIconHandle(IDI_ICON_NOTCHANGED); break; default: hIcolib = NULL; } return ExtraIcon_SetIcon(hExtraIcon, hContact, hIcolib) == 0; }
static void SetExtraIcons(MCONTACT hContact) { if (hContact == NULL) return; char *proto = GetContactProto(hContact); if ( IsEmpty(proto)) return; for (unsigned int i = 0; i < SIZEOF(infos); i++) { Info &p = infos[i]; for (unsigned int j = 0; j < SIZEOF(p.db); j += 2) { if (p.db[j + 1] == NULL) break; ptrA szValue(db_get_sa(hContact, p.db[j] == NULL ? proto : p.db[j], p.db[j + 1])); if (!IsEmpty(szValue)) { ExtraIcon_SetIcon(p.hExtraIcon, hContact, p.hIcolib); break; } } } }
bool CExtraImages::SetContactExtraImage(HANDLE hContact,EImageIndex nIndex)const { // tstring s = Quotes_DBGetStringT(hContact,LIST_MODULE_NAME,CONTACT_LIST_NAME); // tostringstream o; // o << _T("SetContactExtraImage for ") << s << _T("\nExtra image list init: ") << m_bExtraImagesInit << _T("\n"); bool bResult = false; if(m_hExtraIcons) { // o << "Using extra icon interface\n"; std::string sIconName; switch(nIndex) { case eiUp: sIconName = Quotes_MakeIconName(ICON_STR_QUOTE_UP); break; case eiDown: sIconName = Quotes_MakeIconName(ICON_STR_QUOTE_DOWN); break; case eiNotChanged: sIconName = Quotes_MakeIconName(ICON_STR_QUOTE_NOT_CHANGED); break; } bResult = (0 == ExtraIcon_SetIcon(m_hExtraIcons,hContact,sIconName.c_str())); } else if(m_bExtraImagesInit && ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) { // o << "Using contact list interface index is "; IconExtraColumn iec = {0}; iec.cbSize = sizeof(iec); iec.ColumnType = m_nSlot; { CGuard<CLightMutex> cs(m_lmExtraImages); switch(nIndex) { case eiUp: // o << "up\n"; iec.hImage = m_ahExtraImages[eiUp]; break; case eiDown: // o << "down\n"; iec.hImage = m_ahExtraImages[eiDown]; break; case eiNotChanged: // o << "not changed\n"; iec.hImage = m_ahExtraImages[eiNotChanged]; break; default: // o << "invalid\n"; iec.hImage = INVALID_IMAGE_HANDLE; break; } } bResult = (0 == CallService(MS_CLIST_EXTRA_SET_ICON,reinterpret_cast<WPARAM>(hContact),reinterpret_cast<LPARAM>(&iec))); } // o << "Result is " << bResult; // LogIt(Info,o.str()); return bResult; }
static void DefaultSetIcon(HANDLE hContact, Info *info, const char *text) { ExtraIcon_SetIcon(info->hExtraIcon, hContact, text ? info->icon : NULL); }
static void CALLBACK SetExtraImage(LPARAM lParam) { /* get contact's country */ int countryNumber = ServiceDetectContactOriginCountry(lParam, 0); ExtraIcon_SetIcon(hExtraIconSvc, lParam, (countryNumber != 0xFFFF || g_bUseUnknownFlag) ? LoadFlagHandle(countryNumber) : NULL); }