void CMraProto::MraAvatarsSetContactTime(MCONTACT hContact, LPSTR lpszValueName, SYSTEMTIME *pstTime) { if (!lpszValueName) return; INTERNET_TIME itTime; if (pstTime) { itTime.lTimeZone = 0; memmove(&itTime.stTime, pstTime, sizeof(SYSTEMTIME)); } else InternetTimeGetCurrentTime(&itTime); if (itTime.stTime.wYear) mraSetStringExA(hContact, lpszValueName, InternetTimeGetString(&itTime)); else delSetting(hContact, lpszValueName); }
INT_PTR CMraProto::MraSetXStatusEx(WPARAM, LPARAM lParam) { INT_PTR iRet = 1; DWORD dwXStatus; CUSTOM_STATUS *pData = (CUSTOM_STATUS*)lParam; if (pData->cbSize >= sizeof(CUSTOM_STATUS)) { iRet = 0; if (pData->flags & CSSF_MASK_STATUS) { dwXStatus = *pData->status; if (IsXStatusValid(dwXStatus) == FALSE && dwXStatus != MRA_MIR_XSTATUS_NONE) iRet = 1; } else dwXStatus = m_iXStatus; if (pData->flags & (CSSF_MASK_NAME | CSSF_MASK_MESSAGE) && iRet == 0) { if (IsXStatusValid(dwXStatus) || dwXStatus == MRA_MIR_XSTATUS_NONE) { CHAR szValueName[MAX_PATH]; // set custom status name if (pData->flags & CSSF_MASK_NAME) { mir_snprintf(szValueName, SIZEOF(szValueName), "XStatus%ldName", dwXStatus); if (pData->flags & CSSF_UNICODE) { mraSetStringExW(NULL, szValueName, pData->pwszName); mraSetStringExW(NULL, DBSETTING_XSTATUSNAME, pData->pwszName); } else { mraSetStringExA(NULL, szValueName, pData->pszName); mraSetStringExA(NULL, DBSETTING_XSTATUSNAME, pData->pszName); } } // set custom status message if (pData->flags & CSSF_MASK_MESSAGE) { mir_snprintf(szValueName, SIZEOF(szValueName), "XStatus%ldMsg", dwXStatus); if (pData->flags & CSSF_UNICODE) { mraSetStringExW(NULL, szValueName, pData->pwszMessage); mraSetStringExW(NULL, DBSETTING_XSTATUSMSG, pData->pwszMessage); } else { mraSetStringExA(NULL, szValueName, pData->pszMessage); mraSetStringExA(NULL, DBSETTING_XSTATUSMSG, pData->pszMessage); } } } // неудача только если мы не ставили Хстатус и попытались записать сообщения для "нет" статуса else if (!(pData->flags & CSSF_MASK_STATUS)) iRet = 1; } // set/update xstatus code and/or message if (pData->flags & (CSSF_MASK_STATUS | CSSF_MASK_NAME | CSSF_MASK_MESSAGE) && iRet == 0) MraSetXStatusInternal(dwXStatus); // hide menu items if (pData->flags & CSSF_DISABLE_UI) { m_bHideXStatusUI = (*pData->wParam) ? false : true; DWORD dwCount = MRA_XSTATUS_OFF_CLI_COUNT; if (getByte(NULL, "xStatusShowAll", MRA_DEFAULT_SHOW_ALL_XSTATUSES)) dwCount = MRA_XSTATUS_COUNT; for (DWORD i = 0; i < dwCount; i++) Menu_ShowItem(hXStatusMenuItems[i], !m_bHideXStatusUI); } } return iRet; }