PECengine/ListLibrary2/ContactListSrc/CPEngContactListDeleteTrans.cpp
changeset 0 094583676ce7
--- /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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+