--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/ContactListSrc/CPEngContactListDeleteTrans.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -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 );
+
+ // <TransactionContent xmlns="http://www.wireless -village.org/TRC1.1">
+ 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
+ // </TransactionContent>
+ 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<MPEngOutgoingTransactionHandler>& /* 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 )
+ {
+ // <UnsubscribePresence-Request>
+ aXmlSerializer.StartTagL( KUnsubscribePresence );
+
+ NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() );
+
+ // </UnsubscribePresence-Request>
+ aXmlSerializer.EndTagL( KUnsubscribePresence );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListDeleteTrans::GetXMLDeleteContactListL()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListDeleteTrans::GetXMLDeleteContactListL(
+ MPEngXMLSerializer& aXmlSerializer )
+ {
+ // <DeleteList-Request>
+ aXmlSerializer.StartTagL( KDeleteList );
+
+ NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() );
+
+ // </DeleteList-Request>
+ aXmlSerializer.EndTagL( KDeleteList );
+ }
+
+// End of File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+