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); }