diff -r 6ca72c0fe49a -r a941bc465d9f PECengine/ListLibrary2/ContactListSrc/CPEngContactListDeleteTrans.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/ContactListSrc/CPEngContactListDeleteTrans.cpp Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,352 @@ +/* +* 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: Handler to delete contact list. +* +*/ + + +// INCLUDE FILES +#include "CPEngContactListDeleteTrans.h" + +#include "MPEngContactListTransactionManager.h" +#include "CPEngContactListSettings.h" +#include "CPEngContactListModBase.h" + +#include "PEngListLibTools.h" +#include "MPEngXMLSerializer.h" +#include "MPEngXMLParser.h" + +#include "CPEngTransactionStatus.h" +#include "PEngWVPresenceErrors2.h" +#include "PresenceDebugPrint.h" + + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::CPEngContactListDeleteTrans() +// ----------------------------------------------------------------------------- +// +CPEngContactListDeleteTrans::CPEngContactListDeleteTrans( + CPEngContactListModBase& aContactList, + MPEngContactListTransactionManager& aSettingsManager, + TPEngWVCspVersion& aCSPVersion, + TInt aOperationId ) + : iContactList( aContactList ), + iSettingsManager( aSettingsManager ), + iCSPVersion( aCSPVersion ), + iOperationId( aOperationId ) + { + PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::CPEngContactListDeleteTrans() [%S]" ), + &( iContactList.ListProperties().Name() ) ); + + iContactList.Open(); // CSI: 65 # + iContactList.Lock( EStorageLockLevelHigh ); + } + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::ConstructL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::ConstructL() + { + iTransactionStatus = CPEngTransactionStatus::NewL(); + + if ( iContactList.Settings().Property( KPEngCntLstSubscribe, + KPEngCntLstPropertyNativePermanent ) ) + { + iTransactionState = EPEngUnSubscribeContactList; + } + else + { + iTransactionState = EPEngDeleteContactList; + } + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::NewLC() +// ----------------------------------------------------------------------------- +// +CPEngContactListDeleteTrans* CPEngContactListDeleteTrans::NewLC( + CPEngContactListModBase& aContactList, + MPEngContactListTransactionManager& aSettingsManager, + TPEngWVCspVersion& aCSPVersion, + TInt aOperationId ) + { + CPEngContactListDeleteTrans* self = + new ( ELeave ) CPEngContactListDeleteTrans( + aContactList, + aSettingsManager, + aCSPVersion, + aOperationId ); + CleanupStack::PushL( self ); + self->ConstructL( ); + + return self; + } + + +// Destructor +CPEngContactListDeleteTrans::~CPEngContactListDeleteTrans() + { + iContactList.Unlock(); + iContactList.Close(); + delete iTransactionStatus; + } + + +// ============================================================================== +// =============Function from MPEngOutgoingTransactionHandler ================= +// ============================================================================== + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::RequestL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::RequestL( TDes8& aSendBuffer ) + { + aSendBuffer.Zero(); + MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer ); + CleanupClosePushL( *xmlSerializer ); + + // + NListLibTools::AppendTransactionContentTagXmlL( *xmlSerializer, iCSPVersion ); + + switch ( iTransactionState ) + { + case EPEngUnSubscribeContactList: + { + PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::RequestL() unsubscribe [%S]" ), + &( iContactList.ListProperties().Name() ) ); + + GetXMLUnsubscribeContactListL( *xmlSerializer ); + break; + } + + + case EPEngDeleteContactList: + { + PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::RequestL() delete [%S]" ), + &( iContactList.ListProperties().Name() ) ); + + GetXMLDeleteContactListL( *xmlSerializer ); + break; + } + + + default: + { + User::Leave( KErrNotSupported ); + break; + } + } + + // end of transaction + // + xmlSerializer->EndTagL( KTransactionContent ); + CleanupStack::PopAndDestroy( ); // xmlSerializer + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::LastRunningTransactionHandler() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::LastRunningTransactionHandler() + { + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::ProcessResponseL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::ProcessResponseL( const TDesC8& aResponse, + TRequestStatus& /* aStatus */ ) + { + PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::ProcessResponseL() [%S] state %d" ), + &( iContactList.ListProperties().Name() ), iTransactionState ); + + MPEngXMLParser* XMLparser = CreateXMLParserLC(); + + // check if we have some answer from the server + TInt err ( XMLparser->ParseContactListResultL( aResponse, + iOperationId, + iContactList.Settings().Name(), + *iTransactionStatus ) ); + // how did transaction go + switch ( err ) + { + case KErrNone: // transaction OK + { + // return, continue with transaction + iTransactionState++; // this will go one state forward + // if transaction is completed, do not break, + // other switch case will do cleaning + if ( iTransactionState != EPEngTransactionCompleted ) + { + break; + } + } + + case KPEngNwErrContactListDoesNotExist: + { + // We wanted to delete list anyway + // remove contact list settings from store + iSettingsManager.CompleteCntListDeletionL( iContactList.Settings().Name() ); + iTransactionState = EPEngTransactionCompleted; + break; + } + + default: + { + // some error has occured, complete transaction and return + iTransactionState = EPEngTransactionCompleted; + } + } + + + CleanupStack::PopAndDestroy(); // XMLparser + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::CancelProcessing() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::CancelProcessing() + { + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::NewTransactionHandlersL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::NewTransactionHandlersL( + RPointerArray& /* aTransactionsArray*/ ) + { + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::TransactionCompleted() +// ----------------------------------------------------------------------------- +// +TBool CPEngContactListDeleteTrans::TransactionCompleted() + { + return ( iTransactionState == EPEngTransactionCompleted ); + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::TransactionResult() +// ----------------------------------------------------------------------------- +// +CPEngTransactionStatus* CPEngContactListDeleteTrans::TransactionResult() + { + CPEngTransactionStatus* temp = iTransactionStatus; + iTransactionStatus = NULL; + return temp; + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::ReleaseHandler() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::ReleaseHandler() + { + iTransactionState = EPEngTransactionCompleted; + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::GetXMLUnsubscribeContactListL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::GetXMLUnsubscribeContactListL( + MPEngXMLSerializer& aXmlSerializer ) + { + // + aXmlSerializer.StartTagL( KUnsubscribePresence ); + + NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() ); + + // + aXmlSerializer.EndTagL( KUnsubscribePresence ); + } + + +// ----------------------------------------------------------------------------- +// CPEngContactListDeleteTrans::GetXMLDeleteContactListL() +// ----------------------------------------------------------------------------- +// +void CPEngContactListDeleteTrans::GetXMLDeleteContactListL( + MPEngXMLSerializer& aXmlSerializer ) + { + // + aXmlSerializer.StartTagL( KDeleteList ); + + NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() ); + + // + aXmlSerializer.EndTagL( KDeleteList ); + } + +// End of File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +