diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-13 10:08:07 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-13 10:08:07 +0200 |
| commit | f8b3b1d7944e7bb5a5dfb7ec349e064faec02329 (patch) | |
| tree | 4d0c3b0b807cf5fdc7662eba1501d77ddedf0456 /examples/GuiClient | |
| parent | 93fe5c0e92964cb72dae88849b3fa1e37eae15eb (diff) | |
| download | qxmpp-f8b3b1d7944e7bb5a5dfb7ec349e064faec02329.tar.gz | |
simplify roster
Diffstat (limited to 'examples/GuiClient')
| -rw-r--r-- | examples/GuiClient/GuiClient.pro | 1 | ||||
| -rw-r--r-- | examples/GuiClient/rosterItem.cpp | 106 | ||||
| -rw-r--r-- | examples/GuiClient/rosterItem.h | 13 | ||||
| -rw-r--r-- | examples/GuiClient/rosterItemModel.cpp | 22 |
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) |
