diff -r 000000000000 -r 094583676ce7 PECengine/ListLibrary2/ContactListSrc/CPEngContactListModChangeMonitor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/ContactListSrc/CPEngContactListModChangeMonitor.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,232 @@ +/* +* Copyright (c) 2005 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: Monitors contact list changes. +* +*/ + + +#ifndef __CPENGCONTACTLISTMODCHANGEMONITOR_H__ +#define __CPENGCONTACTLISTMODCHANGEMONITOR_H__ + +// INCLUDES +#include +#include + + +// FORWARD DECLARATIONS +class RWriteStream; +class RReadStream; +class MPEngContactListModStore; + + +// CLASS DECLARATION + +/** + * Monitor the contact list changes. + * Stores changes which were commited on the network server + * + * @lib PEngListLib2 + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngContactListModChangeMonitor ) : public CBase + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPEngContactListModChangeMonitor* NewL( + MPEngContactListModStore& aStoreEntry ); + + /** + * Destructor. + */ + virtual ~CPEngContactListModChangeMonitor(); + + + +public: // New functions + + /** + * Returns list of Contact Ids wich were added + * to the contact lists with the last transaction + * + * @since 3.0 + * @return Array of the added Contact Ids + */ + const MDesCArray& AddedContactIds() const; + + + /** + * Returns list of Contact Ids wich were removed from + * the contact lists with the last transaction + * + * @since 3.0 + * @return Array of the removed Contact Ids + */ + const MDesCArray& RemovedContactIds() const; + + + /** + * Returns count of added Contact Ids + * + * @since 3.0 + * @return count of Contact Ids + */ + TInt CountAddedContactIds() const; + + + /** + * Returns count of removed Contact Ids + * + * @since 3.0 + * @return count of Contact Ids + */ + TInt CountRemovedContactIds() const; + + + /** + * Find Contact Id in the Added Contact Ids + * + * @since 3.0 + * @param aContactId contact id to find + * @param aUserDomain user domain + * @return the position of found Contact Id, else KErrNotFound. + */ + TInt FindContactIdInAdded( const TDesC& aContactId, + const TDesC& aUserDomain ) const; + + + /** + * Find Contact Id in the Removed Contact Ids + * + * @since 3.0 + * @param aContactId The Contact Id to find + * @param aUserDomain user domain + * @return the position of found Contact Id, else KErrNotFound. + */ + TInt FindContactIdInRemoved( const TDesC& aContactId, + const TDesC& aUserDomain ) const; + + /** + * Externalizes whole presence list to stream + * + * @since 3.0 + * @param aStream Stream to write to. + */ + void ExternalizeArrayL( RWriteStream& aStream ) const; + + + /** + * Internalizes whole presence list from stream + * + * @since 3.0 + * @param aStream stream to read from + * @return + */ + void InternalizeArrayL( RReadStream& aStream ); + + + /** + * Add Contact Id to the list of added Contact Ids, + * Does not leave if Contact Id already exists + * + * @since 3.0 + * @param aContactId to add to the list + * @return KErrNone if it was OK, else system wide error code + */ + TInt InsertAddedContactIdL( const TDesC& aContactId ); + + /** + * Remove Contact Id to the list of added Contact Ids + * + * @since 3.0 + * @param aContactId Contact Id to be removed + * @return KErrNone if it was OK, else system wide error code + */ + void RemoveAddedContactId( const TDesC& aContactId ); + + + /** + * Reset content of the list of Added Contact Ids, + * + * @since 3.0 + */ + void ResetAddedContactId(); + + + /** + * Add Contact Id to the list of removed Contact Ids, + * Does not leave if Contact Id already exists + * + * @since 3.0 + * @param aContactId to add to the list + * @return KErrNone if it was OK, else system wide error code + */ + TInt InsertRemovedContactIdL( const TDesC& aContactId ); + + + /** + * Remove Contact Id to the list of removed Contact Ids, + * + * @since 3.0 + * @param aContactId Contact Id to be removed + * @return KErrNone if it was OK, else system wide error code + */ + void RemoveRemovedContactId( const TDesC& aContactId ); + + + /** + * Reset content of the list of removed Contact Id, + * + * @since 3.0 + */ + void ResetRemovedContactIds(); + + + /** + * Reset the content of the list + * + * @since 3.0 + */ + void Reset(); + + +protected: // New functions + + /** + * C++ constructor. + */ + CPEngContactListModChangeMonitor( + MPEngContactListModStore& aStoreEntry ); + + +private: // Data + + // OWN: List of added ContactIds + CDesC16ArraySeg iAddedContactIds; + + // OWN: List of removed ContactIds + CDesC16ArraySeg iRemovedContactIds; + + // REF: Store entry of the whole model + MPEngContactListModStore& iStoreEntry; + + }; + +#endif // __CPENGCONTACTLISTMODCHANGEMONITOR_H__ + + +// End of File +