本文整理汇总了C++中ContactList::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ ContactList::push_back方法的具体用法?C++ ContactList::push_back怎么用?C++ ContactList::push_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContactList
的用法示例。
在下文中一共展示了ContactList::push_back方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: importRecords
bool UDXFile::importRecords(const QString &url, ContactList &list, bool append)
{
if (!openFile(url, QIODevice::ReadOnly))
return false;
// Read XML
QString err_msg;
int err_line, err_col;
if (!setContent(&file, &err_msg, &err_line, &err_col)) {
_errors << QObject::tr("Can't read content from file %1\n%2\nline %3, col %4\n")
.arg(url).arg(err_msg).arg(err_line).arg(err_col);
closeFile();
return false;
}
closeFile();
// Root element
QDomElement root = documentElement();
if (root.nodeName()!="DataExchangeInfo") {
_errors << QObject::tr("Root node is not 'DataExchangeInfo' at file\n%1").arg(url);
return false;
}
// Codepage, version, expected record count
QDomElement recInfo = root.firstChildElement("RecordInfo");
if (recInfo.isNull()) {
_errors << QObject::tr("Can't find 'RecordInfo' tag at file\n%1").arg(url);
return false;
}
QString charSet = recInfo.firstChildElement("Encoding").text();
if (charSet.isEmpty()) {
_errors << QObject::tr("Warning: codepage not found, trying use UTF-8...");
charSet = "UTF-8";
}
QString udxVer = recInfo.firstChildElement("UdxVersion").text();
if (udxVer.isEmpty()) {
_errors << QObject::tr("Warning: udx version not found, treat as 1.0...");
udxVer = "1.0";
}
QDomElement vcfInfo = recInfo.firstChildElement("RecordOfvCard");
QString vcVer = vcfInfo.firstChildElement("vCardVersion").text();
int expCount = vcfInfo.firstChildElement("vCardRecord").text().toInt();
// vCard set
QDomElement vCard = root.firstChildElement("vCard");
if (vCard.isNull()) {
_errors << QObject::tr("Can't find 'vCard' records at file\n%1").arg(url);
return false;
}
// QTextCodec* codec = QTextCodec::codecForName(charSet.toLocal8Bit()); TODO not works on windows
ContactItem item;
if (!append)
list.clear();
QDomElement vCardInfo = vCard.firstChildElement("vCardInfo");
while (!vCardInfo.isNull()) {
item.clear();
item.originalFormat = "UDX";
item.version = udxVer;
item.subVersion = vcVer;
item.id = vCardInfo.firstChildElement("Sequence").text();
QDomElement fields = vCardInfo.firstChildElement("vCardField");
if (fields.isNull())
_errors << QObject::tr("Can't find 'vCardField' at sequence %1").arg(item.id);
QDomElement field = fields.firstChildElement();
while (!field.isNull()) {
QString fldName = field.nodeName().toUpper();
QString fldValue = field.text(); // codec->toUnicode(field.text().toLocal8Bit()); TODO not works on windows
if (fldName=="N") {
fldValue.replace("\\;", " ");
// In ALL known me udx files part before first ; was EMPTY
fldValue.remove(";");
item.names = fldValue.split(" ");
// If empty parts not in-middle, remove it
item.dropFinalEmptyNames();
}
else if (fldName.startsWith("TEL")) {
Phone phone;
phone.number = fldValue;
if (fldName=="TEL")
phone.tTypes << "CELL";
else if (fldName=="TELHOME")
phone.tTypes << "HOME";
else if (fldName=="TELWORK")
phone.tTypes << "WORK";
else if (fldName=="TELFAX")
phone.tTypes << "FAX";
else
_errors << QObject::tr("Unknown phone type: %1 (%2)").arg(phone.number).arg(item.names[0]);
item.phones.push_back(phone);
}
else if (fldName=="ORGNAME")
item.organization = fldValue;
else if (fldName=="BDAY")
item.birthday.value = QDateTime::fromString(fldValue, "yyyyMMdd"); // TODO Maybe, use DateItem::fromString
else if (fldName=="EMAIL") {
Email email;
email.address = fldValue;
email.emTypes << "pref";
item.emails.push_back(email);
}
else
_errors << QObject::tr("Unknown 'vCardfield' type: %1").arg(fldName);
field = field.nextSiblingElement();
}
//.........这里部分代码省略.........