PECengine/ListLibrary2/ContactListSrc/CPEngContactListDeleteTrans.cpp
branchRCL_3
changeset 17 a941bc465d9f
parent 0 094583676ce7
equal deleted inserted replaced
16:6ca72c0fe49a 17:a941bc465d9f
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Handler to delete contact list.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include "CPEngContactListDeleteTrans.h"
       
    21 
       
    22 #include "MPEngContactListTransactionManager.h"
       
    23 #include "CPEngContactListSettings.h"
       
    24 #include "CPEngContactListModBase.h"
       
    25 
       
    26 #include "PEngListLibTools.h"
       
    27 #include "MPEngXMLSerializer.h"
       
    28 #include "MPEngXMLParser.h"
       
    29 
       
    30 #include "CPEngTransactionStatus.h"
       
    31 #include "PEngWVPresenceErrors2.h"
       
    32 #include "PresenceDebugPrint.h"
       
    33 
       
    34 
       
    35 
       
    36 // ============================ MEMBER FUNCTIONS ===============================
       
    37 
       
    38 // -----------------------------------------------------------------------------
       
    39 // CPEngContactListDeleteTrans::CPEngContactListDeleteTrans()
       
    40 // -----------------------------------------------------------------------------
       
    41 //
       
    42 CPEngContactListDeleteTrans::CPEngContactListDeleteTrans(
       
    43     CPEngContactListModBase& aContactList,
       
    44     MPEngContactListTransactionManager& aSettingsManager,
       
    45     TPEngWVCspVersion& aCSPVersion,
       
    46     TInt aOperationId )
       
    47         : iContactList( aContactList ),
       
    48         iSettingsManager( aSettingsManager ),
       
    49         iCSPVersion( aCSPVersion ),
       
    50         iOperationId( aOperationId )
       
    51     {
       
    52     PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::CPEngContactListDeleteTrans() [%S]" ),
       
    53              &( iContactList.ListProperties().Name() ) );
       
    54 
       
    55     iContactList.Open();                // CSI: 65 #
       
    56     iContactList.Lock( EStorageLockLevelHigh );
       
    57     }
       
    58 
       
    59 // -----------------------------------------------------------------------------
       
    60 // CPEngContactListDeleteTrans::ConstructL()
       
    61 // -----------------------------------------------------------------------------
       
    62 //
       
    63 void CPEngContactListDeleteTrans::ConstructL()
       
    64     {
       
    65     iTransactionStatus =  CPEngTransactionStatus::NewL();
       
    66 
       
    67     if ( iContactList.Settings().Property( KPEngCntLstSubscribe,
       
    68                                            KPEngCntLstPropertyNativePermanent ) )
       
    69         {
       
    70         iTransactionState = EPEngUnSubscribeContactList;
       
    71         }
       
    72     else
       
    73         {
       
    74         iTransactionState = EPEngDeleteContactList;
       
    75         }
       
    76     }
       
    77 
       
    78 
       
    79 // -----------------------------------------------------------------------------
       
    80 // CPEngContactListDeleteTrans::NewLC()
       
    81 // -----------------------------------------------------------------------------
       
    82 //
       
    83 CPEngContactListDeleteTrans* CPEngContactListDeleteTrans::NewLC(
       
    84     CPEngContactListModBase& aContactList,
       
    85     MPEngContactListTransactionManager& aSettingsManager,
       
    86     TPEngWVCspVersion& aCSPVersion,
       
    87     TInt aOperationId )
       
    88     {
       
    89     CPEngContactListDeleteTrans* self =
       
    90         new ( ELeave ) CPEngContactListDeleteTrans(
       
    91         aContactList,
       
    92         aSettingsManager,
       
    93         aCSPVersion,
       
    94         aOperationId );
       
    95     CleanupStack::PushL( self );
       
    96     self->ConstructL( );
       
    97 
       
    98     return self;
       
    99     }
       
   100 
       
   101 
       
   102 // Destructor
       
   103 CPEngContactListDeleteTrans::~CPEngContactListDeleteTrans()
       
   104     {
       
   105     iContactList.Unlock();
       
   106     iContactList.Close();
       
   107     delete iTransactionStatus;
       
   108     }
       
   109 
       
   110 
       
   111 // ==============================================================================
       
   112 // =============Function from MPEngOutgoingTransactionHandler =================
       
   113 // ==============================================================================
       
   114 
       
   115 // -----------------------------------------------------------------------------
       
   116 // CPEngContactListDeleteTrans::RequestL()
       
   117 // -----------------------------------------------------------------------------
       
   118 //
       
   119 void CPEngContactListDeleteTrans::RequestL( TDes8& aSendBuffer )
       
   120     {
       
   121     aSendBuffer.Zero();
       
   122     MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer );
       
   123     CleanupClosePushL( *xmlSerializer );
       
   124 
       
   125     // <TransactionContent xmlns="http://www.wireless -village.org/TRC1.1">
       
   126     NListLibTools::AppendTransactionContentTagXmlL( *xmlSerializer, iCSPVersion );
       
   127 
       
   128     switch ( iTransactionState )
       
   129         {
       
   130         case EPEngUnSubscribeContactList:
       
   131             {
       
   132             PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::RequestL() unsubscribe [%S]" ),
       
   133                      &( iContactList.ListProperties().Name() ) );
       
   134 
       
   135             GetXMLUnsubscribeContactListL( *xmlSerializer );
       
   136             break;
       
   137             }
       
   138 
       
   139 
       
   140         case EPEngDeleteContactList:
       
   141             {
       
   142             PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::RequestL() delete [%S]" ),
       
   143                      &( iContactList.ListProperties().Name() ) );
       
   144 
       
   145             GetXMLDeleteContactListL( *xmlSerializer );
       
   146             break;
       
   147             }
       
   148 
       
   149 
       
   150         default:
       
   151             {
       
   152             User::Leave( KErrNotSupported );
       
   153             break;
       
   154             }
       
   155         }
       
   156 
       
   157     // end of transaction
       
   158     // </TransactionContent>
       
   159     xmlSerializer->EndTagL( KTransactionContent );
       
   160     CleanupStack::PopAndDestroy( ); // xmlSerializer
       
   161     }
       
   162 
       
   163 
       
   164 // -----------------------------------------------------------------------------
       
   165 // CPEngContactListDeleteTrans::LastRunningTransactionHandler()
       
   166 // -----------------------------------------------------------------------------
       
   167 //
       
   168 void CPEngContactListDeleteTrans::LastRunningTransactionHandler()
       
   169     {
       
   170     }
       
   171 
       
   172 
       
   173 // -----------------------------------------------------------------------------
       
   174 // CPEngContactListDeleteTrans::ProcessResponseL()
       
   175 // -----------------------------------------------------------------------------
       
   176 //
       
   177 void CPEngContactListDeleteTrans::ProcessResponseL( const TDesC8& aResponse,
       
   178                                                     TRequestStatus& /* aStatus */ )
       
   179     {
       
   180     PENG_DP( D_PENG_LIT( "CPEngContactListDeleteTrans::ProcessResponseL() [%S] state %d" ),
       
   181              &( iContactList.ListProperties().Name() ), iTransactionState );
       
   182 
       
   183     MPEngXMLParser* XMLparser = CreateXMLParserLC();
       
   184 
       
   185     // check if we have some answer from the server
       
   186     TInt err ( XMLparser->ParseContactListResultL( aResponse,
       
   187                                                    iOperationId,
       
   188                                                    iContactList.Settings().Name(),
       
   189                                                    *iTransactionStatus ) );
       
   190     // how did transaction go
       
   191     switch ( err )
       
   192         {
       
   193         case KErrNone: // transaction OK
       
   194             {
       
   195             // return, continue with transaction
       
   196             iTransactionState++; // this will go one state forward
       
   197             // if transaction is completed, do not break,
       
   198             // other switch case will do cleaning
       
   199             if ( iTransactionState != EPEngTransactionCompleted )
       
   200                 {
       
   201                 break;
       
   202                 }
       
   203             }
       
   204 
       
   205         case KPEngNwErrContactListDoesNotExist:
       
   206             {
       
   207             // We wanted to delete list anyway
       
   208             // remove contact list settings from store
       
   209             iSettingsManager.CompleteCntListDeletionL( iContactList.Settings().Name() );
       
   210             iTransactionState = EPEngTransactionCompleted;
       
   211             break;
       
   212             }
       
   213 
       
   214         default:
       
   215             {
       
   216             // some error has occured, complete transaction and return
       
   217             iTransactionState = EPEngTransactionCompleted;
       
   218             }
       
   219         }
       
   220 
       
   221 
       
   222     CleanupStack::PopAndDestroy(); // XMLparser
       
   223     }
       
   224 
       
   225 
       
   226 // -----------------------------------------------------------------------------
       
   227 // CPEngContactListDeleteTrans::CancelProcessing()
       
   228 // -----------------------------------------------------------------------------
       
   229 //
       
   230 void CPEngContactListDeleteTrans::CancelProcessing()
       
   231     {
       
   232     }
       
   233 
       
   234 
       
   235 // -----------------------------------------------------------------------------
       
   236 // CPEngContactListDeleteTrans::NewTransactionHandlersL()
       
   237 // -----------------------------------------------------------------------------
       
   238 //
       
   239 void CPEngContactListDeleteTrans::NewTransactionHandlersL(
       
   240     RPointerArray<MPEngOutgoingTransactionHandler>& /* aTransactionsArray*/ )
       
   241     {
       
   242     }
       
   243 
       
   244 
       
   245 // -----------------------------------------------------------------------------
       
   246 // CPEngContactListDeleteTrans::TransactionCompleted()
       
   247 // -----------------------------------------------------------------------------
       
   248 //
       
   249 TBool CPEngContactListDeleteTrans::TransactionCompleted()
       
   250     {
       
   251     return ( iTransactionState == EPEngTransactionCompleted );
       
   252     }
       
   253 
       
   254 
       
   255 // -----------------------------------------------------------------------------
       
   256 // CPEngContactListDeleteTrans::TransactionResult()
       
   257 // -----------------------------------------------------------------------------
       
   258 //
       
   259 CPEngTransactionStatus*  CPEngContactListDeleteTrans::TransactionResult()
       
   260     {
       
   261     CPEngTransactionStatus* temp = iTransactionStatus;
       
   262     iTransactionStatus = NULL;
       
   263     return temp;
       
   264     }
       
   265 
       
   266 
       
   267 // -----------------------------------------------------------------------------
       
   268 // CPEngContactListDeleteTrans::ReleaseHandler()
       
   269 // -----------------------------------------------------------------------------
       
   270 //
       
   271 void CPEngContactListDeleteTrans::ReleaseHandler()
       
   272     {
       
   273     iTransactionState =  EPEngTransactionCompleted;
       
   274     }
       
   275 
       
   276 
       
   277 // -----------------------------------------------------------------------------
       
   278 // CPEngContactListDeleteTrans::GetXMLUnsubscribeContactListL()
       
   279 // -----------------------------------------------------------------------------
       
   280 //
       
   281 void CPEngContactListDeleteTrans::GetXMLUnsubscribeContactListL(
       
   282     MPEngXMLSerializer& aXmlSerializer )
       
   283     {
       
   284     // <UnsubscribePresence-Request>
       
   285     aXmlSerializer.StartTagL( KUnsubscribePresence );
       
   286 
       
   287     NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() );
       
   288 
       
   289     //  </UnsubscribePresence-Request>
       
   290     aXmlSerializer.EndTagL( KUnsubscribePresence );
       
   291     }
       
   292 
       
   293 
       
   294 // -----------------------------------------------------------------------------
       
   295 // CPEngContactListDeleteTrans::GetXMLDeleteContactListL()
       
   296 // -----------------------------------------------------------------------------
       
   297 //
       
   298 void CPEngContactListDeleteTrans::GetXMLDeleteContactListL(
       
   299     MPEngXMLSerializer& aXmlSerializer )
       
   300     {
       
   301     // <DeleteList-Request>
       
   302     aXmlSerializer.StartTagL( KDeleteList );
       
   303 
       
   304     NListLibTools::AppendContactListNameXmlL( aXmlSerializer, iContactList.Settings() );
       
   305 
       
   306     // </DeleteList-Request>
       
   307     aXmlSerializer.EndTagL( KDeleteList );
       
   308     }
       
   309 
       
   310 //  End of File
       
   311 
       
   312 
       
   313 
       
   314 
       
   315 
       
   316 
       
   317 
       
   318 
       
   319 
       
   320 
       
   321 
       
   322 
       
   323 
       
   324 
       
   325 
       
   326 
       
   327 
       
   328 
       
   329 
       
   330 
       
   331 
       
   332 
       
   333 
       
   334 
       
   335 
       
   336 
       
   337 
       
   338 
       
   339 
       
   340 
       
   341 
       
   342 
       
   343 
       
   344 
       
   345 
       
   346 
       
   347 
       
   348 
       
   349 
       
   350 
       
   351 
       
   352