Fixed DCM-2074
authorJaehwa Shin <jaehwa.shin@samsung.com>
Sat, 22 Jun 2013 11:51:01 +0000 (20:51 +0900)
committerJaehwa Shin <jaehwa.shin@samsung.com>
Sat, 22 Jun 2013 13:08:53 +0000 (22:08 +0900)
Change-Id: If02b8f47b9165365191f9b6d34e42f2cde44a107
Signed-off-by: Jaehwa Shin <jaehwa.shin@samsung.com>
src/FScl_AddressbookManagerImpl.cpp
src/FScl_AddressbookUtil.cpp
src/FScl_AddressbookUtil.h

index 659a460..f0f63f8 100644 (file)
@@ -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<char[]> 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;
index b658f3e..195c59d 100644 (file)
@@ -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();
index bad15c8..f75309f 100644 (file)
@@ -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<ChangeInfo>(*pSearchResult));
-                       if (pRwAbIdList != null && !(pRwAbIdList->Contains(pChangeInfo->GetAddressbookId())))
+                       if (pRwAbIdList != null && (pRwAbIdList->Contains(pChangeInfo->GetAddressbookId())))
                        {
                                continue;
                        }
@@ -779,14 +786,26 @@ public:
        template<typename __View>
        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<AddressbookId>* GetRwAbIdListN(void);
+       static Tizen::Base::Collection::IListT<AddressbookId>* GetRoAbIdListN(void);
 
        template<typename __View>
        static __Filter<__View>* GetRwAbFilterN(void)
@@ -845,19 +865,29 @@ public:
                AddressbookId addressbookId = -1;
 
                std::unique_ptr< Tizen::Base::Collection::IEnumeratorT<AddressbookId> > 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();