PECengine/ListLibrary2/ContactListSrc/CPEngContactListMngTransProperties.cpp
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/ContactListSrc/CPEngContactListMngTransProperties.cpp	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,273 @@
+/*
+* 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:  Plus delta list outgoing update handler
+*
+*/
+
+// INCLUDE FILES
+
+#include "CPEngContactListMngTransProperties.h"
+#include "MPEngContactListSettingsManager.h"
+#include "CPEngContactListSettings.h"
+#include "CPEngContactListModBase.h"
+#include "MPEngContactListTransactionManager.h"
+
+#include "PEngListLibTools.h"
+#include "MPEngXMLParser.h"
+#include "MPEngXMLSerializer.h"
+
+#include "CPEngTransactionStatus.h"
+#include "PEngWVPresenceErrors2.h"
+#include "PresenceDebugPrint.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::CPEngContactListMngTransProperties()
+// -----------------------------------------------------------------------------
+//
+CPEngContactListMngTransProperties::CPEngContactListMngTransProperties(
+    CPEngContactListModBase& aContactList,
+    MPEngContactListTransactionManager& aManager,
+    TPEngWVCspVersion& aCSPVersion,
+    TInt aOperationId )
+        : iContactList( aContactList ),
+        iManager( aManager ),
+        iTransactionCompleted( EFalse ),
+        iCSPVersion( aCSPVersion ),
+        iOperationId( aOperationId )
+
+    {
+    PENG_DP( D_PENG_LIT( "CPEngContactListMngTransProperties::CPEngContactListMngTransProperties" ) );
+    iContactList.Open();                        // CSI: 65 #
+    iContactList.Lock( EStorageLockLevelHigh );
+    }
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::ConstructL()
+    {
+    iTransactionStatus =  CPEngTransactionStatus::NewL();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngContactListMngTransProperties* CPEngContactListMngTransProperties::NewLC(
+    CPEngContactListModBase& aContactList,
+    MPEngContactListTransactionManager& aManager,
+    TPEngWVCspVersion& aCSPVersion,
+    TInt aOperationId )
+    {
+    CPEngContactListMngTransProperties* self =
+        new ( ELeave ) CPEngContactListMngTransProperties(
+        aContactList,
+        aManager,
+        aCSPVersion,
+        aOperationId );
+    CleanupStack::PushL( self );
+    self->ConstructL( );
+    return self;
+    }
+
+// Destructor
+CPEngContactListMngTransProperties::~CPEngContactListMngTransProperties()
+    {
+    iContactList.Unlock();
+    iContactList.Close();
+    delete iTransactionStatus;
+    }
+
+
+// ============================================================================
+// =============Function from MPEngOutgoingTransactionHandler =================
+// ============================================================================
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::RequestL()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::RequestL(
+    TDes8& aSendBuffer )
+    {
+    aSendBuffer.Zero();
+    MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer );
+    CleanupClosePushL( *xmlSerializer );
+
+    // <TransactionContent xmlns="http://www.wireless -village.org/TRC1.1">
+    NListLibTools::AppendTransactionContentTagXmlL( *xmlSerializer, iCSPVersion );
+
+    // <ListManage-Request>
+    xmlSerializer->StartTagL( KListMnageRequest );
+
+    NListLibTools::AppendContactListNameXmlL( *xmlSerializer, iContactList.Settings() );
+
+    NListLibTools::AppendContactListPropertiesXmlL( *xmlSerializer, iContactList.Settings() );
+
+    // <ReceiveList>T</ReceiveList>
+    NListLibTools::ApppendReceiveListTagL( *xmlSerializer, iCSPVersion, ETrue );
+
+    // </ListManage-Request>
+    xmlSerializer->EndTagL( KListMnageRequest );
+
+    // end of transaction
+    // </TransactionContent>
+    xmlSerializer->EndTagL( KTransactionContent );
+    CleanupStack::PopAndDestroy( ); // xmlSerializer
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::LastRunningTransactionHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::LastRunningTransactionHandler()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::ProcessResponseL()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::ProcessResponseL(
+    const TDesC8& aResponse,
+    TRequestStatus& /* aStatus */ )
+    {
+    // parse contact list property update
+
+    MPEngXMLParser* XMLparser = CreateXMLParserLC();
+    CPEngContactListSettings& settings = iContactList.Settings();
+    TInt err ( XMLparser->ParseContactListResultL( aResponse,
+                                                   iOperationId,
+                                                   settings.Name(),
+                                                   *iTransactionStatus ) );
+    switch ( err )
+        {
+            // parse success, same as partial success
+        case KErrNone:
+        case KPEngNwErrPartiallySuccessful:
+            {
+            MPEngXMLParser* XMLparser2 = CreateXMLParserLC();
+            NListLibTools::ParseContactListPropertiesL( aResponse,
+                                                        settings,
+                                                        *XMLparser,
+                                                        *XMLparser2 );
+
+            CleanupStack::PopAndDestroy(); // XMLparser2
+            settings.DeletePropertyL( KPEngPropertiesUpdateNeeded,
+                                      KPEngCntLstPropertyNativeCached );
+
+            // update default list settings if needed
+            NListLibTools::HarmonizeDefaultContactListSettingsL( settings, iManager );
+            break;
+            }
+
+
+        case KPEngNwErrContactListDoesNotExist:
+            {
+            // Nothing was updated
+            // Update property
+            settings.SetPropertyL( KPEngListExistsOnServer,
+                                   KPEngCntLstPropertyNativeCached,
+                                   EFalse );
+            break;
+            }
+
+
+        default:
+            {
+            break;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(); // XMLparser
+    iTransactionCompleted = ETrue;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::CancelProcessing()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::CancelProcessing()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::NewTransactionHandlersL()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::NewTransactionHandlersL(
+    RPointerArray<MPEngOutgoingTransactionHandler>&  /* aTransactionsArray*/ )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::TransactionCompleted()
+// -----------------------------------------------------------------------------
+//
+TBool CPEngContactListMngTransProperties::TransactionCompleted()
+    {
+    return iTransactionCompleted;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::TransactionResult()
+// -----------------------------------------------------------------------------
+//
+CPEngTransactionStatus* CPEngContactListMngTransProperties::TransactionResult()
+    {
+    CPEngTransactionStatus* temp = iTransactionStatus;
+    iTransactionStatus = NULL;
+    return temp;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngContactListMngTransProperties::ReleaseHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngContactListMngTransProperties::ReleaseHandler()
+    {
+    }
+
+
+//  End of File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+