QList<CContactItemField *> CntTransformUrl::transformDetailL(const QContactDetail &detail) { if(detail.definitionName() != QContactUrl::DefinitionName) User::Leave(KErrArgument); QList<CContactItemField *> fieldList; //cast to url const QContactUrl &url(static_cast<const QContactUrl&>(detail)); //create new field TPtrC fieldText(reinterpret_cast<const TUint16*>(url.url().utf16())); if(fieldText.Length()) { CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldUrl); newField->TextStorage()->SetTextL(fieldText); newField->SetMapping(KUidContactFieldVCardMapURL); QString subType = url.subType(); const QString& subTypeHomePage(QContactUrl::SubTypeHomePage); if (subType.length() != 0 && subType.compare(subTypeHomePage) != 0) { User::LeaveIfError(KErrNotSupported); } //contexts setContextsL(url, *newField); fieldList.append(newField); CleanupStack::Pop(newField); } return fieldList; }
QList<CContactItemField *> CntTransformOnlineAccount::transformDetailL(const QContactDetail &detail) { if(detail.definitionName() != QContactOnlineAccount::DefinitionName) User::Leave(KErrArgument); QList<CContactItemField *> fieldList; //cast to phonenumber const QContactOnlineAccount &onlineAccount(static_cast<const QContactOnlineAccount&>(detail)); //get the subType QStringList subTypes = onlineAccount.subTypes(); //create new field TPtrC fieldText(reinterpret_cast<const TUint16*>(onlineAccount.accountUri().utf16())); if(fieldText.Length()) { HBufC* detailCount = HBufC::NewLC(KMaxDetailCounterLength); detailCount->Des().AppendNum(m_detailCounter); CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText); newField->TextStorage()->SetTextL(fieldText); //no subtype if(!subTypes.count()) { User::LeaveIfError(KErrArgument); } // online account else if (subTypes.contains(QContactOnlineAccount::SubTypeImpp)) { newField->AddFieldTypeL(KUidContactFieldIMPP); newField->SetMapping(KUidContactFieldVCardMapUnknown); } //internet else if (subTypes.contains(QContactOnlineAccount::SubTypeSipVoip)) { newField->AddFieldTypeL(KUidContactFieldSIPID); newField->SetMapping(KUidContactFieldVCardMapSIPID); newField->AddFieldTypeL(KUidContactFieldVCardMapVOIP); } //share video else if (subTypes.contains(QContactOnlineAccount::SubTypeVideoShare)) { newField->AddFieldTypeL(KUidContactFieldSIPID); newField->SetMapping(KUidContactFieldVCardMapSIPID); newField->AddFieldTypeL(KUidContactFieldVCardMapSWIS); } //sip else if (subTypes.contains(QContactOnlineAccount::SubTypeSip)) { newField->AddFieldTypeL(KUidContactFieldSIPID); newField->SetMapping(KUidContactFieldVCardMapSIPID); newField->AddFieldTypeL(KUidContactFieldVCardMapSIPID); } else { User::LeaveIfError(KErrNotSupported); } //contexts setContextsL(onlineAccount, *newField); newField->SetLabelL(*detailCount); fieldList.append(newField); CleanupStack::Pop(newField); // Transform Service Provider Text TPtrC ServiceProviderText(reinterpret_cast<const TUint16*>(onlineAccount.serviceProvider().utf16())); if(ServiceProviderText.Length()) { CContactItemField* serviceProviderField = CContactItemField::NewLC(KStorageTypeText); serviceProviderField->TextStorage()->SetTextL(ServiceProviderText); serviceProviderField->AddFieldTypeL(KUidContactFieldServiceProvider); serviceProviderField->SetLabelL(*detailCount); fieldList.append(serviceProviderField); CleanupStack::Pop(serviceProviderField); } CleanupStack::PopAndDestroy(detailCount); } if(fieldList.count() > 0) { m_detailCounter++; } return fieldList; }
QList<CContactItemField *> CntTransformPhoneNumber::transformDetailL(const QContactDetail &detail) { if(detail.definitionName() != QContactPhoneNumber::DefinitionName) User::Leave(KErrArgument); QList<CContactItemField *> fieldList; //cast to phonenumber const QContactPhoneNumber &phoneNumber(static_cast<const QContactPhoneNumber&>(detail)); //get the subType QStringList subTypes = phoneNumber.subTypes(); //create new field TPtrC fieldText(reinterpret_cast<const TUint16*>(phoneNumber.number().utf16())); if(fieldText.Length()) { CContactItemField* newField = CContactItemField::NewLC(KStorageTypeText); newField->TextStorage()->SetTextL(fieldText); //no subtype if(!subTypes.count()) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); } //landline else if (subTypes.contains(QContactPhoneNumber::SubTypeLandline)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapVOICE); } //mobile else if (subTypes.contains(QContactPhoneNumber::SubTypeMobile)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapCELL); } //fax else if (subTypes.contains(QContactPhoneNumber::SubTypeFax)) { newField->AddFieldTypeL(KUidContactFieldFax); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapFAX); } //pager else if (subTypes.contains(QContactPhoneNumber::SubTypePager)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapPAGER); } //bbs else if (subTypes.contains(QContactPhoneNumber::SubTypeBulletinBoardSystem)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapBBS); } //car else if (subTypes.contains(QContactPhoneNumber::SubTypeCar)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapCAR); } //DTMF else if (subTypes.contains(QContactPhoneNumber::SubTypeDtmfMenu)) { newField->AddFieldTypeL(KUidContactFieldDTMF); newField->SetMapping(KUidContactFieldVCardMapUnknown); } // assistant number else if (subTypes.contains(QContactPhoneNumber::SubTypeAssistant)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapAssistantTel); } // video calls else if (subTypes.contains(QContactPhoneNumber::SubTypeVideo)) { newField->AddFieldTypeL(KUidContactFieldPhoneNumber); newField->SetMapping(KUidContactFieldVCardMapTEL); newField->AddFieldTypeL(KUidContactFieldVCardMapVIDEO); } else { User::LeaveIfError(KErrNotSupported); } //contexts setContextsL(phoneNumber, *newField); fieldList.append(newField); CleanupStack::Pop(newField); } return fieldList; }