Show
Ignore:
Timestamp:
01/13/08 12:24:39 (11 months ago)
Author:
cyrusdaboo
Message:

Support address book queries on multiple fields in a single request.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Mulberry/branches/v4.1d1/Sources_Common/Mail/Address/CAdbkAddress.cp

    r96 r149  
    134134 
    135135// Compare specific field 
    136 bool CAdbkAddress::Search(const cdstring& text, EAddressField field) const 
     136bool CAdbkAddress::Search(const cdstring& text, const CAddressFields& fields) const 
    137137{ 
    138138        bool result = false; 
    139139 
    140         switch(field) 
    141         { 
    142         case CAdbkAddress::eName: 
    143                 result = GetName().PatternMatch(text); 
    144                 break; 
    145         case CAdbkAddress::eNickName: 
    146                 result = GetADL().PatternMatch(text); 
    147                 break; 
    148         case CAdbkAddress::eEmail: 
    149                 result = GetMailAddress().PatternMatch(text); 
    150                 if (!result) 
    151                 { 
    152                         for(emailmap::const_iterator iter = GetEmails().begin(); !result && (iter != GetEmails().end()); iter++) 
     140        for(CAddressFields::const_iterator iter = fields.begin(); iter != fields.end(); iter++) 
     141        { 
     142                switch(*iter) 
     143                { 
     144                case CAdbkAddress::eName: 
     145                        result = GetName().PatternMatch(text); 
     146                        break; 
     147                case CAdbkAddress::eNickName: 
     148                        result = GetADL().PatternMatch(text); 
     149                        break; 
     150                case CAdbkAddress::eEmail: 
     151                        result = GetMailAddress().PatternMatch(text); 
     152                        if (!result) 
     153                        { 
     154                                for(emailmap::const_iterator iter = GetEmails().begin(); !result && (iter != GetEmails().end()); iter++) 
     155                                        result = (*iter).second.PatternMatch(text); 
     156                        } 
     157                        break; 
     158                case CAdbkAddress::eCalendar: 
     159                        result = GetCalendar().PatternMatch(text); 
     160                        break; 
     161                case CAdbkAddress::eCompany: 
     162                        result = GetCompany().PatternMatch(text); 
     163                        break; 
     164                case CAdbkAddress::eAddress: 
     165                        for(addrmap::const_iterator iter = GetAddresses().begin(); !result && (iter != GetAddresses().end()); iter++) 
    153166                                result = (*iter).second.PatternMatch(text); 
    154                 } 
    155                 break; 
    156         case CAdbkAddress::eCalendar: 
    157                 result = GetCalendar().PatternMatch(text); 
    158                 break; 
    159         case CAdbkAddress::eCompany: 
    160                 result = GetCompany().PatternMatch(text); 
    161                 break; 
    162         case CAdbkAddress::eAddress: 
    163                 for(addrmap::const_iterator iter = GetAddresses().begin(); !result && (iter != GetAddresses().end()); iter++) 
    164                         result = (*iter).second.PatternMatch(text); 
    165                 break; 
    166         case CAdbkAddress::ePhoneWork: 
    167                 result = GetPhone(eWorkPhoneType).PatternMatch(text); 
    168                 break; 
    169         case CAdbkAddress::ePhoneHome: 
    170                 result = GetPhone(eHomePhoneType).PatternMatch(text); 
    171                 break; 
    172         case CAdbkAddress::eFax: 
    173                 result = GetPhone(eFaxType).PatternMatch(text) || 
    174                                         GetPhone(eHomeFaxType).PatternMatch(text) || 
    175                                         GetPhone(eWorkFaxType).PatternMatch(text); 
    176                 break; 
    177         case CAdbkAddress::eURL: 
    178                 result = GetURL().PatternMatch(text); 
    179                 break; 
    180         case CAdbkAddress::eNotes: 
    181                 result = GetNotes().PatternMatch(text); 
    182                 break; 
    183         default:; 
    184         } 
    185          
     167                        break; 
     168                case CAdbkAddress::ePhoneWork: 
     169                        result = GetPhone(eWorkPhoneType).PatternMatch(text); 
     170                        break; 
     171                case CAdbkAddress::ePhoneHome: 
     172                        result = GetPhone(eHomePhoneType).PatternMatch(text); 
     173                        break; 
     174                case CAdbkAddress::eFax: 
     175                        result = GetPhone(eFaxType).PatternMatch(text) || 
     176                                                GetPhone(eHomeFaxType).PatternMatch(text) || 
     177                                                GetPhone(eWorkFaxType).PatternMatch(text); 
     178                        break; 
     179                case CAdbkAddress::eURL: 
     180                        result = GetURL().PatternMatch(text); 
     181                        break; 
     182                case CAdbkAddress::eNotes: 
     183                        result = GetNotes().PatternMatch(text); 
     184                        break; 
     185                default:; 
     186                } 
     187                 
     188                if (result) 
     189                        break; 
     190        } 
     191 
    186192        return result; 
    187193}