示例#1
0
QString StatusIcons::iconKeyByJid(const Jid &AStreamJid, const Jid &AContactJid) const
{
	bool ask = false;
	int show = IPresence::Offline;
	QString subscription = SUBSCRIPTION_NONE;

	IPresence *presence = FPresenceManager!=NULL ? FPresenceManager->findPresence(AStreamJid) : NULL;
	if (AStreamJid == AContactJid)
	{
		subscription = SUBSCRIPTION_BOTH;
		show = presence!=NULL ? presence->show() : show;
	}
	else if (AStreamJid && AContactJid)
	{
		subscription = SUBSCRIPTION_BOTH;
		show = presence!=NULL ? presence->findItem(AContactJid).show : show;
	}
	else
	{
		IRoster *roster = FRosterManager!=NULL ? FRosterManager->findRoster(AStreamJid) : NULL;
		IRosterItem ritem = roster!=NULL ? roster->findItem(AContactJid) : IRosterItem();
		ask = !ritem.subscriptionAsk.isEmpty();
		subscription = ritem.subscription;
		show = presence!=NULL ? presence->findItem(AContactJid).show : show;
	}
	return iconKeyByStatus(show,subscription,ask);
}