本文整理汇总了C++中QXmppPresence::priority方法的典型用法代码示例。如果您正苦于以下问题:C++ QXmppPresence::priority方法的具体用法?C++ QXmppPresence::priority怎么用?C++ QXmppPresence::priority使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QXmppPresence
的用法示例。
在下文中一共展示了QXmppPresence::priority方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetStatus
EntryStatus GlooxCLEntry::GetStatus (const QString& variant) const
{
if (ODS_)
return EntryStatus ();
if (AuthRequested_)
return EntryStatus (SOnline, QString ());
QXmppRosterManager& rm = Account_->
GetClientConnection ()->GetClient ()->rosterManager ();
if (!rm.isRosterReceived ())
return EntryBase::GetStatus (variant);
const QMap<QString, QXmppPresence>& press = rm.getAllPresencesForBareJid (GetJID ());
if (!press.size ())
return EntryBase::GetStatus (variant);
QXmppPresence max = press.begin ().value ();
Q_FOREACH (const QString& resource, press.keys ())
{
if (!variant.isEmpty () && variant == resource)
{
max = press [resource];
break;
}
const QXmppPresence& pres = press [resource];
if (pres.priority () > max.priority ())
max = pres;
}
return EntryStatus (static_cast<State> (max.availableStatusType () + 1),
max.statusText ());
}
示例2: SetStatus
void EntryBase::SetStatus (const EntryStatus& status, const QString& variant, const QXmppPresence& presence)
{
const bool existed = CurrentStatus_.contains (variant);
const bool wasOffline = existed ?
CurrentStatus_ [variant].State_ == SOffline :
false;
if (existed &&
status == CurrentStatus_ [variant] &&
presence.priority () == Variant2ClientInfo_.value (variant).value ("priority"))
return;
CurrentStatus_ [variant] = status;
const QStringList& vars = Variants ();
if ((!existed || wasOffline) && !vars.isEmpty ())
{
const QString& highest = vars.first ();
if (Location_.contains (QString ()))
Location_ [highest] = Location_.take (QString ());
if (Variant2ClientInfo_.contains (QString ()))
{
const auto& info = Variant2ClientInfo_ [QString ()];
QStringList toCopy;
toCopy << "user_tune" << "user_mood" << "user_activity";
Q_FOREACH (const QString& key, toCopy)
if (info.contains (key))
Variant2ClientInfo_ [highest] [key] = info [key];
}
}
if ((!existed || wasOffline) &&
status.State_ != SOffline)
{
auto conn = Account_->GetClientConnection ();
if (conn->GetInfoReqPolicyManager ()->IsRequestAllowed (InfoRequest::Version, this) &&
!variant.isEmpty ())
conn->FetchVersion (GetJID () + '/' + variant);
}
if (status.State_ != SOffline)
{
if (const int p = presence.priority ())
Variant2ClientInfo_ [variant] ["priority"] = p;
}
else
{
Variant2Version_.remove (variant);
Variant2ClientInfo_.remove (variant);
}
emit statusChanged (status, variant);
if (!existed ||
(existed && status.State_ == SOffline) ||
wasOffline)
emit availableVariantsChanged (vars);
GlooxMessage *message = 0;
if (GetEntryType () == ETPrivateChat)
message = new GlooxMessage (IMessage::MTStatusMessage,
IMessage::DIn,
qobject_cast<RoomCLEntry*> (GetParentCLEntry ())->
GetRoomHandler ()->GetRoomJID (),
GetEntryName (),
Account_->GetClientConnection ().get ());
else
message = new GlooxMessage (IMessage::MTStatusMessage,
IMessage::DIn,
GetJID (),
variant,
Account_->GetClientConnection ().get ());
message->SetMessageSubType (IMessage::MSTParticipantStatusChange);
GlooxProtocol *proto = qobject_cast<GlooxProtocol*> (Account_->GetParentProtocol ());
IProxyObject *proxy = qobject_cast<IProxyObject*> (proto->GetProxyObject ());
const QString& state = proxy->StateToString (status.State_);
const QString& nick = GetEntryName () + '/' + variant;
message->setProperty ("Azoth/Nick", nick);
message->setProperty ("Azoth/TargetState", state);
message->setProperty ("Azoth/StatusText", status.StatusString_);
QString msg = tr ("%1 is now %2 (%3)")
.arg (nick)
.arg (state)
.arg (status.StatusString_);
message->SetBody (msg);
HandleMessage (message);
}
示例3: SetStatus
void EntryBase::SetStatus (const EntryStatus& status, const QString& variant, const QXmppPresence& presence)
{
const bool existed = CurrentStatus_.contains (variant);
const bool wasOffline = existed ?
CurrentStatus_ [variant].State_ == SOffline :
false;
if (existed &&
status == CurrentStatus_ [variant] &&
presence.priority () == Variant2ClientInfo_.value (variant).value ("priority"))
return;
CurrentStatus_ [variant] = status;
const QStringList& vars = Variants ();
if ((!existed || wasOffline) && !vars.isEmpty ())
{
const QString& highest = vars.first ();
if (Location_.contains ({}))
Location_ [highest] = Location_.take ({});
if (Variant2Audio_.contains ({}))
Variant2Audio_ [highest] = Variant2Audio_.take ({});
if (Variant2Mood_.contains ({}))
Variant2Mood_ [highest] = Variant2Mood_.take ({});
if (Variant2Activity_.contains ({}))
Variant2Activity_ [highest] = Variant2Activity_.take ({});
}
if ((!existed || wasOffline) &&
status.State_ != SOffline)
{
auto conn = Account_->GetClientConnection ();
if (conn->GetInfoReqPolicyManager ()->IsRequestAllowed (InfoRequest::Version, this))
{
if (!variant.isEmpty ())
conn->FetchVersion (GetJID () + '/' + variant);
else
conn->FetchVersion (GetJID ());
}
}
if (status.State_ != SOffline)
{
if (const int p = presence.priority ())
Variant2ClientInfo_ [variant] ["priority"] = p;
}
else
{
Variant2Version_.remove (variant);
Variant2ClientInfo_.remove (variant);
Variant2VerString_.remove (variant);
Variant2Identities_.remove (variant);
Variant2Audio_.remove (variant);
Variant2Mood_.remove (variant);
Variant2Activity_.remove (variant);
Variant2SecsDiff_.remove (variant);
}
emit statusChanged (status, variant);
if (!existed ||
status.State_ == SOffline ||
wasOffline)
emit availableVariantsChanged (vars);
GlooxMessage *message = 0;
if (GetEntryType () == EntryType::PrivateChat)
message = new GlooxMessage (IMessage::Type::StatusMessage,
IMessage::Direction::In,
qobject_cast<RoomCLEntry*> (GetParentCLEntryObject ())->
GetRoomHandler ()->GetRoomJID (),
GetEntryName (),
Account_->GetClientConnection ().get ());
else
message = new GlooxMessage (IMessage::Type::StatusMessage,
IMessage::Direction::In,
GetJID (),
variant,
Account_->GetClientConnection ().get ());
message->SetMessageSubType (IMessage::SubType::ParticipantStatusChange);
const auto proxy = Account_->GetParentProtocol ()->GetProxyObject ();
const auto& state = proxy->StateToString (status.State_);
const auto& nick = GetEntryName () + '/' + variant;
message->setProperty ("Azoth/Nick", nick);
message->setProperty ("Azoth/TargetState", state);
message->setProperty ("Azoth/StatusText", status.StatusString_);
const auto& msg = tr ("%1 is now %2 (%3)")
.arg (nick)
.arg (state)
.arg (status.StatusString_);
message->SetBody (msg);
HandleMessage (message);
}