aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/rosterItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/GuiClient/rosterItem.cpp')
-rw-r--r--examples/GuiClient/rosterItem.cpp106
1 files changed, 36 insertions, 70 deletions
diff --git a/examples/GuiClient/rosterItem.cpp b/examples/GuiClient/rosterItem.cpp
index becdcfe5..a853bcdd 100644
--- a/examples/GuiClient/rosterItem.cpp
+++ b/examples/GuiClient/rosterItem.cpp
@@ -25,9 +25,10 @@
#include "rosterItem.h"
#include <QImage>
-rosterItem::rosterItem(const QString& bareJid) //: QStandardItem(bareJid)
+rosterItem::rosterItem(const QString& bareJid)
{
- setStatusText("Offline");
+ setData(bareJid, rosterItem::BareJid);
+ setData("Offline", rosterItem::StatusText);
}
void rosterItem::setName(const QString& name)
@@ -40,84 +41,49 @@ QString rosterItem::getName()
return text();
}
-void rosterItem::setBareJid(const QString& bareJid)
-{
- setData(bareJid, rosterItem::BareJid);
-}
-
-void rosterItem::setStatusText(const QString& text)
-{
- setData(text, rosterItem::StatusText);
-}
-
-QString rosterItem::getBareJid()
-{
- return data(rosterItem::BareJid).toString();
-}
-
-QString rosterItem::getStatusText()
-{
- return data(rosterItem::StatusText).toString();
-}
-
-void rosterItem::setStatusType(QXmppPresence::AvailableStatusType type)
+void rosterItem::setPresence(const QXmppPresence &presence)
{
- setData(static_cast<int>(type), StatusType);
- QString icon;
- switch(type)
- {
- case QXmppPresence::Online:
- case QXmppPresence::Chat:
- icon = "green";
- break;
- case QXmppPresence::Away:
- case QXmppPresence::XA:
- icon = "orange";
- break;
- case QXmppPresence::DND:
- icon = "red";
- break;
- case QXmppPresence::Invisible:
- icon = "gray";
- break;
+ // determine status text
+ QString statusText = presence.statusText();
+ if (statusText.isEmpty()) {
+ if(presence.type() == QXmppPresence::Available)
+ statusText = "Available";
+ else if(presence.type() == QXmppPresence::Unavailable)
+ statusText = "Offline";
}
- if(!icon.isEmpty())
- setIcon(QIcon(":/icons/resource/"+icon+".png"));
-}
-QXmppPresence::AvailableStatusType rosterItem::getStatusType()
-{
- return static_cast<QXmppPresence::AvailableStatusType>(data(StatusType).toInt());
-}
+ // store data
+ setData(statusText, rosterItem::StatusText);
+ setData(static_cast<int>(presence.type()), PresenceType);
+ setData(static_cast<int>(presence.availableStatusType()), StatusType);
-void rosterItem::setPresenceType(QXmppPresence::Type type)
-{
- setData(static_cast<int>(type), PresenceType);
+ // update icon
QString icon;
- switch(type)
- {
- case QXmppPresence::Available:
- break;
- case QXmppPresence::Unavailable:
+ if (presence.type() == QXmppPresence::Available) {
+ switch (presence.availableStatusType())
+ {
+ case QXmppPresence::Online:
+ case QXmppPresence::Chat:
+ icon = "green";
+ break;
+ case QXmppPresence::Away:
+ case QXmppPresence::XA:
+ icon = "orange";
+ break;
+ case QXmppPresence::DND:
+ icon = "red";
+ break;
+ case QXmppPresence::Invisible:
+ icon = "gray";
+ break;
+ }
+ } else {
icon = "gray";
- break;
- case QXmppPresence::Error:
- case QXmppPresence::Subscribe:
- case QXmppPresence::Subscribed:
- case QXmppPresence::Unsubscribe:
- case QXmppPresence::Unsubscribed:
- case QXmppPresence::Probe:
- break;
}
- if(!icon.isEmpty())
+ if (!icon.isEmpty())
setIcon(QIcon(":/icons/resource/"+icon+".png"));
}
-QXmppPresence::Type rosterItem::getPresenceType()
-{
- return static_cast<QXmppPresence::Type>(data(PresenceType).toInt());
-}
-
void rosterItem::setAvatar(const QImage& image)
{
setData(QVariant(image), rosterItem::Avatar);