QContactDetail *CntTransformOnlineAccount::transformItemField(const CContactItemField& field, const QContact &contact) { Q_UNUSED(contact); QContactOnlineAccount *onlineAccount = new QContactOnlineAccount(); CContactTextField* storage = field.TextStorage(); QString onlineAccountString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length()); // Adding Online Account Detail. for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapVOIP)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeSipVoip); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapSWIS)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeVideoShare); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapSIPID)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeSip); } } // set context for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { setContexts(field.ContentType().FieldType(i), *onlineAccount); } return onlineAccount; }
QContactDetail *CntTransformOnlineAccount::transformItemField(const CContactItemField& field, const QContact &contact) { QList<QContactDetail> onlineAccounts = contact.details(QContactOnlineAccount::DefinitionName); TLex label(field.Label()); int counter = -1; if (label.Val(counter) != KErrNone) { return NULL; } //check what online account detail the provided field belongs to. if there is no such detail yet, //let's create it. if (onlineAccounts.count() <= counter) { for (int i = onlineAccounts.count(); i <= counter; i++) { QContactOnlineAccount *account = new QContactOnlineAccount(); QContact& currentContact = const_cast<QContact&>(contact); currentContact.saveDetail(account); delete account; } onlineAccounts = contact.details(QContactOnlineAccount::DefinitionName); } QContactOnlineAccount *onlineAccount = new QContactOnlineAccount(onlineAccounts.at(counter)); CContactTextField* storage = field.TextStorage(); QString onlineAccountString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length()); // Adding Online Account Detail. for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { //Account URI if (field.ContentType().ContainsFieldType(KUidContactFieldIMPP)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeImpp); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapVOIP)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeSipVoip); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapSWIS)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeVideoShare); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapSIPID)) { onlineAccount->setAccountUri(onlineAccountString); onlineAccount->setSubTypes(QContactOnlineAccount::SubTypeSip); } //Service Provider else if (field.ContentType().FieldType(i) == KUidContactFieldServiceProvider) { onlineAccount->setServiceProvider(onlineAccountString); } } // set context for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { setContexts(field.ContentType().FieldType(i), *onlineAccount); } return onlineAccount; }
// Constructor for string input // fields: a (attr => value) hash, the user should supply the attr's, and the parser will fill in the value's. // recordAll: set to TRUE if you want multiple instances of the found attr to be returned as a concatenated string // if FALSE, it will only return the first-seen instance. // divider: a string to delineate multiple instances, only applies when recordAll is set to TRUE. XMLWalker::XMLWalker(istream* bufss, map<string, string>* fields, bool recordAll, string divider) : m_xmlFileName(""), m_fields(fields), m_recordAll(recordAll), m_divider(divider), m_fin(bufss), m_good(true), m_curLine(""), m_stopLinePrefixes() { setContexts(); }
QContactDetail *CntTransformPhoneNumber::transformItemField(const CContactItemField& field, const QContact &contact) { Q_UNUSED(contact); QContactPhoneNumber *phoneNumber = new QContactPhoneNumber(); CContactTextField* storage = field.TextStorage(); QString number = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length()); phoneNumber->setNumber(number); if (field.ContentType().ContainsFieldType(KUidContactFieldPhoneNumber)) { if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapVOICE)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeLandline); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapCELL)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeMobile); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapPAGER)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypePager); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapBBS)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeBulletinBoardSystem); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapCAR)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeCar); } else if (field.ContentType().Mapping() == KUidContactFieldVCardMapAssistantTel) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeAssistant); } else if (field.ContentType().ContainsFieldType(KUidContactFieldVCardMapVIDEO)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeVideo); } } else if (field.ContentType().ContainsFieldType(KUidContactFieldFax)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeFax); } else if (field.ContentType().ContainsFieldType(KUidContactFieldDTMF)) { phoneNumber->setSubTypes(QContactPhoneNumber::SubTypeDtmfMenu); } // set context for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { setContexts(field.ContentType().FieldType(i), *phoneNumber); } return phoneNumber; }
// Constructor for XML file input // fields: a (attr => value) hash, the user should supply the attr's, and the parser will fill in the value's. // recordAll: set to TRUE if you want multiple instances of the found attr to be returned as a concatenated string // if FALSE, it will only return the first-seen instance. // divider: a string to delineate multiple instances, only applies when recordAll is set to TRUE. XMLWalker::XMLWalker(string xmlFileName, map<string, string>* fields, bool recordAll, string divider) : m_xmlFileName(xmlFileName), m_fields(fields), m_recordAll(recordAll), m_divider(divider), m_fin(NULL), m_good(true), m_curLine(""), m_stopLinePrefixes() { m_fin = new ifstream(); if (!myFileOpen(*((ifstream*)m_fin), m_xmlFileName)) { m_good = false; return; } setContexts(); }
QContactDetail *CntTransformPresence::transformItemField(const CContactItemField& field, const QContact &contact) { QList<QContactDetail> presenceDetails = contact.details(QContactPresence::DefinitionName); TLex label(field.Label()); int counter = -1; if (label.Val(counter) != KErrNone) { return NULL; } //check what presence detail the provided field belongs to. if there is no such detail yet, //let's create it. if (presenceDetails.count() <= counter) { for (int i = presenceDetails.count(); i <= counter; i++) { QContactPresence *presence = new QContactPresence(); QContact& currentContact = const_cast<QContact&>(contact); currentContact.saveDetail(presence); delete presence; } presenceDetails = contact.details(QContactPresence::DefinitionName); } QContactPresence *presenceDetail = new QContactPresence(presenceDetails.at(counter)); CContactTextField* storage = field.TextStorage(); QString presenceString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length()); for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { //Presence if (field.ContentType().FieldType(i) == KUidContactFieldPresence) { QContactPresence::PresenceState presenceState = decodePresence(presenceString); presenceDetail->setPresenceState(presenceState); } //Status Message else if (field.ContentType().FieldType(i) == KUidContactFieldStatusMsg) { presenceDetail->setPresenceStateText(presenceString); } } // set context for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { setContexts(field.ContentType().FieldType(i), *presenceDetail); } return presenceDetail; }
QContactDetail *CntTransformUrl::transformItemField(const CContactItemField& field, const QContact &contact) { Q_UNUSED(contact); QContactUrl *url = new QContactUrl(); CContactTextField* storage = field.TextStorage(); QString urlString = QString::fromUtf16(storage->Text().Ptr(), storage->Text().Length()); url->setUrl(urlString); url->setSubType(QContactUrl::SubTypeHomePage); for (int i = 0; i < field.ContentType().FieldTypeCount(); i++) { setContexts(field.ContentType().FieldType(i), *url); } return url; }
// setFields - set the (attr => value) hash. // fields: a (attr => value) hash, the user should supply the attr's, and the parser will fill in the value's. // recordAll: set to TRUE if you want multiple instances of the found attr to be returned as a concatenated string // if FALSE, it will only return the first-seen instance. // divider: a string to delineate multiple instances, only applies when recordAll is set to TRUE. void XMLWalker::setFields(map<string, string>* fields, bool recordAll, string divider) { m_fields = fields; m_recordAll = recordAll; m_divider = divider; setContexts(); }