/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformOnlineAccount::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactOnlineAccount::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactOnlineAccount::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); QContactDetailFieldDefinition f; // Support only certain subtypes f.setDataType(QVariant::StringList); QVariantList subTypes; subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeSip)); subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeSipVoip)); subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeImpp)); subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeVideoShare)); f.setAllowableValues(subTypes); fields[QContactOnlineAccount::FieldSubTypes] = f; // Don't support "ContextOther" f.setDataType(QVariant::StringList); f.setAllowableValues(QVariantList() << QLatin1String(QContactDetail::ContextHome) << QLatin1String(QContactDetail::ContextWork)); fields[QContactDetail::FieldContext] = f; d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformUrl::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString &contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactUrl::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactUrl::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); QContactDetailFieldDefinition f; f.setDataType(QVariant::String); //only allowed to be a single subtype f.setAllowableValues(QVariantList() << QString(QLatin1String(QContactUrl::SubTypeHomePage))); fields.insert(QContactUrl::FieldSubType, f); // Don't support "ContextOther" f.setDataType(QVariant::StringList); f.setAllowableValues(QVariantList() << QLatin1String(QContactDetail::ContextHome) << QLatin1String(QContactDetail::ContextWork)); fields[QContactDetail::FieldContext] = f; d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformAnniversarySimple::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactAnniversary::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactAnniversary::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); // Following fields not supported in symbian (pre-10.1) back-end, remove fields.remove(QContactAnniversary::FieldCalendarId); fields.remove(QContactAnniversary::FieldEvent); // Sub-types not supported in symbian back-end, remove fields.remove(QContactAnniversary::FieldSubType); // Context not supported in symbian back-end, remove fields.remove(QContactAnniversary::FieldContext); d.setFields(fields); d.setUnique(true); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformName::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { if(definitions.contains(QContactName::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactName::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); // groups support only custom label if(contactType == QContactType::TypeGroup) { fields.remove(QContactName::FieldPrefix); fields.remove(QContactName::FieldFirstName); fields.remove(QContactName::FieldMiddleName); fields.remove(QContactName::FieldLastName); fields.remove(QContactName::FieldSuffix); } else { // Note: Custom labels cannot be enabled for a contact in pre-10.1 // platforms because setting custom label for a contact causes // issues for S60 Phonebook editor. If custom label support is // needed in 10.1 or later, it needs to be variated away from // pre-10.1 platforms. #ifndef SYMBIAN_BACKEND_USE_CNTMODEL_V2 fields.remove(QContactName::FieldCustomLabel); #endif } // Context not supported in symbian back-end, remove fields.remove(QContactName::FieldContext); d.setFields(fields); d.setUnique(true); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformOrganisation::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactOrganization::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactOrganization::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); QContactDetailFieldDefinition f; // Not all fields are supported, replace: fields.clear(); f.setDataType(QVariant::String); f.setAllowableValues(QVariantList()); fields.insert(QContactOrganization::FieldName, f); fields.insert(QContactOrganization::FieldTitle, f); fields.insert(QContactOrganization::FieldAssistantName, f); f.setDataType(QVariant::StringList); fields.insert(QContactOrganization::FieldDepartment, f); d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformOnlineAccount::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactOnlineAccount::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactOnlineAccount::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); QContactDetailFieldDefinition f; // Not all fields are supported fields.remove(QContactOnlineAccount::FieldCapabilities); fields.remove(QContactOnlineAccount::FieldDetailUri); fields.remove(QContactOnlineAccount::FieldLinkedDetailUris); fields.remove(QContactOnlineAccount::FieldServiceProvider); fields.remove(QContactOnlineAccount::FieldContext); // Support only certain subtypes f.setDataType(QVariant::StringList); QVariantList subTypes; subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeSip)); subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeSipVoip)); subTypes << QString(QLatin1String(QContactOnlineAccount::SubTypeVideoShare)); f.setAllowableValues(subTypes); fields[QContactOnlineAccount::FieldSubTypes] = f; d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformNickname::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactNickname::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactNickname::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); // Context not supported in symbian back-end, remove fields.remove(QContactNickname::FieldContext); d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }
void MainWindow::on_pushButton_3_clicked() { // qDebug() << "The default manager for the platform is:" << cm.managerName(); // qDebug() << "It" << (cm.isRelationshipTypeSupported(QContactRelationship::HasAssistant) ? "supports" : "does not support") << "assistant relationships."; // qDebug() << "It" << (cm.supportedContactTypes().contains(QContactType::TypeGroup) ? "supports" : "does not support") << "groups."; // qDebug() << "It" << (cm.hasFeature(QContactManager::MutableDefinitions) ? "supports" : "does not support") << "mutable detail definitions."; QList<QContactLocalId> contactIds = cm.contactIds(); QContact a = cm.contact(contactIds.first()); qDebug() << "Viewing the details of" << a.displayLabel(); QList<QContactDetail> allDetails = a.details(); for (int i = 0; i < allDetails.size(); i++) { QContactDetail detail = allDetails.at(i); QContactDetailDefinition currentDefinition = cm.detailDefinition(detail.definitionName()); QMap<QString, QContactDetailFieldDefinition> fields = currentDefinition.fields(); qDebug("\tDetail #%d (%s):", i, detail.definitionName().toAscii().constData()); foreach (const QString& fieldKey, fields.keys()) { qDebug() << "\t\t" << fieldKey << "(" << fields.value(fieldKey).dataType() << ") =" << detail.value(fieldKey); } qDebug(); } QContact b; QContactDetail de; foreach (const QContactLocalId& ids, contactIds ) { b = cm.contact(ids); de = b.detail("PhoneNumber"); bool s = de.hasValue("PhoneNumber"); qDebug()<< " has Value PhoneNumber key"<<s<<"|"<<de.value("PhoneNumber"); QString show; show = b.displayLabel(); show.append("\t"); show.append(de.value("PhoneNumber")); ui->listWidget_2->addItem(show); }
/*! * Modifies the detail definitions. The default detail definitions are * queried from QContactManagerEngine::schemaDefinitions and then modified * with this function in the transform leaf classes. * * \a definitions The detail definitions to modify. * \a contactType The contact type the definitions apply for. */ void CntTransformThumbnail::detailDefinitions(QMap<QString, QContactDetailDefinition> &definitions, const QString& contactType) const { Q_UNUSED(contactType); if(definitions.contains(QContactThumbnail::DefinitionName)) { QContactDetailDefinition d = definitions.value(QContactThumbnail::DefinitionName); QMap<QString, QContactDetailFieldDefinition> fields = d.fields(); QContactDetailFieldDefinition f1; f1.setDataType(QVariant::LongLong); fields.insert(KThumbnailChecksum, f1); QContactDetailFieldDefinition f2; f2.setDataType(QVariant::ByteArray); fields.insert(KThumbnailJpgImage, f2); d.setFields(fields); // Replace original definitions definitions.insert(d.name(), d); } }