/* * Copyright (C) 2008-2012 The QXmpp developers * * Author: * Manjeet Dahiya * * Source: * http://code.google.com/p/qxmpp * * This file is a part of QXmpp library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * */ #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); } } void rosterItemModel::updatePresence(const QString& bareJid, const QMap& presences) { addRosterItemIfDontExist(bareJid); if (!presences.isEmpty()) getRosterItemFromBareJid(bareJid)->setPresence(*presences.begin()); } void rosterItemModel::updateRosterEntry(const QString& bareJid, const QXmppRosterIq::Item& rosterEntry) { addRosterItemIfDontExist(bareJid); QString name = rosterEntry.name(); 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::updateName(const QString& bareJid, const QString& name) { addRosterItemIfDontExist(bareJid); if(name.isEmpty()) return; getRosterItemFromBareJid(bareJid)->setName(name); } void rosterItemModel::clear() { QStandardItemModel::clear(); m_jidRosterItemMap.clear(); } void rosterItemModel::removeRosterEntry(const QString& bareJid) { rosterItem* item = getRosterItemFromBareJid(bareJid); if(item) { removeRow(item->row()); } }