diff -r 000000000000 -r 094583676ce7 wvuing/wvuipresence/inc/MCAContactLists.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuipresence/inc/MCAContactLists.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,279 @@ +/* +* Copyright (c) 2002 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: Presence-list handling interface for clients +* +*/ + + +#ifndef MCACONTACTLISTS_H +#define MCACONTACTLISTS_H + +// INCLUDES +#include "MCAPresence.h" +#include +#include +#include "TCAWrappers.h" +#include "impsbuilddefinitions.h" + +// FORWARD DECLARATIONS +class MCAPresenceObserver; +class MCAWatcherObserver; +class MCAPresenceErrors; +class MCAStoredContact; +class MCAListInitObserver; +// CLASS DECLARATION + +/** +* Presence list handling interface for clients +* +* @lib CAPresence.lib +* @since 1.2 +*/ +class MCAContactLists + { + public: + + enum TListOperation + { + EAdd, // Add to list + ERemove, // Remove from list + EClearAdd, // Clear whole list and add + ERemoveAll // Removes everything from list + }; + + + enum TContactFetchOperation + { + EBaseSynchronise = 0, + EPublishAttributeLists, + EInitializeLists, + ERestartSynchronize, + ESynchronizeList, + EFetchContacts, + ESubscribeList, + EFinalizeList, + EPublishListsDone, + ESynchronizeDone + }; + + public: + /** + * Fetches all contacts from network server + * @param aBaseSyncDone, Is base sync already done + * ETrue BS is done and there's no need to do it again + * EFalse BS is not done, and it has to be done first + * @return Error code from server + */ + virtual TInt FetchContactsL( TBool aBaseSyncDone = EFalse ) = 0; + + /** + * Fetches given contact list contents from network server. + * NOTE: Given arrays must have same number of items (they are matched) + * NOTE2: Engine will reset given arrays before operating with them + * @param aContactListId Id of list to be fetched + * @param aWVIds wvids of server-side contacts + */ + virtual void FetchServerContactsL( const TDesC& aContactListId, + CPtrCArray& aWVIds ) = 0; + + /** + * Updates network server's contact list with given list. + * If given list does not contain some wvid, that is currently on server, + * system will delete the id from server... + * NOTE: Given arrays must have same number of items (they are matched) + * @param aContactListId Id of list to be updated + * @param aWVIds wvids of server-side contacts + * @param aNicknames nicknames of server-side contacts + */ + virtual void UpdateServerContactsL( const TDesC& aContactListId, + const MDesCArray& aWVIds, + const MDesCArray& aNicknames ) = 0; + + /** + * Deletes one contact from server side contact list + * @param aContactListId Id of list to be updated + * @param aWVId wvid of server-side contact + * @param aUpdateToServer + * ETrue update to server directly + * EFalse put change into queue (CommitDeleteServerContactL) + */ + virtual void DeleteServerContactL( const TDesC& aContactListId, + const TDesC& aWVId, + const TBool aUpdateToServer = ETrue ) = 0; + + /** + * Deletes several contacts from server side contact list + * @param aContactListId Id of list to be updated + * @param aWVId wvid of server-side contact + * @param aUpdateToServer + * ETrue update to server directly + * EFalse put change into queue (CommitDeleteServerContactL) + */ + virtual void DeleteServerContactL( const TDesC& aContactListId, + const MDesCArray& aWVIds, + const TBool aUpdateToServer = ETrue ) = 0; + + /** + * Updates deleted contacts to server. This have to be called after + * DeleteServerContactL is called without updating changes to server + * (aUpdateToServer). Otherwise the changed data might not be update to + * server. Use this method to make multiple updates to network with single + * operation. + */ + virtual void CommitDeleteServerContactL() = 0; + + /** + * Adds one contact to server side contact list + * @param aContactListId Id of list to be updated + * @param aWVId wvid of server-side contact + * @param aNickname nickname of server-side contact + * @param aDoNotRemove, This is used for editing old one. + * EFalse if editing, ETrue if adding. + * @param aOldWVId, when editing, remove old userid if different than new one. + */ + virtual MCAStoredContact* AddServerContactL( + const TDesC& aContactListId, + const TDesC& aWVId, + const TDesC& aNickname, + TBool aCanREmove = ETrue, + const TDesC* aOldWVId = NULL ) = 0; + + /** + * Adds several contacts to server side contact list + * @param aContactListId Id of list to be updated + * @param aWVId wvid of server-side contact + * @param aNickname nickname of server-side contact + */ + virtual void AddServerContactL( const TDesC& aContactListId, + const MDesCArray& aWVIds, + const MDesCArray& aNicknames ) = 0; + + /** + * Alters the nickname + * @param aContactListId Id of list to be updated + * @param aWVId wvid of server-side contact + * @param aNickname nickname of server-side contact + */ + virtual void UpdateContactNicknameL( const TDesC& aContactListId, + const TDesC& aWVId, + const TDesC& aNickname ) = 0; + + /** + * Fetches the list of lists from server. + * @param aContactListIds List names + */ + virtual TContactListsWrapper FetchServerContactListsL() = 0; + + /** + * Releases resources related to all other contact list, except given one + * @param aExcludedContactList Name of list to be kept + */ + virtual void ReleaseContactListsL( const TDesC& aExcludedContactList ) = 0; + + /** + * Set new display name for the contact list + * @param aContactListID ID of the list + * @param aDisplayName New display name for list + * @return Error code + * + * @since 3.0 + */ + virtual TInt SetDisplayNameL( const TDesC& aContactListID, const TDesC& aDisplayName ) = 0; + + /** + * Delete the contact list + * @param aContactListID ID of the list + * @return Error code + * + * @since 3.0 + */ + virtual TInt DeleteContactListL( const TDesC& aContactListID +#ifdef IMPS_CONTACT_FETCH_BACKGROUND + , TBool aFailedList = EFalse +#endif // IMPS_CONTACT_FETCH_BACKGROUND + ) = 0; + + /** + * Create contact list to server with given display name + * List id will be generated from display name + * @param aDisplayName Display name for new contact list + * @return Error code + * + * @since 3.0 + */ + virtual TInt CreateContactListL( const TDesC& aDisplayName ) = 0; + + /** + * Returns a reference to error container, that was filled by the last + * operation response. + * @return Reference to error container + */ + virtual const MCAPresenceErrors& LastOperationResult() const = 0; + + /** + * Cancel pending requests to network + * @since 2.5 + */ + virtual void CancelPendingRequests() = 0; + + /** + * Get temporary identification of contact which does not belong to contact list. + * @since 2.6 + * @param aUserId, Contact id. + * @return Contact identication. Nick or ripped userid. + */ + virtual TPtrC IdentificationL( const TDesC& aUserId ) = 0; + + /** + * Check if synchronization of contact lists is done + * @since 3.2 + * @return ETrue if done + */ + virtual TBool IsSyncDone() = 0; + + /** + * AddObserver method for registering the other class + */ + virtual void AddObserver( MCAListInitObserver* aObserver ) = 0 ; + + /** + * RemoveObserver method for unregistering the other class + */ + virtual void RemoveObserver() = 0; + + /** + * IsListInitialization return the init bool value + * @since 3.2 + * @return EFalse if done + */ + virtual TBool IsListInitializationCompleted() = 0; + + virtual TBool IsContactFetchingCompleted() = 0; + + virtual void AddMainViewProcessObserver( MCAListInitObserver* aObserver ) = 0; + + virtual void RemoveMainViewProcessObserver() = 0; + + protected: + + /** + * Destructor. + */ + virtual ~MCAContactLists() {}; + }; + +#endif // MCACONTACTLISTS_H + +// End of File +