/*
* Copyright (c) 2004 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 contact list transactions.
*
*/
#ifndef __CPENGCONTACTLISTTRANSACTION2_H
#define __CPENGCONTACTLISTTRANSACTION2_H
// INCLUDES
#include <E32Base.h>
#include <BamDescA.h>
// FORWARD DECLARATIONS
class MPEngContactList2;
class CPEngContactListTransaction2Imp;
class CPEngNWSessionSlotID2;
class MPEngContactListTransactionObserver2;
// CLASS DECLARATION
/**
* Transaction API for presence contact lists.
*
* With this API clients can publish contact
* lists to network.
*
* Contact list publish operations are asynchronous network operations,
* and their end results are signalled to given operation observer.
*
* @lib PEngManager2.lib
* @since 3.0
*/
class CPEngContactListTransaction2 : public CBase
{
//-----------------------------------------------------------------------
public: /* Construction */
/**
* Instantiates CPEngContactListTransaction2 object.
*
* Instantiates CPEngContactListTransaction2 object and connects
* it to identified Presence Engine NWSessionSlot. NWSessionSlot
* must be a valid, existing slot.
*
* Errors:
* - Requested NWSessionSlot not found: KErrNotFound
* - Given NWSessionSlotID malformed: KErrArgument
*
* @param aNWSessionSlotID The session slot ID to identify the
* session slot.
* @param aPriority The priority for CPEngContactListTransaction2
* client side active objects. These active objects are used when
* asynchronously delivering events to observers.
*
* @return New CPEngContactListTransaction2 instance.
*/
IMPORT_C static CPEngContactListTransaction2* NewL(
const CPEngNWSessionSlotID2& aNWSessionSlotID,
TInt aPriority = CActive::EPriorityStandard );
IMPORT_C static CPEngContactListTransaction2* NewLC(
const CPEngNWSessionSlotID2& aNWSessionSlotID,
TInt aPriority = CActive::EPriorityStandard );
/**
* Destructor.
* Virtual by CBase.
*/
~CPEngContactListTransaction2();
private:
CPEngContactListTransaction2();
//-----------------------------------------------------------------------
public: /* Contact lists base synchronization */
/**
* Tests is the contact list base synchronize already active.
*
* @since 3.0
* @return ETrue if operation is active. Else EFalse.
*/
IMPORT_C TBool IsBaseSynchronizeContactListsActive() const;
/**
* Base synchronizes list of contact lists with network server.
*
* There can be just one active base synchronization
* operation at a time per one CPEngContactListTransaction2 instance.
*
* @since 3.0
* @param aObserver The observer to notify from contact list
* base synchronization events.
* aNeedToSubscribe ETrue if the lists need to be unsubscribed
* during base synchronization.
* @return Result from initiating contact base synchronization:
* - KErrNone if contact list base synchronization succesfully initiated.
* - KErrInUse if base synchronization already on going.
* - Else one of system wide error codes.
*/
IMPORT_C TInt BaseSynchronizeContactLists(
MPEngContactListTransactionObserver2& aObserver );
IMPORT_C TInt BaseSynchronizeContactLists(
MPEngContactListTransactionObserver2& aObserver,
TBool aNeedToUnsubscribe );
/**
* Cancels the contact list base synchronize.
*
* @since 3.0
*/
IMPORT_C void CancelBaseSynchronizeContactLists();
//-----------------------------------------------------------------------
public: /* Contact list publish & synchronization */
/**
* Tests is the contact list publish or
* synchronize already active.
*
* @since 3.0
* @return ETrue if operation is active. Else EFalse.
*/
IMPORT_C TBool IsContactListPubSyncActive() const;
/**
* Synchronizes the contact list with the network server.
*
* There can be just one active contact list publish or
* synchronization operation at a time per one
* CPEngContactListTransaction2 instance.
*
* @since 3.0
* @param aContactListName The contact list(s) to synchronize.
* @param aObserver The observer to notify from contact list
* synchronize events.
* @return Result from initiating contact list synchronize:
* - KErrNone if contact list synchronize succesfully initiated.
* - KErrNotfound if requested contact list not found.
* - KErrInUse if contact synchronize already on going from object.
* - Else one of system wide error codes.
*/
IMPORT_C TInt SynchronizeContactList(
const TDesC& aContactListName,
MPEngContactListTransactionObserver2& aObserver );
IMPORT_C TInt SynchronizeContactLists(
const MDesCArray& aContactListNames,
MPEngContactListTransactionObserver2& aObserver );
/**
* Publishes the contact list to the network server.
*
* There can be just one active contact list publish or
* synchronization operation at a time per one
* CPEngContactListTransaction2 instance.
*
* @since 3.0
* @param aContactListName The contact list(s) to publish.
* @param aObserver The observer to notify from contact list
* publish events.
* @return Result from initiating contact list publish:
* - KErrNone if contact list publish succesfully initiated.
* - KErrNotfound if requested contact list not found.
* - KErrInUse if contact publish already on going from object.
* - Else one of system wide error codes.
*/
IMPORT_C TInt PublishContactList(
const TDesC& aContactListName,
MPEngContactListTransactionObserver2& aObserver );
IMPORT_C TInt PublishContactLists(
const MDesCArray& aContactListNames,
MPEngContactListTransactionObserver2& aObserver );
/**
* Cancels the current contact list publish or synchronize
* operation.
*
* @since 3.0
*/
IMPORT_C void CancelContactListPubSync();
//-----------------------------------------------------------------------
private: /* Data */
//OWN: Implementation
CPEngContactListTransaction2Imp* iImp;
};
#endif //__CPENGCONTACTLISTTRANSACTION2_H
//End of file