quint16 metaInformation::readAboutUserInfo(icqBuffer *socket) { quint16 length = 1; aboutInfoSuccess = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { aboutInfoSuccess = false; return length; } quint16 aboutLength = byteArrayToLEInt16(socket->read(2)); about = socket->read(aboutLength- 1); socket->read(1); length = length + aboutLength + 2; return length; }
void buddyPicture::saveAvatar(quint16 length) { quint8 uinLength = convertToInt8(buffer->read(1)); length -= 1; QString uin = QString::fromUtf8(buffer->read(uinLength)); length -= uinLength; buffer->read(4); length -= 4; QByteArray hash = buffer->read(16); length -= 16; buffer->read(21); length -= 21; quint16 iconLength = convertToInt16(buffer->read(2)); length -= 2; if ( iconLength ) { QSettings settings(QSettings::NativeFormat, QSettings::UserScope, "qutim/qutim."+m_profile_name+"/ICQ."+m_mine_uin, "contactlist"); settings.beginGroup(uin); settings.setValue("iconhash", hash.toHex()); settings.endGroup(); QString iconPath = settings.fileName().section('/', 0, -3) + "/icqicons"; QDir iconDir(iconPath); if ( !iconDir.exists() ) iconDir.mkpath(iconPath); QFile iconFile(iconPath + "/" + hash.toHex()); if ( iconFile.open(QIODevice::WriteOnly) ) { iconFile.write(buffer->read(iconLength)); } emit updateAvatar(uin, hash); } length -= iconLength; if ( length ) buffer->read(length); }
quint16 metaInformation::readInterestsUserInfo(icqBuffer *socket) { quint16 length = 1; interestsInfoSuccess = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { interestsInfoSuccess = false; return length; } quint8 interestsCount = convertToInt8(socket->read(1)); length++; for(int i = 0; i < interestsCount; i++) { if(i == 0) { interCode1 = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 interLength1 = byteArrayToLEInt16(socket->read(2)); interKeyWords1 = socket->read(interLength1 - 1); socket->read(1); length = length + interLength1 + 2; } else if ( i == 1) { interCode2 = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 interLength2 = byteArrayToLEInt16(socket->read(2)); interKeyWords2 = socket->read(interLength2 - 1); socket->read(1); length = length + interLength2 + 2; } else if ( i == 2) { interCode3 = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 interLength3 = byteArrayToLEInt16(socket->read(2)); interKeyWords3 = socket->read(interLength3 - 1); socket->read(1); length = length + interLength3 + 2; } else if ( i == 3 ) { interCode4 = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 interLength4 = byteArrayToLEInt16(socket->read(2)); interKeyWords4 = socket->read(interLength4 - 1); socket->read(1); length = length + interLength4 + 2; } else { socket->read(2); length += 2; quint16 interLength= byteArrayToLEInt16(socket->read(2)); socket->read(interLength); length = length + interLength + 2; } } return length; }
quint16 metaInformation::readWorkUserInfo(icqBuffer *socket) { quint16 length = 1; workInfoSuccess = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { workInfoSuccess = false; return length; } quint16 cityLength = byteArrayToLEInt16(socket->read(2)); workCity = socket->read(cityLength - 1); socket->read(1); length = length + cityLength + 2; quint16 stateLength = byteArrayToLEInt16(socket->read(2)); workState = socket->read(stateLength - 1); socket->read(1); length = length + stateLength + 2; quint16 phoneLength = byteArrayToLEInt16(socket->read(2)); workPhone = socket->read(phoneLength - 1); socket->read(1); length = length + phoneLength + 2; quint16 faxLength = byteArrayToLEInt16(socket->read(2)); workFax = socket->read(faxLength - 1); socket->read(1); length = length + faxLength + 2; quint16 addressLength = byteArrayToLEInt16(socket->read(2)); workAddress = socket->read(addressLength - 1); socket->read(1); length = length + addressLength + 2; quint16 zipLength = byteArrayToLEInt16(socket->read(2)); workZip = socket->read(zipLength - 1); socket->read(1); length = length + zipLength + 2; workCountry = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 companyLength = byteArrayToLEInt16(socket->read(2)); workCompany = socket->read(companyLength - 1); socket->read(1); length = length + companyLength + 2; quint16 departmentLength = byteArrayToLEInt16(socket->read(2)); workDepartment = socket->read(departmentLength - 1); socket->read(1); length = length + departmentLength + 2; quint16 positionLength = byteArrayToLEInt16(socket->read(2)); workPosition = socket->read(positionLength - 1); socket->read(1); length = length + positionLength + 2; workOccupation = byteArrayToLEInt16(socket->read(2)); length += 2; quint16 webpageLength = byteArrayToLEInt16(socket->read(2)); workWebPage = socket->read(webpageLength - 1); socket->read(1); length = length + webpageLength + 2; return length; }
quint16 metaInformation::readMoreUserInfo(icqBuffer *socket) { quint16 length = 1; moreInfoSuccess = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { moreInfoSuccess = false; return length; } moreAge = byteArrayToLEInt16(socket->read(2)); length += 2; moreGender = convertToInt8(socket->read(1)); length ++; quint16 homePageLength = byteArrayToLEInt16(socket->read(2)); homepage = socket->read(homePageLength - 1); socket->read(1); length = length + homePageLength + 2; moreBirthYear = byteArrayToLEInt16(socket->read(2)); length += 2; moreBirthMonth = convertToInt8(socket->read(1)); length ++; moreBirthDay = convertToInt8(socket->read(1)); length ++; moreLang1 = convertToInt8(socket->read(1)); length ++; moreLang2 = convertToInt8(socket->read(1)); length ++; moreLang3 = convertToInt8(socket->read(1)); length ++; socket->read(2); length += 2; quint16 cityLength = byteArrayToLEInt16(socket->read(2)); moreCity = socket->read(cityLength - 1); socket->read(1); length = length + cityLength + 2; quint16 stateLength = byteArrayToLEInt16(socket->read(2)); moreState = socket->read(stateLength - 1); socket->read(1); length = length + stateLength + 2; moreCountry = byteArrayToLEInt16(socket->read(2)); length += 2; socket->read(1); length++; return length; }
quint16 metaInformation::readBasicUserInfo(icqBuffer *socket) { quint16 length = 1; basicInfoSuccess = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { basicInfoSuccess = false; return length; } quint16 nickLength = byteArrayToLEInt16(socket->read(2)); length += 2; basicNick = socket->read(nickLength - 1); socket->read(1); length += nickLength; quint16 firstNameLength = byteArrayToLEInt16(socket->read(2)); basicFirst = socket->read(firstNameLength - 1); socket->read(1); length = length + firstNameLength + 2; quint16 lastNameLength = byteArrayToLEInt16(socket->read(2)); basicLast = socket->read(lastNameLength - 1); socket->read(1); length = length + lastNameLength + 2; quint16 emailLength = byteArrayToLEInt16(socket->read(2)); basicEmail = socket->read(emailLength - 1); socket->read(1); length = length + emailLength + 2; quint16 cityLength = byteArrayToLEInt16(socket->read(2)); basicCity = socket->read(cityLength - 1); socket->read(1); length = length + cityLength + 2; quint16 stateLength = byteArrayToLEInt16(socket->read(2)); basicState = socket->read(stateLength - 1); socket->read(1); length = length + stateLength + 2; quint16 phoneLength = byteArrayToLEInt16(socket->read(2)); basicPhone = socket->read(phoneLength - 1); socket->read(1); length = length +phoneLength + 2; quint16 faxLength = byteArrayToLEInt16(socket->read(2)); basicFax= socket->read(faxLength - 1); socket->read(1); length = length + faxLength + 2; quint16 addressLength = byteArrayToLEInt16(socket->read(2)); basicAddress= socket->read(addressLength - 1); socket->read(1); length = length + addressLength + 2; quint16 cellLength = byteArrayToLEInt16(socket->read(2)); basicCell= socket->read(cellLength - 1); socket->read(1); length = length + cellLength + 2; quint16 zipLength = byteArrayToLEInt16(socket->read(2)); basicZip= socket->read(zipLength - 1); socket->read(1); length = length + zipLength + 2; country = byteArrayToLEInt16(socket->read(2)); length += 2; socket->read(1); basicAuthFlag = convertToInt8(socket->read(1)); webAware = convertToInt8(socket->read(1)); socket->read(1); publishEmail = convertToInt8(socket->read(1)); length += 5; return length; }
quint16 metaInformation::readSearchResult(icqBuffer *socket, bool last) { quint16 length = 1; founded = true; quint8 successByte = convertToInt8(socket->read(1)); if ( successByte != 0x0a) { founded = false; return length; } socket->read(2); length += 2; quint32 userUin = byteArrayToLEInt32(socket->read(4)); length += 4; foundedUin = QString::number(userUin); quint16 nickLength = byteArrayToLEInt16(socket->read(2)); length += 2; foundedNick = socket->read(nickLength - 1); socket->read(1); length += nickLength; quint16 firstLength = byteArrayToLEInt16(socket->read(2)); length += 2; foundedFirst = socket->read(firstLength - 1); socket->read(1); length += firstLength; quint16 lastLength = byteArrayToLEInt16(socket->read(2)); length += 2; foundedLast = socket->read(lastLength - 1); socket->read(1); length += lastLength; quint16 emailLength = byteArrayToLEInt16(socket->read(2)); length += 2; foundedEmail = socket->read(emailLength - 1); socket->read(1); length += emailLength; authFlag = convertToInt8(socket->read(1)); length += 1; foundedStatus = byteArrayToLEInt16(socket->read(2)); length += 2; foundedGender = convertToInt8(socket->read(1)); length += 1; foundedAge = byteArrayToLEInt16(socket->read(2)); length += 2; if ( last ) { socket->read(4); length += 4; } return length; }
TInt8 TDataToInt8(const TData *context) { if (context) return convertToInt8(context->data, context->type); return 0; }