void EntryBase::HandlePEPEvent (QString variant, PEPEventBase *event) { const auto& vars = Variants (); if (!vars.isEmpty () && (!vars.contains (variant) || variant.isEmpty ())) variant = vars.first (); if (const auto activity = dynamic_cast<UserActivity*> (event)) return HandleUserActivity (activity, variant); if (const auto mood = dynamic_cast<UserMood*> (event)) return HandleUserMood (mood, variant); if (const auto tune = dynamic_cast<UserTune*> (event)) return HandleUserTune (tune, variant); if (const auto location = dynamic_cast<UserLocation*> (event)) { if (Location_ [variant] == location->GetInfo ()) return; Location_ [variant] = location->GetInfo (); emit locationChanged (variant, this); emit locationChanged (variant); return; } if (PEPMicroblog *microblog = dynamic_cast<PEPMicroblog*> (event)) { emit gotNewPost (*microblog); return; } if (dynamic_cast<UserAvatarData*> (event) || dynamic_cast<UserAvatarMetadata*> (event)) return; qWarning () << Q_FUNC_INFO << "unhandled PEP event from" << GetJID (); }
void EntryBase::HandlePEPEvent (QString variant, PEPEventBase *event) { const QStringList& vars = Variants (); if (!vars.isEmpty () && (!vars.contains (variant) || variant.isEmpty ())) variant = vars.first (); if (UserActivity *activity = dynamic_cast<UserActivity*> (event)) { if (activity->GetGeneral () == UserActivity::GeneralEmpty) Variant2ClientInfo_ [variant].remove ("user_activity"); else { QMap<QString, QVariant> activityMap; activityMap ["general"] = activity->GetGeneralStr (); activityMap ["specific"] = activity->GetSpecificStr (); activityMap ["text"] = activity->GetText (); Variant2ClientInfo_ [variant] ["user_activity"] = activityMap; } emit activityChanged (variant); return; } if (UserMood *mood = dynamic_cast<UserMood*> (event)) { if (mood->GetMood () == UserMood::MoodEmpty) Variant2ClientInfo_ [variant].remove ("user_mood"); else { QMap<QString, QVariant> moodMap; moodMap ["mood"] = mood->GetMoodStr (); moodMap ["text"] = mood->GetText (); Variant2ClientInfo_ [variant] ["user_mood"] = moodMap; } emit moodChanged (variant); return; } if (UserTune *tune = dynamic_cast<UserTune*> (event)) { if (tune->IsNull ()) Variant2ClientInfo_ [variant].remove ("user_tune"); else { QMap<QString, QVariant> tuneMap; tuneMap ["artist"] = tune->GetArtist (); tuneMap ["source"] = tune->GetSource (); tuneMap ["title"] = tune->GetTitle (); tuneMap ["track"] = tune->GetTrack (); tuneMap ["URI"] = tune->GetURI (); tuneMap ["length"] = tune->GetLength (); tuneMap ["rating"] = tune->GetRating (); Variant2ClientInfo_ [variant] ["user_tune"] = tuneMap; } emit tuneChanged (variant); return; } if (UserLocation *location = dynamic_cast<UserLocation*> (event)) { Location_ [variant] = location->GetInfo (); emit locationChanged (variant, this); emit locationChanged (variant); return; } if (PEPMicroblog *microblog = dynamic_cast<PEPMicroblog*> (event)) { emit gotNewPost (*microblog); return; } if (dynamic_cast<UserAvatarData*> (event) || dynamic_cast<UserAvatarMetadata*> (event)) return; qWarning () << Q_FUNC_INFO << "unhandled PEP event from" << GetJID () << "resource" << variant; }