SeasidePeopleModelPriv::SeasidePeopleModelPriv(SeasidePeopleModel *parent) : QObject(parent) , q(parent) { QContactSortOrder sort; sort.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldFirstName); sort.setDirection(Qt::AscendingOrder); sortOrder.clear(); sortOrder.append(sort); MODEL_DEBUG() << Q_FUNC_INFO << QContactManager::availableManagers(); if (!qgetenv("NEMO_CONTACT_MANAGER").isNull()) manager = new QContactManager(qgetenv("NEMO_CONTACT_MANAGER")); else manager = new QContactManager; MODEL_DEBUG() << Q_FUNC_INFO << "Manager is " << manager->managerName(); localeHelper = LocaleUtils::self(); connect(manager, SIGNAL(contactsAdded(QList<QContactLocalId>)), this, SLOT(contactsAdded(QList<QContactLocalId>))); connect(manager, SIGNAL(contactsChanged(QList<QContactLocalId>)), this, SLOT(contactsChanged(QList<QContactLocalId>))); connect(manager, SIGNAL(contactsRemoved(QList<QContactLocalId>)), this, SLOT(contactsRemoved(QList<QContactLocalId>))); connect(manager, SIGNAL(dataChanged()), this, SLOT(dataReset())); dataReset(); }
bool DummyEngine::saveContact(QContact* contact, bool batch, QContactManager::Error* error) { // ensure that the contact's details conform to their definitions if (!validateContact(*contact, error)) { *error = QContactManager::InvalidDetailError; return false; } // success! QContactId newId; newId.setManagerUri(managerUri()); newId.setLocalId(5); contact->setId(newId); *error = QContactManager::NoError; // if we need to emit signals (ie, this isn't part of a batch operation) // then emit the correct one. if (!batch) { QList<QContactLocalId> emitList; emitList.append(contact->id().localId()); emit contactsAdded(emitList); } return true; }
QTM_USE_NAMESPACE QContactManagerEngineV2Wrapper::QContactManagerEngineV2Wrapper(QContactManagerEngine *wrappee) : m_engine(wrappee) { Q_ASSERT(wrappee); // Connect all the signals connect(wrappee, SIGNAL(dataChanged()), this, SIGNAL(dataChanged())); connect(wrappee, SIGNAL(contactsAdded(QList<QContactLocalId>)), this, SIGNAL(contactsAdded(QList<QContactLocalId>))); connect(wrappee, SIGNAL(contactsChanged(QList<QContactLocalId>)), this, SIGNAL(contactsChanged(QList<QContactLocalId>))); connect(wrappee, SIGNAL(contactsRemoved(QList<QContactLocalId>)), this, SIGNAL(contactsRemoved(QList<QContactLocalId>))); connect(wrappee, SIGNAL(relationshipsAdded(QList<QContactLocalId>)), this, SIGNAL(relationshipsAdded(QList<QContactLocalId>))); connect(wrappee, SIGNAL(relationshipsRemoved(QList<QContactLocalId>)), this, SIGNAL(relationshipsRemoved(QList<QContactLocalId>))); connect(wrappee, SIGNAL(selfContactIdChanged(QContactLocalId, QContactLocalId)), this, SIGNAL(selfContactIdChanged(QContactLocalId, QContactLocalId))); }
SeasideCache::SeasideCache() : m_manager(managerName()) #ifdef HAS_MLITE , m_displayLabelOrderConf(QLatin1String("/org/nemomobile/contacts/display_label_order")) #endif , m_resultsRead(0) , m_populated(0) , m_cacheIndex(0) , m_queryIndex(0) , m_selfId(0) , m_fetchFilter(SeasideFilteredModel::FilterFavorites) , m_displayLabelOrder(SeasideFilteredModel::FirstNameFirst) , m_updatesPending(true) , m_refreshRequired(false) { Q_ASSERT(!instance); instance = this; m_timer.start(); #ifdef HAS_MLITE connect(&m_displayLabelOrderConf, SIGNAL(valueChanged()), this, SLOT(displayLabelOrderChanged())); QVariant displayLabelOrder = m_displayLabelOrderConf.value(); if (displayLabelOrder.isValid()) m_displayLabelOrder = SeasideFilteredModel::DisplayLabelOrder(displayLabelOrder.toInt()); #endif connect(&m_manager, SIGNAL(dataChanged()), this, SLOT(updateContacts())); connect(&m_manager, SIGNAL(contactsChanged(QList<QContactLocalId>)), this, SLOT(updateContacts(QList<QContactLocalId>))); connect(&m_manager, SIGNAL(contactsAdded(QList<QContactLocalId>)), this, SLOT(updateContacts(QList<QContactLocalId>))); connect(&m_manager, SIGNAL(contactsRemoved(QList<QContactLocalId>)), this, SLOT(contactsRemoved(QList<QContactLocalId>))); connect(&m_fetchRequest, SIGNAL(resultsAvailable()), this, SLOT(contactsAvailable())); connect(&m_contactIdRequest, SIGNAL(resultsAvailable()), this, SLOT(contactIdsAvailable())); connect(&m_fetchRequest, SIGNAL(stateChanged(QContactAbstractRequest::State)), this, SLOT(requestStateChanged(QContactAbstractRequest::State))); connect(&m_contactIdRequest, SIGNAL(stateChanged(QContactAbstractRequest::State)), this, SLOT(requestStateChanged(QContactAbstractRequest::State))); connect(&m_removeRequest, SIGNAL(stateChanged(QContactAbstractRequest::State)), this, SLOT(requestStateChanged(QContactAbstractRequest::State))); connect(&m_saveRequest, SIGNAL(stateChanged(QContactAbstractRequest::State)), this, SLOT(requestStateChanged(QContactAbstractRequest::State))); m_fetchRequest.setManager(&m_manager); m_removeRequest.setManager(&m_manager); m_saveRequest.setManager(&m_manager); #ifdef SEASIDE_SPARQL_QUERIES m_contactIdRequest.setQueryData(true); m_contactIdRequest.setFavoritesOnly(true); m_contactIdRequest.setSortOnFirstName(m_displayLabelOrder == SeasideFilteredModel::FirstNameFirst); m_contactIdRequest.start(); #else m_selfId = m_manager.selfContactId(); m_contactIdRequest.setManager(&m_manager); QContactFetchHint fetchHint; fetchHint.setOptimizationHints(QContactFetchHint::NoRelationships | QContactFetchHint::NoActionPreferences | QContactFetchHint::NoBinaryBlobs); fetchHint.setDetailDefinitionsHint(QStringList() << QContactName::DefinitionName << QContactAvatar::DefinitionName << QContactPhoneNumber::DefinitionName << QContactEmailAddress::DefinitionName << QContactOrganization::DefinitionName << QContactOnlineAccount::DefinitionName); m_fetchRequest.setFetchHint(fetchHint); m_fetchRequest.setFilter(QContactFavorite::match()); QContactSortOrder firstLabelOrder; firstLabelOrder.setDetailDefinitionName( QContactName::DefinitionName, QContactName::FieldFirstName); firstLabelOrder.setCaseSensitivity(Qt::CaseInsensitive); firstLabelOrder.setDirection(Qt::AscendingOrder); firstLabelOrder.setBlankPolicy(QContactSortOrder::BlanksFirst); QContactSortOrder secondLabelOrder; secondLabelOrder.setDetailDefinitionName( QContactName::DefinitionName, QContactName::FieldLastName); secondLabelOrder.setCaseSensitivity(Qt::CaseInsensitive); secondLabelOrder.setDirection(Qt::AscendingOrder); secondLabelOrder.setBlankPolicy(QContactSortOrder::BlanksFirst); QList<QContactSortOrder> sorting = m_displayLabelOrder == SeasideFilteredModel::FirstNameFirst ? (QList<QContactSortOrder>() << firstLabelOrder << secondLabelOrder) : (QList<QContactSortOrder>() << secondLabelOrder << firstLabelOrder); m_fetchRequest.setSorting(sorting); m_contactIdRequest.setSorting(sorting); m_fetchRequest.start(); #endif }