From da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Wed, 8 Sep 2010 09:23:18 +0000 Subject: add Gui Client example --- examples/GuiClient/rosterItemModel.cpp | 82 ++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 examples/GuiClient/rosterItemModel.cpp (limited to 'examples/GuiClient/rosterItemModel.cpp') diff --git a/examples/GuiClient/rosterItemModel.cpp b/examples/GuiClient/rosterItemModel.cpp new file mode 100644 index 00000000..2b59dbbd --- /dev/null +++ b/examples/GuiClient/rosterItemModel.cpp @@ -0,0 +1,82 @@ +#include "rosterItemModel.h" + +rosterItemModel::rosterItemModel(QObject* parent) : QStandardItemModel(parent) +{ +// addRosterItemIfDontExist("jkhjkhkhkhk"); +// addRosterItemIfDontExist("uuuu"); +// addRosterItemIfDontExist("kkkkkkk"); +// addRosterItemIfDontExist("jjjjjjjj"); +} + +rosterItem* rosterItemModel::getRosterItemFromBareJid(const QString& bareJid) +{ + if(m_jidRosterItemMap.contains(bareJid)) + return m_jidRosterItemMap[bareJid]; + else + return 0; +} + +void rosterItemModel::addRosterItemIfDontExist(const QString& bareJid) +{ + if(!m_jidRosterItemMap.contains(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& presences) +{ + addRosterItemIfDontExist(bareJid); + + if(presences.count() > 0) + { + QString statusText = presences.begin().value().getStatus().getStatusText(); + QXmppPresence::Status::Type statusType = presences.begin().value().getStatus().getType(); + QXmppPresence::Type presenceType = presences.begin().value().getType(); + + 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); + } +} + +void rosterItemModel::updateRosterEntry(const QString& bareJid, const QXmppRosterIq::Item& rosterEntry) +{ + addRosterItemIfDontExist(bareJid); + + QString name = rosterEntry.getName(); + if(name.isEmpty()) + { + name = bareJid; + } + + if(getRosterItemFromBareJid(bareJid)) + getRosterItemFromBareJid(bareJid)->setName(name); +} + +void rosterItemModel::updateAvatar(const QString& bareJid, const QImage& image) +{ + addRosterItemIfDontExist(bareJid); + + if(image.isNull()) + return; + + getRosterItemFromBareJid(bareJid)->setAvatar(image); +} + +void rosterItemModel::clear() +{ + QStandardItemModel::clear(); + m_jidRosterItemMap.clear(); +} -- cgit v1.2.3