phonebookengines_old/contactsmodel/src/CNTFILT.CPP
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/src/CNTFILT.CPP	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,307 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <cntfilt.h>
+#include "CNTSTD.H"
+
+
+EXPORT_C CCntFilter* CCntFilter::NewL()
+/** Allocates and constructs a default contact database filter.
+
+@return Pointer to the new filter. */
+	{
+	return new(ELeave) CCntFilter;
+	};
+
+/** Allocates and constructs a default contact database filter. 
+
+@return Pointer to the new filter. This is left on 
+the cleanup stack. 
+*/
+EXPORT_C CCntFilter* CCntFilter::NewLC()
+	{
+	CCntFilter* newFilter=CCntFilter::NewL();
+	CleanupStack::PushL(newFilter);
+	return newFilter;
+	};
+
+
+EXPORT_C CCntFilter* CCntFilter::NewL(const CCntFilter* aFilter)
+/** Allocates and constructs a contact database filter based on another one. 
+
+The state value, type flags, the date/time value and the ID array are copied.
+
+@param aFilter Pointer to the filter to copy.
+@return Pointer to the new filter. */
+	{
+	CCntFilter* newFilter=CCntFilter::NewLC(aFilter);
+	CleanupStack::Pop(); // newFilter
+	return newFilter;
+	};
+
+
+EXPORT_C CCntFilter* CCntFilter::NewLC(const CCntFilter* aFilter)
+/** Allocates and constructs a contact database filter based on another one. 
+
+The state value, type flags, the date/time value and the ID array are copied.
+
+@param aFilter Pointer to the filter to copy.
+@return Pointer to the new filter. This is left on the cleanup stack. */
+	{
+	CCntFilter* newFilter=new(ELeave) CCntFilter(aFilter);
+	CleanupStack::PushL(newFilter);
+	return newFilter;
+	};
+
+/** Allocates and constructs a contact database filter based on a RReadStream. 
+
+The state value, type flags, the date/time value and the ID array are copied.
+
+@param aStream RReadStream containing object to internalize.
+@return Pointer to the new filter. This is left on the cleanup stack. 
+@internalTechnology 
+*/	
+CCntFilter* CCntFilter::NewLC(RReadStream& aStream)
+	{
+	CCntFilter* newFilter=CCntFilter::NewLC();
+	newFilter->InternalizeL(aStream);	
+	return newFilter;
+	}		
+
+EXPORT_C void CCntFilter::Reset()
+/** Resets the filter. The state value is set to EIncludeAllContacts and the contact 
+ID array is reset. */
+	{
+	iInclude=EIncludeAllContacts; 
+	if (iIds)
+		iIds->Reset();
+	};
+
+EXPORT_C void CCntFilter::SetIncludeModifiedContacts(TBool aIncludeModified)
+/** Sets the filter to include only contacts modified since the filter's date/time.
+
+@param aIncludeModified ETrue to include only contacts modified since the 
+filter's date/time, EFalse to include contact items in all states. */
+	{
+	if (aIncludeModified)
+		iInclude = EIncludeModifiedContacts;
+	else
+		iInclude = EIncludeAllContacts;
+	}; 
+
+EXPORT_C void CCntFilter::SetIncludeNewContacts(TBool aIncludeNew)
+/** Sets the filter to include only contacts created since the filter's date/time.
+
+@param aIncludeNew ETrue to include only contacts created since the filter's 
+date/time, EFalse to include contact items in all states. */
+	{
+	if (aIncludeNew)
+		iInclude = EIncludeNewContacts;
+	else
+		iInclude = EIncludeAllContacts;
+	}; 
+
+EXPORT_C void CCntFilter::SetIncludeDeletedContacts(TBool aIncludeDeleted)
+/** Sets the filter to include only contacts deleted since the filter's date/time.
+
+@param aIncludeDeleted ETrue to include only contacts deleted since the filter's 
+date/time, EFalse to include contact items in all states. */
+	{
+	if (aIncludeDeleted)
+		iInclude = EIncludeDeletedContacts;
+	else
+		iInclude = EIncludeAllContacts;
+	}; 
+
+EXPORT_C TBool CCntFilter::TestContactFilterType(TUid aTypeUid)
+/** Tests whether a contact item type, identified by its UID is included in or 
+excluded from the filter.
+
+@param aTypeUid UID which identifies a contact item type. One of: KUidContactCard, 
+KUidContactGroup, KUidContactCardTemplate or KUidContactOwnCard.
+@return ETrue if the specified contact type is included in the filter, EFalse 
+not. */
+	{	
+	if (ContactFilterTypeALL())
+		return ETrue;	// all types are set to be search
+	else if (aTypeUid == KUidContactCard && ContactFilterTypeCard())
+		return ETrue;
+	else if (aTypeUid == KUidContactGroup && ContactFilterTypeGroup())
+		return ETrue;
+	else if (aTypeUid == KUidContactCardTemplate && ContactFilterTypeTemplate())
+		return ETrue;
+	else if (aTypeUid == KUidContactOwnCard && ContactFilterTypeOwnCard())
+		return ETrue;
+	return EFalse;
+	}
+
+EXPORT_C void CCntFilter::SetContactFilterTypeALL(TBool aFilterAllContacts)
+/** Sets whether all contact item types (contact card groups, contact cards, own 
+cards and contact card templates) should be included in the filter.
+
+@param aFilterAllContacts ETrue if all contact item types should be included 
+in the filter, EFalse if not. */
+	{
+	if (aFilterAllContacts)
+		iContactType |= EIncludeAllTypes;
+	else
+		iContactType &= ~EIncludeAllTypes ;
+	};
+
+
+EXPORT_C void CCntFilter::SetContactFilterTypeCard(TBool aFileterCards)
+/** Sets whether contact cards should be included in or excluded from the filter.
+
+@param aFileterCards ETrue to include contact cards in the filter, EFalse to exclude them. */		
+	{
+	if (aFileterCards)
+		iContactType |= EContactCards;
+	else
+		iContactType &= ~EContactCards;
+	};
+
+EXPORT_C void CCntFilter::SetContactFilterTypeGroup(TBool aFilterGroups)
+/** Sets whether contact card groups should be included in or excluded from the 
+filter.
+
+@param aFilterGroups ETrue to include contact card groups in the filter, EFalse 
+to exclude them. */
+	{
+	if (aFilterGroups)
+		iContactType |= EContactGroups;
+	else
+		iContactType &= ~EContactGroups;
+
+	};
+
+EXPORT_C void CCntFilter::SetContactFilterTypeTemplate(TBool aFilterTemplates)
+/** Sets whether contact card templates should be included in or excluded from 
+the filter.
+
+@param aFilterTemplates ETrue to include contact card templates in the filter, 
+EFalse to exclude them. */
+	{
+	if (aFilterTemplates)
+		iContactType |= EContactTemplates;
+	else
+		iContactType &= ~EContactTemplates;
+	};
+
+EXPORT_C void CCntFilter::SetContactFilterTypeOwnCard(TBool aFilterOwnCard)
+/** Sets whether own cards should be included in or excluded from the filter.
+
+@param aFilterOwnCard ETrue to include own cards in the filter, EFalse to 
+exclude them. */
+	{
+	if (aFilterOwnCard)
+		iContactType |= EContactOwnCard;
+	else
+		iContactType &= ~EContactOwnCard;
+
+	};	
+
+
+EXPORT_C CCntFilter::~CCntFilter()
+/** Deletes all resources owned by the filter prior to its destruction. */
+	{
+	delete iIds;
+	};
+
+//	TVersion Version() const;
+//	virtual TBool IsValid(const Whatever& aWhatever) const; void SetSinceDate(const TTime&);
+
+CCntFilter::CCntFilter()
+	{
+	};
+
+CCntFilter::CCntFilter(const CCntFilter* aFilter)
+:iIds(aFilter->iIds), iSinceDateTime(aFilter->iSinceDateTime),iInclude(aFilter->iInclude),
+	iContactType(aFilter->iContactType)
+	{
+	};
+	
+void CCntFilter::InternalizeL(RReadStream& aStream)
+/** Internalises a CCntFilter object from a read stream. 
+@param aStream Stream from which the object should be internalised. */
+	{
+	// CContactIdArray* iIds;
+	if (iIds)
+		{
+		delete iIds;		
+		iIds = NULL;
+		}
+		
+	//TBool CheckIfExists=aStream.ReadInt32L();
+	if (aStream.ReadInt32L())
+		{
+		iIds = CContactIdArray::NewL();		
+		iIds->InternalizeL(aStream);
+		}			
+			
+	// TTime iSinceDateTime;
+	TInt64 tempInt64;
+	aStream >> tempInt64;
+	iSinceDateTime = TTime(tempInt64);	
+	
+	// TInclude	iInclude;
+	iInclude = static_cast<TInclude>(aStream.ReadInt32L());
+
+	// TInt32 iContactType;
+	iContactType = aStream.ReadInt32L();
+	
+	// TAny* iReserved1;
+	// TAny* iReserved2;	
+	}
+
+void CCntFilter::ExternalizeL(RWriteStream& aStream) const 
+/** Externalises a CCntFilter object to a write stream.
+@param aStream Stream to which the object should be externalised. */
+	{
+	// CContactIdArray* iIds;
+	if(iIds)
+		{
+		aStream.WriteInt32L(1);
+		iIds->ExternalizeL(aStream);
+		}
+	else
+		{
+		aStream.WriteInt32L(0); // Empty array
+		}
+			
+	// TTime iSinceDateTime;	
+	aStream << iSinceDateTime.Int64();
+	
+	// TInclude	iInclude;
+	aStream.WriteInt32L(iInclude);
+		
+	// TInt32 iContactType;
+	aStream.WriteInt32L(iContactType);	
+	
+	// TAny* iReserved1;
+	// TAny* iReserved2;
+		
+	}			
+
+/*
+protected:
+	TTime            iSinceDate;
+	TBool            iIncludeChangedContacts; 
+	TBool            iIncludeDeletedContacts; 
+	TBool            iIncludeInsertedContacts; 
+	TAny*	         iReserved1;
+	TAny*			 iReserved2;
+*/
+
+