OscarPrivacyEngine::OscarPrivacyEngine( OscarAccount* account, Type type ) : QObject(), m_type( type ) { m_client = account->engine(); ContactMap contactMap; QList<OContact> contactList = m_client->ssiManager()->contactList(); QList<OContact>::const_iterator it, cEnd; cEnd = contactList.constEnd(); for ( it = contactList.constBegin(); it != cEnd; ++it ) { QString contactId = ( *it ).name(); OscarContact* oc = dynamic_cast<OscarContact*>( account->contacts().value( ( *it ).name() ) ); if ( oc ) { //for better orientation in lists use displayName and id QString screenName( "%1 (%2)" ); screenName = screenName.arg( oc->displayName(), contactId ); contactMap.insert( contactId, screenName ); } else { contactMap.insert( contactId, contactId ); } } addAllContacts( contactMap ); switch( type ) { case Visible: contactList = m_client->ssiManager()->visibleList(); break; case Invisible: contactList = m_client->ssiManager()->invisibleList(); break; case Ignore: contactList = m_client->ssiManager()->ignoreList(); break; } QSet<QString> tmpSet; cEnd = contactList.constEnd(); for ( it = contactList.constBegin(); it != cEnd; ++it ) tmpSet.insert( ( *it ).name() ); addContacts( contactMap, tmpSet ); }
void ChannelContactModel::onGroupMembersChanged(const Tp::Contacts &groupMembersAdded, const Tp::Contacts &groupLocalPendingMembersAdded, const Tp::Contacts &groupRemotePendingMembersAdded, const Tp::Contacts &groupMembersRemoved, const Tp::Channel::GroupMemberChangeDetails &details) { kDebug(); Q_UNUSED(groupLocalPendingMembersAdded); Q_UNUSED(groupRemotePendingMembersAdded); Q_UNUSED(details); addContacts(groupMembersAdded); removeContacts(groupMembersRemoved); }
void ChannelContactModel::setTextChannel(const Tp::TextChannelPtr &channel) { //remove existing contacts in list beginRemoveRows(QModelIndex(), 0, m_contacts.size()); m_contacts.clear(); endRemoveRows(); //add existing contacts from channel addContacts(channel->groupContacts()); //monitor for future changes connect(channel.data(), SIGNAL(groupMembersChanged(Tp::Contacts,Tp::Contacts,Tp::Contacts, Tp::Contacts,Tp::Channel::GroupMemberChangeDetails)), SLOT(onGroupMembersChanged(Tp::Contacts,Tp::Contacts,Tp::Contacts, Tp::Contacts,Tp::Channel::GroupMemberChangeDetails))); }
void ContactListModel::Private::commit() { SLOW_TIMER(100); commitTimerStartTime = QDateTime(); commitTimer->stop(); if (operationQueue.isEmpty()) return; QHashIterator<PsiContact*, int> it(operationQueue); QList<PsiContact*> contactsForAdding; QList<PsiContact*> contactsForUpdate; while (it.hasNext()) { it.next(); PsiContact *contact = it.key(); int operations = simplifiedOperationList(it.value()); if (operations & AddContact) { Q_ASSERT(!monitoredContacts.contains(contact)); if (monitoredContacts.contains(contact)) continue; contactsForAdding << contact; } if (operations & RemoveContact) Q_ASSERT(false); if (operations & UpdateContact) contactsForUpdate << contact; if (operations & ContactGroupsChanged) { removeContact(contact); if (!contactsForAdding.contains(contact)) { contactsForAdding << contact; } } } addContacts(contactsForAdding); updateContacts(contactsForUpdate); operationQueue.clear(); }