diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
| commit | da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 (patch) | |
| tree | c3686f7649785a2bfcc2c637a1588acdb8a721e8 /examples/GuiClient/rosterItemModel.cpp | |
| parent | 3431f5a37174b7eb8490672686db68df2b48e35f (diff) | |
| download | qxmpp-da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9.tar.gz | |
add Gui Client example
Diffstat (limited to 'examples/GuiClient/rosterItemModel.cpp')
| -rw-r--r-- | examples/GuiClient/rosterItemModel.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
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<QString, QXmppPresence>& 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();
+}
|
