BuddyContactModel::BuddyContactModel(Buddy buddy, QObject *parent) : QAbstractListModel(parent), SourceBuddy(buddy), IncludeIdentityInDisplay(false) { connect(SourceBuddy, SIGNAL(contactAboutToBeAdded(Contact)), this, SLOT(contactAboutToBeAdded(Contact)), Qt::DirectConnection); connect(SourceBuddy, SIGNAL(contactAdded(Contact)), this, SLOT(contactAdded(Contact)), Qt::DirectConnection); connect(SourceBuddy, SIGNAL(contactAboutToBeRemoved(Contact)), this, SLOT(contactAboutToBeRemoved(Contact)), Qt::DirectConnection); connect(SourceBuddy, SIGNAL(contactRemoved(Contact)), this, SLOT(contactRemoved(Contact)), Qt::DirectConnection); }
void ContactManager::removeContact(Contact contact) { kdebugf(); if (contact.isNull()) return; ensureLoaded(); if (!Contacts.contains(contact)) return; disconnect(contact.data(), SIGNAL(updated()), this, SLOT(contactDataUpdated())); disconnect(contact.data(), SIGNAL(accountDataAboutToBeAdded(Account *)), this, SLOT(contactAccountDataAboutToBeAdded(Account *))); disconnect(contact.data(), SIGNAL(accountDataAdded(Account *)), this, SLOT(contactAccountDataAdded(Account *))); disconnect(contact.data(), SIGNAL(accountDataAboutToBeRemoved(Account *)), this, SLOT(contactAccountDataAboutToBeRemoved(Account *))); disconnect(contact.data(), SIGNAL(accountDataRemoved(Account *)), this, SLOT(contactAccountDataRemoved(Account *))); disconnect(contact.data(), SIGNAL(accountDataIdChanged(Account *, const QString &)), this, SLOT(contactAccountDataIdChanged(Account *, const QString &))); emit contactAboutToBeRemoved(contact); if (ContactRemovePredicateObject::inquireAll(contact)) { Contacts.removeAll(contact); contact.removeFromStorage(); } emit contactRemoved(contact); contact.setType(ContactData::TypeAnonymous); kdebugf(); }