nsresult nsEudoraAddress::AddSingleList(CAliasEntry *pEntry, nsVoidArray &emailList, nsIAddrDatabase *pDb) { // Create a list. nsCOMPtr <nsIMdbRow> newRow; nsresult rv = pDb->GetNewListRow(getter_AddRefs(newRow)); if (NS_FAILED(rv) || !newRow) return rv; rv = pDb->AddListName(newRow, pEntry->m_name.get()); NS_ENSURE_SUCCESS(rv, rv); // Now add the members. PRInt32 max = emailList.Count(); for (PRInt32 i = 0; i < max; i++) { CAliasData *pData = (CAliasData *)emailList.ElementAt(i); nsCAutoString ldifValue(NS_LITERAL_CSTRING("mail=") + nsDependentCString(pData->m_email.get())); rv = pDb->AddLdifListMember(newRow, ldifValue.get()); } rv = pDb->AddCardRowToDB(newRow); NS_ENSURE_SUCCESS(rv, rv); rv = pDb->AddListDirNode(newRow); return rv; }
nsresult nsEudoraAddress::AddSingleList(CAliasEntry *pEntry, nsVoidArray &emailList, nsIAddrDatabase *pDb) { // Create a list. nsCOMPtr <nsIMdbRow> newRow; nsresult rv = pDb->GetNewListRow(getter_AddRefs(newRow)); if (NS_FAILED(rv) || !newRow) return rv; // Extract name from notes, if any nsCString name; if (!pEntry->m_notes.IsEmpty()) { nsCString note(pEntry->m_notes); ExtractNoteField(note, name, "name"); } // If we got a name from the notes, use that for the name otherwise use the // name in pEntry (which is the Eudora nickname). rv = pDb->AddListName(newRow, name.IsEmpty() ? pEntry->m_name.get() : name.get()); NS_ENSURE_SUCCESS(rv, rv); // Add the name in pEntry as the list nickname, because it was the Eudora nickname rv = pDb->AddListNickName(newRow, pEntry->m_name.get()); NS_ENSURE_SUCCESS(rv, rv); // Now add the members. int32_t max = emailList.Count(); for (int32_t i = 0; i < max; i++) { CAliasData *pData = (CAliasData *)emailList.ElementAt(i); nsAutoCString ldifValue("mail"); ldifValue.Append(pData->m_email); rv = pDb->AddLdifListMember(newRow, ldifValue.get()); } rv = pDb->AddCardRowToDB(newRow); NS_ENSURE_SUCCESS(rv, rv); rv = pDb->AddListDirNode(newRow); return rv; }