From 36e3c247badebd781c9038e2d14590fc05847d64 Mon Sep 17 00:00:00 2001 From: Jaehwa Shin Date: Sat, 22 Jun 2013 20:51:01 +0900 Subject: [PATCH] Fixed DCM-2074 Change-Id: If02b8f47b9165365191f9b6d34e42f2cde44a107 Signed-off-by: Jaehwa Shin --- src/FScl_AddressbookManagerImpl.cpp | 778 +++++++++++++++++++++++++----------- src/FScl_AddressbookUtil.cpp | 2 +- src/FScl_AddressbookUtil.h | 68 +++- 3 files changed, 593 insertions(+), 255 deletions(-) diff --git a/src/FScl_AddressbookManagerImpl.cpp b/src/FScl_AddressbookManagerImpl.cpp index 659a460..f0f63f8 100644 --- a/src/FScl_AddressbookManagerImpl.cpp +++ b/src/FScl_AddressbookManagerImpl.cpp @@ -268,25 +268,38 @@ _AddressbookManagerImpl::GetAddressbooksByAccountN(AccountId accountId) const ClearLastResult(); + IList* pAddressbooks = null; + __Filter<__ContactsAddressbook> accountFilter; accountFilter.Construct(); accountFilter.AddInt(_contacts_address_book.account_id, CONTACTS_MATCH_EQUAL, accountId); unique_ptr< __Filter<__ContactsAddressbook> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsAddressbook>()); + if (pRwAbFilter->Get() == null) + { + __Query<__ContactsAddressbook> query; + query.Construct(); + query.SetFilter(accountFilter); - __Filter<__ContactsAddressbook> mainFilter; - mainFilter.Construct(); + pAddressbooks = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query); + SysTryReturn(NID_SCL, pAddressbooks != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Filter<__ContactsAddressbook> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(accountFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(accountFilter); - __Query<__ContactsAddressbook> query; - query.Construct(); - query.SetFilter(mainFilter); + __Query<__ContactsAddressbook> query; + query.Construct(); + query.SetFilter(mainFilter); - IList* pAddressbooks = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query); - SysTryReturn(NID_SCL, pAddressbooks != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pAddressbooks = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query); + SysTryReturn(NID_SCL, pAddressbooks != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pAddressbooks; } @@ -298,11 +311,13 @@ _AddressbookManagerImpl::GetAllAddressbooksN(void) const ClearLastResult(); - unique_ptr< __Filter<__ContactsAddressbook> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsAddressbook>()); + __Filter<__ContactsAddressbook> abFilter; + abFilter.Construct(); + abFilter.AddInt(_contacts_address_book.mode, CONTACTS_MATCH_EQUAL, 0); __Query<__ContactsAddressbook> query; query.Construct(); - query.SetFilter(*pRwAbFilter); + query.SetFilter(abFilter); query.SetSort(_contacts_address_book.name, true); IList* pAddressbooks = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query); @@ -604,9 +619,13 @@ _AddressbookManagerImpl::GetAllCategoriesN(void) const __Query<__ContactsGroup> query; query.Construct(); - query.SetFilter(*pRwAbFilter); query.SetSort(_contacts_group.name, true); + if (pRwAbFilter->Get() != null) + { + query.SetFilter(*pRwAbFilter); + } + IList* pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsGroup, Category>(query); SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); @@ -620,25 +639,38 @@ _AddressbookManagerImpl::GetCategoriesByContactN(RecordId contactId) const SysTryReturn(NID_SCL, contactId != INVALID_RECORD_ID, null, E_INVALID_ARG, "[%s] Invalid argument is used. The specified contact is invalid.", GetErrorMessage(E_INVALID_ARG)); ClearLastResult(); - + IList* pCategories = null; + unique_ptr< __Filter<__ContactsContactGroupRel> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContactGroupRel>()); __Filter<__ContactsContactGroupRel> relFilter; relFilter.Construct(); relFilter.AddInt(_contacts_contact_grouprel.contact_id, CONTACTS_MATCH_EQUAL, contactId); - __Filter<__ContactsContactGroupRel> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(relFilter); - - __Query<__ContactsContactGroupRel> query; - query.Construct(); - query.SetFilter(mainFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactGroupRel> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(relFilter); + + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetFilter(mainFilter); + + pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); + SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetFilter(relFilter); - IList* pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); - SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); + SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pCategories; } @@ -650,6 +682,8 @@ _AddressbookManagerImpl::GetCategoriesByPersonN(PersonId personId) const ClearLastResult(); + IList* pCategories = null; + unique_ptr< __Filter<__ContactsContactGroupRel> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContactGroupRel>()); __Filter<__ContactsContactGroupRel> relFilter; @@ -658,26 +692,44 @@ _AddressbookManagerImpl::GetCategoriesByPersonN(PersonId personId) const relFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); relFilter.AddInt(_contacts_contact_grouprel.group_id, CONTACTS_MATCH_GREATER_THAN, 0); - __Filter<__ContactsContactGroupRel> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(relFilter); - unsigned int propertyIds[] = { _contacts_contact_grouprel.group_id, }; - __Query<__ContactsContactGroupRel> query; - query.Construct(); - query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); - query.SetFilter(mainFilter); - query.SetSort(_contacts_contact_grouprel.group_name, true); - query.SetDistinct(true); + if (pRwAbFilter->Get() != null) + { - IList* pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); - SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + __Filter<__ContactsContactGroupRel> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(relFilter); + + + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetFilter(mainFilter); + query.SetSort(_contacts_contact_grouprel.group_name, true); + query.SetDistinct(true); + + pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); + SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetFilter(relFilter); + query.SetSort(_contacts_contact_grouprel.group_name, true); + query.SetDistinct(true); + + pCategories = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Category>(query); + SysTryReturn(NID_SCL, pCategories != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + } return pCategories; } @@ -693,9 +745,13 @@ _AddressbookManagerImpl::GetAllContactsN(void) const __Query<__ContactsContact> query; query.Construct(); - query.SetFilter(*pRwAbFilter); query.SetSort(_contacts_contact.display_name, true); + if (pRwAbFilter->Get() != null) + { + query.SetFilter(*pRwAbFilter); + } + IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); @@ -710,6 +766,8 @@ _AddressbookManagerImpl::GetContactsByCategoryN(RecordId categoryId) const ClearLastResult(); + IList* pContacts = null; + unique_ptr< __Filter<__ContactsContactGroupRel> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContactGroupRel>()); __Filter<__ContactsContactGroupRel> relFilter; @@ -724,19 +782,31 @@ _AddressbookManagerImpl::GetContactsByCategoryN(RecordId categoryId) const relFilter.AddInt(_contacts_contact_grouprel.group_id, CONTACTS_MATCH_NONE, 0); } - __Filter<__ContactsContactGroupRel> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactGroupRel> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(relFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(relFilter); - __Query<__ContactsContactGroupRel> query; - query.Construct(); - query.SetFilter(mainFilter); + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetFilter(mainFilter); - IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Contact>(query); - SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContactGroupRel> query; + query.Construct(); + query.SetFilter(relFilter); + + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactGroupRel, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pContacts; } @@ -747,6 +817,8 @@ _AddressbookManagerImpl::GetContactsByPersonN(PersonId personId) const SysTryReturn(NID_SCL, _ContactDbConnector::EnsureDbConnection() == E_SUCCESS, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); ClearLastResult(); + + IList* pContacts = null; unique_ptr< __Filter<__ContactsContact> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContact>()); @@ -754,20 +826,33 @@ _AddressbookManagerImpl::GetContactsByPersonN(PersonId personId) const contactFilter.Construct(); contactFilter.AddInt(_contacts_contact.person_id, CONTACTS_MATCH_EQUAL, personId); - __Filter<__ContactsContact> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContact> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(contactFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(contactFilter); - __Query<__ContactsContact> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetSort(_contacts_contact.display_name, true); + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetSort(_contacts_contact.display_name, true); - IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); - SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(contactFilter); + query.SetSort(_contacts_contact.display_name, true); + + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pContacts; } @@ -780,6 +865,8 @@ _AddressbookManagerImpl::SearchContactsByEmailN(const String& email) const ClearLastResult(); + IList* pContacts = null; + unique_ptr< __Filter<__ContactsContactEmail> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContactEmail>()); unique_ptr pCharArray(_StringConverter::CopyToCharArrayN(email)); @@ -789,20 +876,34 @@ _AddressbookManagerImpl::SearchContactsByEmailN(const String& email) const emailFilter.Construct(); emailFilter.AddString(_contacts_contact_email.email, CONTACTS_MATCH_CONTAINS, pCharArray.get()); - __Filter<__ContactsContactEmail> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactEmail> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(emailFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(emailFilter); - __Query<__ContactsContactEmail> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetSort(_contacts_contact_email.display_name, true); + __Query<__ContactsContactEmail> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetSort(_contacts_contact_email.display_name, true); - IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, Contact>(query); - SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContactEmail> query; + query.Construct(); + query.SetFilter(emailFilter); + query.SetSort(_contacts_contact_email.display_name, true); + + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + } return pContacts; } @@ -814,6 +915,8 @@ _AddressbookManagerImpl::SearchContactsByNameN(const String& name) const ClearLastResult(); + IList* pContacts = null; + unique_ptr< __Filter<__ContactsContact> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContact>()); SysTryReturn(NID_SCL, !name.IsEmpty(), null, E_INVALID_ARG, "[%s] Invalid argument is used. The specified email is an name string.", GetErrorMessage(E_INVALID_ARG)); @@ -825,20 +928,33 @@ _AddressbookManagerImpl::SearchContactsByNameN(const String& name) const nameFilter.Construct(); nameFilter.AddString(_contacts_contact.display_name, CONTACTS_MATCH_CONTAINS, pCharArray.get()); - __Filter<__ContactsContact> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContact> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(nameFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(nameFilter); - __Query<__ContactsContact> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetSort(_contacts_contact.display_name, true); + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetSort(_contacts_contact.display_name, true); - IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); - SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(nameFilter); + query.SetSort(_contacts_contact.display_name, true); + + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pContacts; } @@ -850,6 +966,8 @@ _AddressbookManagerImpl::SearchContactsByPhoneNumberN(const String& phoneNumber) ClearLastResult(); + IList* pContacts = null; + SysTryReturn(NID_SCL, !phoneNumber.IsEmpty(), null, E_INVALID_ARG, "[%s] Invalid argument is used. The specified phoneNumber is an empty string.", GetErrorMessage(E_INVALID_ARG)); unique_ptr< __Filter<__ContactsContactNumber> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsContactNumber>()); @@ -861,21 +979,36 @@ _AddressbookManagerImpl::SearchContactsByPhoneNumberN(const String& phoneNumber) numberFilter.Construct(); numberFilter.AddString(_contacts_contact_number.number, CONTACTS_MATCH_CONTAINS, pCharArray.get()); - __Filter<__ContactsContactNumber> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactNumber> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(numberFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(numberFilter); - __Query<__ContactsContactNumber> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetDistinct(true); - query.SetSort(_contacts_contact_number.display_name, true); + __Query<__ContactsContactNumber> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetDistinct(true); + query.SetSort(_contacts_contact_number.display_name, true); - IList* pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, Contact>(query); - SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsContactNumber> query; + query.Construct(); + query.SetFilter(numberFilter); + query.SetDistinct(true); + query.SetSort(_contacts_contact_number.display_name, true); + + pContacts = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, Contact>(query); + SysTryReturn(NID_SCL, pContacts != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + return pContacts; } @@ -1209,7 +1342,6 @@ _AddressbookManagerImpl::GetAllPersonsN(void) const unique_ptr< __Filter<__ContactsPersonGroupRel> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsPersonGroupRel>()); -// unsigned int propertyIds[] = { _contacts_person_grouprel.person_id }; unsigned int propertyIds[] = { _contacts_person_grouprel.person_id, @@ -1225,11 +1357,15 @@ _AddressbookManagerImpl::GetAllPersonsN(void) const __Query<__ContactsPersonGroupRel> query; query.Construct(); - query.SetFilter(*pRwAbFilter); query.SetSort(_contacts_person.display_name, true); query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); query.SetDistinct(true); + if (pRwAbFilter->Get() != null) + { + query.SetFilter(*pRwAbFilter); + } + IList* pPersons = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query); SysTryReturn(NID_SCL, pPersons != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); @@ -1244,6 +1380,8 @@ _AddressbookManagerImpl::GetPersonsByCategoryN(RecordId categoryId) const ClearLastResult(); + IList* pPersons = null; + unique_ptr< __Filter<__ContactsPersonGroupRel> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsPersonGroupRel>()); __Filter<__ContactsPersonGroupRel> groupFilter; @@ -1269,23 +1407,38 @@ _AddressbookManagerImpl::GetPersonsByCategoryN(RecordId categoryId) const _contacts_person_grouprel.addressbook_ids, }; - __Filter<__ContactsPersonGroupRel> mainFilter; - mainFilter.Construct(); - - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(groupFilter); - + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsPersonGroupRel> mainFilter; + mainFilter.Construct(); + + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(groupFilter); + + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetFilter(mainFilter); + query.SetSort(_contacts_person_grouprel.display_name, true); + query.SetDistinct(true); + + pPersons = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query); + SysTryReturn(NID_SCL, pPersons != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetFilter(groupFilter); + query.SetSort(_contacts_person_grouprel.display_name, true); + query.SetDistinct(true); - __Query<__ContactsPersonGroupRel> query; - query.Construct(); - query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); - query.SetFilter(mainFilter); - query.SetSort(_contacts_person_grouprel.display_name, true); - query.SetDistinct(true); + pPersons = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query); + SysTryReturn(NID_SCL, pPersons != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - IList* pPersons = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query); - SysTryReturn(NID_SCL, pPersons != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } return pPersons; } @@ -1430,23 +1583,40 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsAddressbook> abFilter; abFilter.Construct(filterHandle); - __Filter<__ContactsAddressbook> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsAddressbook> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(abFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(abFilter); - __Query<__ContactsAddressbook> query; - query.Construct(); - query.SetFilter(mainFilter); + __Query<__ContactsAddressbook> query; + query.Construct(); + query.SetFilter(mainFilter); - if (viewSortPropertyId != 0) - { - query.SetSort(viewSortPropertyId, ascending); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query, offset, maxCount); } + else + { + __Query<__ContactsAddressbook> query; + query.Construct(); + query.SetFilter(abFilter); + + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query, offset, maxCount); - pList = _AddressbookUtil::SearchWithQueryN<__ContactsAddressbook, Addressbook>(query, offset, maxCount); + } } break; case AB_FI_TYPE_PERSON: @@ -1456,13 +1626,6 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsPersonGroupRel> personFilter; personFilter.Construct(filterHandle); - __Filter<__ContactsPersonGroupRel> mainFilter; - mainFilter.Construct(); - - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(personFilter); - unsigned int propertyIds[] = { _contacts_person_grouprel.person_id, _contacts_person_grouprel.addressbook_ids, @@ -1474,18 +1637,43 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long _contacts_person_grouprel.display_name }; - __Query<__ContactsPersonGroupRel> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); - query.SetDistinct(true); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsPersonGroupRel> mainFilter; + mainFilter.Construct(); + + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(personFilter); + + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetDistinct(true); - if (viewSortPropertyId != 0) + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query, offset, maxCount); + } + else { - query.SetSort(viewSortPropertyId, ascending); + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetFilter(personFilter); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetDistinct(true); + + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query, offset, maxCount); } - - pList = _AddressbookUtil::SearchWithQueryN<__ContactsPersonGroupRel, Person>(query, offset, maxCount); } break; case AB_FI_TYPE_CONTACT: @@ -1495,23 +1683,40 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsContact> contactFilter; contactFilter.Construct(filterHandle); - __Filter<__ContactsContact> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContact> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(contactFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(contactFilter); - __Query<__ContactsContact> query; - query.Construct(); - query.SetFilter(mainFilter); + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(mainFilter); - if (viewSortPropertyId != 0) - { - query.SetSort(viewSortPropertyId, ascending); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query, offset, maxCount); } + else + { + __Query<__ContactsContact> query; + query.Construct(); + query.SetFilter(contactFilter); + + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query, offset, maxCount); - pList = _AddressbookUtil::SearchWithQueryN<__ContactsContact, Contact>(query, offset, maxCount); + } } break; case AB_FI_TYPE_CATEGORY: @@ -1521,23 +1726,39 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsGroup> groupFilter; groupFilter.Construct(filterHandle); - __Filter<__ContactsGroup> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsGroup> mainFilter; + mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(groupFilter); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(groupFilter); - __Query<__ContactsGroup> query; - query.Construct(); - query.SetFilter(mainFilter); + __Query<__ContactsGroup> query; + query.Construct(); + query.SetFilter(mainFilter); - if (viewSortPropertyId != 0) - { - query.SetSort(viewSortPropertyId, ascending); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsGroup, Category>(query, offset, maxCount); } + else + { + __Query<__ContactsGroup> query; + query.Construct(); + query.SetFilter(groupFilter); - pList = _AddressbookUtil::SearchWithQueryN<__ContactsGroup, Category>(query, offset, maxCount); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsGroup, Category>(query, offset, maxCount); + } } break; case AB_FI_TYPE_PHONE_CONTACT: @@ -1547,23 +1768,39 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsContactNumber> numberFilter; numberFilter.Construct(filterHandle); - __Filter<__ContactsContactNumber> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactNumber> mainFilter; + mainFilter.Construct(); + + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(numberFilter); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(numberFilter); + __Query<__ContactsContactNumber> query; + query.Construct(); + query.SetFilter(mainFilter); - __Query<__ContactsContactNumber> query; - query.Construct(); - query.SetFilter(mainFilter); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } - if (viewSortPropertyId != 0) - { - query.SetSort(viewSortPropertyId, ascending); + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, PhoneNumberContact>(query, offset, maxCount); } + else + { + __Query<__ContactsContactNumber> query; + query.Construct(); + query.SetFilter(numberFilter); - pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, PhoneNumberContact>(query, offset, maxCount); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactNumber, PhoneNumberContact>(query, offset, maxCount); + } } break; case AB_FI_TYPE_EMAIL_CONTACT: @@ -1573,23 +1810,39 @@ _AddressbookManagerImpl::SearchN(const AddressbookFilter& filter, unsigned long __Filter<__ContactsContactEmail> emailFilter; emailFilter.Construct(filterHandle); - __Filter<__ContactsContactEmail> mainFilter; - mainFilter.Construct(); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactEmail> mainFilter; + mainFilter.Construct(); + + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(emailFilter); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(emailFilter); + __Query<__ContactsContactEmail> query; + query.Construct(); + query.SetFilter(mainFilter); - __Query<__ContactsContactEmail> query; - query.Construct(); - query.SetFilter(mainFilter); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } - if (viewSortPropertyId != 0) - { - query.SetSort(viewSortPropertyId, ascending); + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, EmailContact>(query, offset, maxCount); } + else + { + __Query<__ContactsContactEmail> query; + query.Construct(); + query.SetFilter(emailFilter); - pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, EmailContact>(query, offset, maxCount); + if (viewSortPropertyId != 0) + { + query.SetSort(viewSortPropertyId, ascending); + } + + pList = _AddressbookUtil::SearchWithQueryN<__ContactsContactEmail, EmailContact>(query, offset, maxCount); + } } break; default: @@ -1620,13 +1873,20 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsAddressbook> abFilter; abFilter.Construct(filterHandle); - __Filter<__ContactsAddressbook> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(abFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsAddressbook> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(abFilter); - count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsAddressbook>(mainFilter.Get()); + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsAddressbook>(mainFilter.Get()); + } + else + { + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsAddressbook>(abFilter.Get()); + } } break; case AB_FI_TYPE_PERSON: @@ -1636,21 +1896,37 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsPersonGroupRel> personFilter; personFilter.Construct(filterHandle); - __Filter<__ContactsPersonGroupRel> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(personFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsPersonGroupRel> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(personFilter); + + unsigned int propertyIds[] = { _contacts_person_grouprel.person_id }; + + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetFilter(mainFilter); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetDistinct(true); + + count = _AddressbookUtil::GetCountWithQuery(query); + } + else + { + unsigned int propertyIds[] = { _contacts_person_grouprel.person_id }; - unsigned int propertyIds[] = { _contacts_person_grouprel.person_id }; + __Query<__ContactsPersonGroupRel> query; + query.Construct(); + query.SetFilter(personFilter); + query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); + query.SetDistinct(true); - __Query<__ContactsPersonGroupRel> query; - query.Construct(); - query.SetFilter(mainFilter); - query.SetProjection(propertyIds, sizeof(propertyIds)/sizeof(unsigned int)); - query.SetDistinct(true); + count = _AddressbookUtil::GetCountWithQuery(query); - count = _AddressbookUtil::GetCountWithQuery(query); + } } break; @@ -1661,13 +1937,20 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsContact> contactFilter; contactFilter.Construct(filterHandle); - __Filter<__ContactsContact> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(contactFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContact> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(contactFilter); - count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContact>(mainFilter.Get()); + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContact>(mainFilter.Get()); + } + else + { + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContact>(contactFilter.Get()); + } } break; case AB_FI_TYPE_CATEGORY: @@ -1677,13 +1960,20 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsGroup> groupFilter; groupFilter.Construct(filterHandle); - __Filter<__ContactsGroup> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(groupFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsGroup> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(groupFilter); - count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsGroup>(mainFilter.Get()); + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsGroup>(mainFilter.Get()); + } + else + { + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsGroup>(groupFilter.Get()); + } } break; case AB_FI_TYPE_PHONE_CONTACT: @@ -1693,13 +1983,20 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsContactNumber> numberFilter; numberFilter.Construct(filterHandle); - __Filter<__ContactsContactNumber> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(numberFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactNumber> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(numberFilter); - count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactNumber>(mainFilter.Get()); + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactNumber>(mainFilter.Get()); + } + else + { + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactNumber>(numberFilter.Get()); + } } break; case AB_FI_TYPE_EMAIL_CONTACT: @@ -1709,13 +2006,20 @@ _AddressbookManagerImpl::GetMatchedItemCount(const AddressbookFilter& filter) __Filter<__ContactsContactEmail> emailFilter; emailFilter.Construct(filterHandle); - __Filter<__ContactsContactEmail> mainFilter; - mainFilter.Construct(); - mainFilter.AddFilter(*pRwAbFilter); - mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); - mainFilter.AddFilter(emailFilter); + if (pRwAbFilter->Get() != null) + { + __Filter<__ContactsContactEmail> mainFilter; + mainFilter.Construct(); + mainFilter.AddFilter(*pRwAbFilter); + mainFilter.AddOperator(CONTACTS_FILTER_OPERATOR_AND); + mainFilter.AddFilter(emailFilter); - count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactEmail>(mainFilter.Get()); + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactEmail>(mainFilter.Get()); + } + else + { + count = _AddressbookUtil::GetMatchedItemCountWithFilter<__ContactsContactEmail>(emailFilter.Get()); + } } break; default: @@ -2389,12 +2693,16 @@ _AddressbookManagerImpl::GetAllUserProfilesN(void) const unique_ptr< __Filter<__ContactsUserProfile> > pRwAbFilter(_AddressbookUtil::GetRwAbFilterN<__ContactsUserProfile>()); SysTryReturn(NID_SCL, pRwAbFilter != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - __Query<__ContactsUserProfile> query2; - query2.Construct(); - query2.SetFilter(*pRwAbFilter); - query2.SetSort(_contacts_my_profile.display_name, true); + __Query<__ContactsUserProfile> query; + query.Construct(); + query.SetSort(_contacts_my_profile.display_name, true); + + if (pRwAbFilter->Get() != null) + { + query.SetFilter(*pRwAbFilter); + } - IList* pUserProfilesList = _AddressbookUtil::SearchWithQueryN<__ContactsUserProfile, UserProfile>(query2); + IList* pUserProfilesList = _AddressbookUtil::SearchWithQueryN<__ContactsUserProfile, UserProfile>(query); SysTryReturn(NID_SCL, pUserProfilesList != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); return pUserProfilesList; diff --git a/src/FScl_AddressbookUtil.cpp b/src/FScl_AddressbookUtil.cpp index b658f3e..195c59d 100644 --- a/src/FScl_AddressbookUtil.cpp +++ b/src/FScl_AddressbookUtil.cpp @@ -887,7 +887,7 @@ _AddressbookUtil::GetRwAbIdListN(void) __Filter<__ContactsAddressbook> filter; filter.Construct(); - filter.AddInt(_contacts_address_book.mode, CONTACTS_MATCH_EQUAL, 0); + filter.AddInt(_contacts_address_book.mode, CONTACTS_MATCH_GREATER_THAN, 0); __Query<__ContactsAddressbook> query; query.Construct(); diff --git a/src/FScl_AddressbookUtil.h b/src/FScl_AddressbookUtil.h index bad15c8..f75309f 100644 --- a/src/FScl_AddressbookUtil.h +++ b/src/FScl_AddressbookUtil.h @@ -194,8 +194,15 @@ public: result Construct(contacts_filter_h filterHandle) { - __filterHandle = filterHandle; - __destroyFilterHandle = false; + if (filterHandle != null) + { + __filterHandle = filterHandle; + __destroyFilterHandle = false; + } + else + { + Construct(); + } return true; } @@ -710,7 +717,7 @@ public: while (pSearchResult->MoveNext() == E_SUCCESS) { pChangeInfo.reset(__View::template ConvertResultTo(*pSearchResult)); - if (pRwAbIdList != null && !(pRwAbIdList->Contains(pChangeInfo->GetAddressbookId()))) + if (pRwAbIdList != null && (pRwAbIdList->Contains(pChangeInfo->GetAddressbookId()))) { continue; } @@ -779,14 +786,26 @@ public: template static int GetMatchedItemCountWithFilter(contacts_filter_h filterHandle) { - __Filter<__View> filter; - filter.Construct(filterHandle); + int count = 0; - __Query<__View> query; - query.Construct(); - query.SetFilter(filter); + if (filterHandle != null) + { + __Filter<__View> filter; + filter.Construct(filterHandle); + + __Query<__View> query; + query.Construct(); + query.SetFilter(filter); + + count = _AddressbookUtil::GetCountWithQuery(query); + } + else + { + __Query<__View> query; + query.Construct(); - int count = _AddressbookUtil::GetCountWithQuery(query); + count = _AddressbookUtil::GetCountWithQuery(query); + } return count; } @@ -829,6 +848,7 @@ public: } static Tizen::Base::Collection::IListT* GetRwAbIdListN(void); + static Tizen::Base::Collection::IListT* GetRoAbIdListN(void); template static __Filter<__View>* GetRwAbFilterN(void) @@ -845,19 +865,29 @@ public: AddressbookId addressbookId = -1; std::unique_ptr< Tizen::Base::Collection::IEnumeratorT > pEnum(pAbIdList->GetEnumeratorN()); - while (pEnum->MoveNext() == E_SUCCESS) + + if (pAbIdList->GetCount() > 0) { - pEnum->GetCurrent(addressbookId); - if (!isFirst) + while (pEnum->MoveNext() == E_SUCCESS) { - pFilter->AddOperator(CONTACTS_FILTER_OPERATOR_OR); - } - else - { - isFirst = false; - } + pEnum->GetCurrent(addressbookId); + if (!isFirst) + { + pFilter->AddOperator(CONTACTS_FILTER_OPERATOR_AND); + } + else + { + isFirst = false; + } - pFilter->AddInt(__View::GetAbPropertyId(), CONTACTS_MATCH_EQUAL, addressbookId); + pFilter->AddInt(__View::GetAbPropertyId(), CONTACTS_MATCH_NOT_EQUAL, addressbookId); + } + } + else + { + pFilter->AddInt(__View::GetAbPropertyId(), CONTACTS_MATCH_NOT_EQUAL, 2); + pFilter->AddOperator(CONTACTS_FILTER_OPERATOR_AND); + pFilter->AddInt(__View::GetAbPropertyId(), CONTACTS_MATCH_NOT_EQUAL, 3); } return pFilter.release(); -- 2.7.4