aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-13 10:08:07 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-13 10:08:07 +0200
commitf8b3b1d7944e7bb5a5dfb7ec349e064faec02329 (patch)
tree4d0c3b0b807cf5fdc7662eba1501d77ddedf0456 /examples/GuiClient
parent93fe5c0e92964cb72dae88849b3fa1e37eae15eb (diff)
downloadqxmpp-f8b3b1d7944e7bb5a5dfb7ec349e064faec02329.tar.gz
simplify roster
Diffstat (limited to 'examples/GuiClient')
-rw-r--r--examples/GuiClient/GuiClient.pro1
-rw-r--r--examples/GuiClient/rosterItem.cpp106
-rw-r--r--examples/GuiClient/rosterItem.h13
-rw-r--r--examples/GuiClient/rosterItemModel.cpp22
4 files changed, 42 insertions, 100 deletions
diff --git a/examples/GuiClient/GuiClient.pro b/examples/GuiClient/GuiClient.pro
index aec6064f..ae0e3165 100644
--- a/examples/GuiClient/GuiClient.pro
+++ b/examples/GuiClient/GuiClient.pro
@@ -1,5 +1,6 @@
include(../examples.pri)
+CONFIG += debug
TARGET = GuiClient
TEMPLATE = app
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);
diff --git a/examples/GuiClient/rosterItem.h b/examples/GuiClient/rosterItem.h
index f348ee3e..894542f4 100644
--- a/examples/GuiClient/rosterItem.h
+++ b/examples/GuiClient/rosterItem.h
@@ -44,18 +44,11 @@ public:
rosterItem(const QString& bareJid);
- void setName(const QString& name);
- QString getName();
- void setBareJid(const QString& bareJid);
- void setStatusText(const QString& text);
- void setStatusType(QXmppPresence::AvailableStatusType type);
- void setPresenceType(QXmppPresence::Type type);
void setAvatar(const QImage& image);
+ void setPresence(const QXmppPresence &presence);
+ void setName(const QString& name);
QImage getAvatar();
- QString getBareJid();
- QString getStatusText();
- QXmppPresence::AvailableStatusType getStatusType();
- QXmppPresence::Type getPresenceType();
+ QString getName();
};
class rosterItemDelegate : public QItemDelegate
diff --git a/examples/GuiClient/rosterItemModel.cpp b/examples/GuiClient/rosterItemModel.cpp
index eed42804..f7b6c85a 100644
--- a/examples/GuiClient/rosterItemModel.cpp
+++ b/examples/GuiClient/rosterItemModel.cpp
@@ -47,32 +47,14 @@ void rosterItemModel::addRosterItemIfDontExist(const QString& bareJid)
rosterItem* item = new rosterItem(bareJid);
m_jidRosterItemMap[bareJid] = item;
appendRow(item);
- item->setStatusText("Offline");
- item->setBareJid(bareJid);
}
}
void rosterItemModel::updatePresence(const QString& bareJid, const QMap<QString, QXmppPresence>& presences)
{
addRosterItemIfDontExist(bareJid);
-
- if(presences.count() > 0)
- {
- QString statusText = presences.begin().value().statusText();
- QXmppPresence::AvailableStatusType statusType = presences.begin().value().availableStatusType();
- QXmppPresence::Type presenceType = presences.begin().value().type();
-
- if(statusText.isEmpty())
- {
- if(presenceType == QXmppPresence::Available)
- statusText = "Available";
- else if(presenceType == QXmppPresence::Unavailable)
- statusText = "Offline";
- }
- getRosterItemFromBareJid(bareJid)->setStatusText(statusText);
- getRosterItemFromBareJid(bareJid)->setStatusType(statusType);
- getRosterItemFromBareJid(bareJid)->setPresenceType(presenceType);
- }
+ if (!presences.isEmpty())
+ getRosterItemFromBareJid(bareJid)->setPresence(*presences.begin());
}
void rosterItemModel::updateRosterEntry(const QString& bareJid, const QXmppRosterIq::Item& rosterEntry)