Esempio n. 1
0
INT_PTR __cdecl CJabberProto::OnMenuHandleDirectPresence(WPARAM hContact, LPARAM, LPARAM res)
{
    if (!m_bJabberOnline || !hContact)
        return 0;

    TCHAR *jid, text[1024];
    ptrT tszJid(getTStringA(hContact, "jid"));
    if (tszJid == NULL) {
        ptrT roomid(getTStringA(hContact, "ChatRoomID"));
        if (roomid == NULL)
            return 0;

        JABBER_LIST_ITEM *item = ListGetItemPtr(LIST_CHATROOM, roomid);
        if (item == NULL)
            return 0;

        mir_sntprintf(text, _T("%s/%s"), item->jid, item->nick);
        jid = text;
    }
    else jid = tszJid;

    CMString szValue;
    if (EnterString(szValue, TranslateT("Status Message"), ESF_MULTILINE))
        SendPresenceTo(res, jid, NULL, szValue);
    return 0;
}
Esempio n. 2
0
INT_PTR __cdecl CJabberProto::OnMenuHandleResource(WPARAM hContact, LPARAM, LPARAM res)
{
    if (!m_bJabberOnline || !hContact)
        return 0;

    ptrT tszJid(getTStringA(hContact, "jid"));
    if (tszJid == NULL)
        return 0;

    JABBER_LIST_ITEM *LI = ListGetItemPtr(LIST_ROSTER, tszJid);
    if (LI == NULL)
        return 0;

    if (res == MENUITEM_LASTSEEN) {
        LI->m_pManualResource = NULL;
        LI->resourceMode = RSMODE_LASTSEEN;
    }
    else if (res == MENUITEM_SERVER) {
        LI->m_pManualResource = NULL;
        LI->resourceMode = RSMODE_SERVER;
    }
    else if (res >= MENUITEM_RESOURCES) {
        LI->m_pManualResource = LI->arResources[res - MENUITEM_RESOURCES];
        LI->resourceMode = RSMODE_MANUAL;
    }

    UpdateMirVer(LI);
    MenuUpdateSrmmIcon(LI);
    return 0;
}
Esempio n. 3
0
INT_PTR __cdecl CJabberProto::JabberGetAvatarInfo(WPARAM wParam, LPARAM lParam)
{
	if (!m_options.EnableAvatars)
		return GAIR_NOAVATAR;

	PROTO_AVATAR_INFORMATIONT* AI = (PROTO_AVATAR_INFORMATIONT*)lParam;

	ptrA szHashValue( getStringA(AI->hContact, "AvatarHash"));
	if (szHashValue == NULL) {
		debugLogA("No avatar");
		return GAIR_NOAVATAR;
	}

	TCHAR tszFileName[MAX_PATH];
	GetAvatarFileName(AI->hContact, tszFileName, SIZEOF(tszFileName));
	_tcsncpy(AI->filename, tszFileName, SIZEOF(AI->filename));

	AI->format = (AI->hContact == NULL) ? PA_FORMAT_PNG : getByte(AI->hContact, "AvatarType", 0);

	if (::_taccess(AI->filename, 0) == 0) {
		ptrA szSavedHash( getStringA(AI->hContact, "AvatarSaved"));
		if (szSavedHash != NULL && !strcmp(szSavedHash, szHashValue)) {
			debugLogA("Avatar is Ok: %s == %s", szSavedHash, szHashValue);
			return GAIR_SUCCESS;
		}
	}

	if ((wParam & GAIF_FORCE) != 0 && AI->hContact != NULL && m_bJabberOnline) {
		ptrT tszJid( getTStringA(AI->hContact, "jid"));
		if (tszJid != NULL) {
			JABBER_LIST_ITEM *item = ListGetItemPtr(LIST_ROSTER, tszJid);
			if (item != NULL) {
				BOOL isXVcard = getByte(AI->hContact, "AvatarXVcard", 0);

				TCHAR szJid[JABBER_MAX_JID_LEN]; szJid[0] = 0;
				if (item->arResources.getCount() != NULL && !isXVcard)
					if (TCHAR *bestResName = ListGetBestClientResourceNamePtr(tszJid))
						mir_sntprintf(szJid, SIZEOF(szJid), _T("%s/%s"), tszJid, bestResName);

				if (szJid[0] == 0)
					_tcsncpy_s(szJid, SIZEOF(szJid), tszJid, _TRUNCATE);

				debugLogA("Rereading %s for %S", isXVcard ? JABBER_FEAT_VCARD_TEMP : JABBER_FEAT_AVATAR, szJid);

				m_ThreadInfo->send((isXVcard) ?
					XmlNodeIq( AddIQ(&CJabberProto::OnIqResultGetVCardAvatar, JABBER_IQ_TYPE_GET, szJid)) << XCHILDNS(_T("vCard"), JABBER_FEAT_VCARD_TEMP) :
					XmlNodeIq( AddIQ(&CJabberProto::OnIqResultGetClientAvatar, JABBER_IQ_TYPE_GET, szJid)) << XQUERY(JABBER_FEAT_AVATAR));
				return GAIR_WAITFOR;
			}
		}
	}

	debugLogA("No avatar");
	return GAIR_NOAVATAR;
}
Esempio n. 4
0
LPCSTR GetJidAcc(LPCTSTR jid)
{
	int count = 0;
	PROTOACCOUNT **protos;
	Proto_EnumAccounts(&count, &protos);
	for (int i = 0; i < count; i++) {
		if (getJabberApi(protos[i]->szModuleName)) {
			ptrT tszJid(db_get_tsa(0, protos[i]->szModuleName, "jid"));
			if (!mir_tstrcmpi(jid, tszJid))
				return protos[i]->szModuleName;
		}
	}

	return NULL;
}
Esempio n. 5
0
void OpenContactInbox(LPCSTR szModuleName)
{
	ptrT tszJid(db_get_tsa(0, szModuleName, "jid"));
	if (tszJid == NULL)
		return;

	LPTSTR host = _tcschr(tszJid, '@');
	if (!host)
		return;
	*host++ = 0;

	TCHAR buf[1024];
	if (mir_tstrcmpi(host, COMMON_GMAIL_HOST1) && mir_tstrcmpi(host, COMMON_GMAIL_HOST2))
		mir_sntprintf(buf, INBOX_URL_FORMAT, _T("a/"), host);   // hosted
	else
		mir_sntprintf(buf, INBOX_URL_FORMAT, _T(""), _T("mail")); // common
	OpenUrl(szModuleName, tszJid, buf);
}