PRBool nsAbIPCCard::Equals(nsABCOMCardStruct * card, nsStringArray & differingAttrs) { if(!card) return PR_FALSE; differingAttrs.Clear(); if(card->firstName) if (Compare(nsDependentString(card->firstName), m_FirstName, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kFirstNameColumn)); if(card->lastName) if (Compare(nsDependentString(card->lastName), m_LastName, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kLastNameColumn)); if(card->displayName) if (Compare(nsDependentString(card->displayName), m_DisplayName, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kDisplayNameColumn)); if(card->nickName) if (Compare(nsDependentString(card->nickName), m_NickName, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kNicknameColumn)); if(card->primaryEmail) if (Compare(nsDependentString(card->primaryEmail), m_PrimaryEmail, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kPriEmailColumn)); if(card->secondEmail) if (Compare(nsDependentString(card->secondEmail), m_SecondEmail, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(k2ndEmailColumn)); if(card->workPhone) if (Compare(nsDependentString(card->workPhone), m_WorkPhone, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkPhoneColumn)); if(card->homePhone) if (Compare(nsDependentString(card->homePhone), m_HomePhone, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomePhoneColumn)); if(card->faxNumber) if (Compare(nsDependentString(card->faxNumber), m_FaxNumber, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kFaxColumn)); if(card->pagerNumber) if (Compare(nsDependentString(card->pagerNumber), m_PagerNumber, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kPagerColumn)); if(card->cellularNumber) if (Compare(nsDependentString(card->cellularNumber), m_CellularNumber, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCellularColumn)); // card has home and work addresses joined, but "this" has them split if(card->homeAddress) if (Compare(nsDependentString(card->homeAddress), m_HomeAddress, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeAddressColumn)); if(card->homeAddress2) if (Compare(nsDependentString(card->homeAddress2), m_HomeAddress2, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeAddress2Column)); if(card->homeCity) if (Compare(nsDependentString(card->homeCity), m_HomeCity, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeCityColumn)); if(card->homeState) if (Compare(nsDependentString(card->homeState), m_HomeState, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeStateColumn)); if(card->homeZipCode) if (Compare(nsDependentString(card->homeZipCode), m_HomeZipCode, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeZipCodeColumn)); if(card->homeCountry) if (Compare(nsDependentString(card->homeCountry), m_HomeCountry, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kHomeCountryColumn)); // card->workAddress is Joined, m_workAddress and m_workAddress2 are split if(card->workAddress) if (Compare(nsDependentString(card->workAddress), m_WorkAddress, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkAddressColumn)); if(card->workAddress2) if (Compare(nsDependentString(card->workAddress2), m_WorkAddress2, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkAddress2Column)); if(card->workCity) if (Compare(nsDependentString(card->workCity), m_WorkCity, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkCityColumn)); if(card->workState) if (Compare(nsDependentString(card->workState), m_WorkState, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkStateColumn)); if(card->workZipCode) if (Compare(nsDependentString(card->workZipCode), m_WorkZipCode, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkZipCodeColumn)); if(card->workCountry) if (Compare(nsDependentString(card->workCountry), m_WorkCountry, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWorkCountryColumn)); if(card->jobTitle) if (Compare(nsDependentString(card->jobTitle), m_JobTitle, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kJobTitleColumn)); if(card->department) if (Compare(nsDependentString(card->department), m_Department, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kDepartmentColumn)); if(card->company) if (Compare(nsDependentString(card->company), m_Company, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCompanyColumn)); if(card->webPage1) if (Compare(nsDependentString(card->webPage1), m_WebPage1, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWebPage1Column)); if(card->webPage2) if (Compare(nsDependentString(card->webPage2), m_WebPage2, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kWebPage2Column)); if(card->birthYear) if (Compare(nsDependentString(card->birthYear), m_BirthYear, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kBirthYearColumn)); if(card->birthMonth) if (Compare(nsDependentString(card->birthMonth), m_BirthMonth, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kBirthMonthColumn)); if(card->birthDay) if (Compare(nsDependentString(card->birthDay), m_BirthDay, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kBirthDayColumn)); if(card->custom1) if (Compare(nsDependentString(card->custom1), m_Custom1, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCustom1Column)); if(card->custom2) if (Compare(nsDependentString(card->custom2), m_Custom2, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCustom2Column)); if(card->custom3) if (Compare(nsDependentString(card->custom3), m_Custom3, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCustom3Column)); if(card->custom4) if (Compare(nsDependentString(card->custom4), m_Custom4, nsCaseInsensitiveStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kCustom4Column)); if (card->isMailList != m_IsMailList) differingAttrs.AppendString(NS_LITERAL_STRING(kMailListName)); if(card->mailListURI) { nsCAutoString str(card->mailListURI); if (str.Equals(m_MailListURI, nsCaseInsensitiveCStringComparator())) differingAttrs.AppendString(NS_LITERAL_STRING(kMailListDescription)); } return (differingAttrs.Count() == 0); }