Ejemplo n.º 1
0
BOOL OnIqSetGoogleSharedStatus(IJabberInterface *ji, HXML iqNode, void *)
{
	GoogleTalkAcc *gta = isGoogle(LPARAM(ji));
	if (gta == NULL)
		return FALSE;
	if (mir_tstrcmp(xi.getAttrValue(iqNode, ATTRNAME_TYPE), IQTYPE_SET))
		return FALSE;
	if (gta->m_bGoogleSharedStatusLock)
		return TRUE;

	int status;
	HXML query = xi.getChildByPath(iqNode, NODENAME_QUERY, 0);
	HXML node = xi.getChildByPath(query, _T("invisible"), 0);
	if (0 == _tcsicmp(_T("true"), xi.getAttrValue(node, _T("value"))))
		status = ID_STATUS_INVISIBLE;
	else {
		LPCTSTR txt = xi.getText(xi.getChildByPath(query, _T("show"), 0));
		if (txt && 0 == _tcsicmp(_T("dnd"), txt))
			status = ID_STATUS_DND;
		else if (gta->m_pa->ppro->m_iStatus == ID_STATUS_DND || gta->m_pa->ppro->m_iStatus == ID_STATUS_INVISIBLE)
			status = ID_STATUS_ONLINE;
		else
			status = gta->m_pa->ppro->m_iStatus;
	}

	if (status != gta->m_pa->ppro->m_iStatus)
		CallProtoService(gta->m_pa->szModuleName, PS_SETSTATUS, status, 0);

	return TRUE;
}
Ejemplo n.º 2
0
BOOL SendHandler(IJabberInterface *ji, HXML node, void *)
{
	GoogleTalkAcc *gta = isGoogle(LPARAM(ji));
	if (gta == NULL)
		return FALSE;

	HXML queryNode = xi.getChildByAttrValue(node, NODENAME_QUERY, ATTRNAME_XMLNS, DISCOVERY_XMLNS);
	if (queryNode) {
		LPCTSTR ptszId = xi.getAttrValue(node, ATTRNAME_ID);
		if (ptszId)
			ji->AddTemporaryIqHandler(DiscoverHandler, JABBER_IQ_TYPE_RESULT, _ttoi(ptszId + 4), NULL, RESPONSE_TIMEOUT, 500);
	}

	if (!mir_tstrcmp(xi.getName(node), _T("presence")) && xi.getAttrValue(node, ATTRNAME_TO) == 0) {
		if (!gta->m_bGoogleSharedStatus)
			return FALSE;

		HXML statNode = xi.getChildByPath(node, _T("status"), 0);
		HXML showNode = xi.getChildByPath(node, _T("show"), 0);
		if (statNode) {
			LPCTSTR status = xi.getText(showNode);
			LPCTSTR msg = xi.getText(statNode);
			gta->SendIqGoogleSharedStatus(status, msg);
		}
	}

	return FALSE;
}
Ejemplo n.º 3
0
int OnExtListInit(WPARAM wParam, LPARAM lParam)
{
	GoogleTalkAcc *gta = isGoogle(lParam);
	if (gta != NULL) {
		LIST<TCHAR> *pList = (LIST<TCHAR>*)wParam;
		pList->insert(JABBER_EXT_GTALK_PMUC);
	}
	return 0;
}
Ejemplo n.º 4
0
BOOL OnIqResultGoogleSharedStatus(IJabberInterface *ji, HXML node, void *)
{
	GoogleTalkAcc *gta = isGoogle(LPARAM(ji));
	if (gta != NULL) {
		gta->m_bGoogleSharedStatus = mir_tstrcmp(xi.getAttrValue(node, ATTRNAME_TYPE), IQTYPE_RESULT) == 0;
		gta->m_bGoogleSharedStatusLock = FALSE;
	}
	return FALSE;
}
Ejemplo n.º 5
0
int InitMenus(WPARAM wParam, LPARAM lParam)
{
	GoogleTalkAcc *pga = isGoogle(lParam);
	if (pga != NULL) {
		LPCSTR szModuleName = pga->m_japi->GetModuleName();
		char szServiceName[100];
		mir_snprintf(szServiceName, "%s/%s", szModuleName, MS_GTALKEXT_OPENMAILBOX);
		CreateServiceFunctionParam(szServiceName, OpenMailboxMenuHandler, (LPARAM)szModuleName);

		CMenuItem mi;
		mi.root = HGENMENU(wParam);
		mi.hIcolibItem = g_hPopupIcon;
		mi.position = 200101;
		mi.name.a = LPGEN("Open mailbox");
		mi.pszService = szServiceName;
		Menu_AddProtoMenuItem(&mi);
	}
	return 0;
}
Ejemplo n.º 6
0
int OnServerDiscoInfo(WPARAM wParam, LPARAM lParam)
{
	GoogleTalkAcc *gta = isGoogle(lParam);
	if (gta == NULL)
		return FALSE;

	// m_ThreadInfo->jabberServerCaps |= JABBER_CAPS_PING;

	JABBER_DISCO_FIELD *fld = (JABBER_DISCO_FIELD*)wParam;
	if (!mir_tstrcmp(fld->category, _T("server")) && !mir_tstrcmp(fld->type, _T("im")) && !mir_tstrcmp(fld->name, _T("Google Talk"))) {
		HXML iq = xi.createNode(NODENAME_IQ, NULL, FALSE);
		xi.addAttr(iq, ATTRNAME_TYPE, IQTYPE_GET);

		HXML query = xi.addChild(iq, NODENAME_QUERY, NULL);
		xi.addChild(query, ATTRNAME_XMLNS, JABBER_FEAT_GTALK_SHARED_STATUS);
		xi.addAttrInt(query, _T("version"), 2);
		gta->m_japi->SendXmlNode(iq);
		xi.destroyNode(iq);
	}
	return 0;
}