homesync/contentmanager/cmserver/cmstoremanager/src/cmsmmain.cpp
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homesync/contentmanager/cmserver/cmstoremanager/src/cmsmmain.cpp	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,778 @@
+/*
+* Copyright (c) 2008 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:  Main class in Store manager component
+*
+*/
+
+
+#include <e32property.h>
+#include "upnpavdevice.h"
+#include "upnpavcontroller.h"
+#include "upnpavdevicelist.h"
+#include <utf.h>
+#include "cmserviceobserver.h"
+#include "cmsmfilemngr.h"
+#include "cmsmtransferengine.h"
+#include "cmstorelistitem.h"
+#include "cmdmmain.h"
+#include "cmmmmain.h"
+#include "cmsmmain.h"
+#include "msdebug.h"
+
+// One file transfered
+const TInt KCmOneFile = 1;
+const TInt KCmSmClfRefreshInterval = 15000000;
+const TInt KCmSmOneSecond = 1000000;
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::NewL
+// ---------------------------------------------------------------------------
+// 
+CCmSmMain* CCmSmMain::NewL( 
+    MCmServiceObserver* aObserver, CMdESession& aSession,
+    CCmDmMain* aDBManager, CCmMmMain* aMemManager )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::NewL() start"));
+    CCmSmMain* self = CCmSmMain::NewLC( aObserver, aSession,
+        aDBManager, aMemManager );
+    CleanupStack::Pop( self );
+    LOG(_L("[STORE MNGR]\t CCmSmMain::NewL() end")); 
+    return self;         
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::NewLC
+// ---------------------------------------------------------------------------
+//  
+CCmSmMain* CCmSmMain::NewLC(
+    MCmServiceObserver* aObserver, CMdESession& aSession, 
+    CCmDmMain* aDBManager, CCmMmMain* aMemManager )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::NewLC() start"));    
+    CCmSmMain* self = new ( ELeave ) CCmSmMain( aObserver, aDBManager, 
+        aMemManager );
+    CleanupStack::PushL( self );
+    self->ConstructL( aSession, aDBManager );
+    LOG(_L("[STORE MNGR]\t CCmSmMain::NewLC() end")); 
+    return self;  
+    }    
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::~CCmSmMain
+// ---------------------------------------------------------------------------
+//
+CCmSmMain::~CCmSmMain()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::~CCmSmMain() start"));
+    Cancel();
+    delete iCmSmTransferEngine;
+    delete iCmSmFileMngr;
+    DeleteDevices();
+    iItems.ResetAndDestroy();
+    iItems.Close();
+    iItemIds.Reset();
+    iItemIds.Close();
+    delete iPeriodic;            
+    LOG(_L("[STORE MNGR]\t CCmSmMain::~CCmSmMain() end"));     
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::CCmSmMain
+// ---------------------------------------------------------------------------
+//    
+CCmSmMain::CCmSmMain( MCmServiceObserver* aObserver, CCmDmMain* aDBManager,
+    CCmMmMain* aMemManager  ) 
+    : CActive( EPriorityStandard ), iObserver( aObserver ), 
+        iMemManager( aMemManager ), iDbManager( aDBManager )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::CCmSmMain"));
+    
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::ConstructL( CMdESession& aSession, CCmDmMain* aDBManager )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::ConstructL() start"));
+    iService = ECmServiceNone;
+    iCmSmTransferEngine = 
+        CCmSmTransferEngine::NewL( this, aDBManager, iItems, iItemIds );
+    iCmSmFileMngr = 
+        CCmSmFileMngr::NewL( this, aSession, aDBManager, iItems );
+    LOG(_L("[STORE MNGR]\t CCmSmMain::ConstructL() end"));
+    iProgressInfo.iService = ECmServiceStore;
+    }     
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::StartStoreL
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::StartStoreL()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::StartStoreL()"));
+    if( iService == ECmServiceAutomStoreListProcess )
+        {
+        iCmSmFileMngr->CancelOperation();
+        }
+    iCancelOnGoing = EFalse;
+    iService = ECmServiceStore;
+    iMemManager->SetObserver( *this );
+    iDeviceIndex = KErrNone;
+    iProgressInfo.iService = ECmServiceStore;
+    iProgressInfo.iProcessedItems = KErrNone;
+    iProgressInfo.iTotalItems = iCmSmFileMngr->StoreItemCount() + 
+        iCmSmFileMngr->FillItemCount();
+    SendProgressInfo( KErrNone );    
+    ChangeState( ECmSmGetMediaServers );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::CancelOperation
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::CancelOperation()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::CancelOperation()"));    
+    // If some files need to be removed or shrinked do it now
+    iCancelOnGoing = ETrue;
+    iItems.ResetAndDestroy();
+    iItems.Close();
+    iItemIds.Reset();
+    iItemIds.Close();
+    iCmSmFileMngr->CancelOperation();    
+    iCmSmTransferEngine->CancelOperation();              
+    iObserver->ServiceExecuted( iService, KErrCancel );
+    // Service finished. Reset progress info.
+    iProgressInfo.iService = ECmServiceNone;
+    iService = ECmServiceNone;
+    SendProgressInfo( KErrNone );    
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::PreProcessLists
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::PreProcessLists()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::PreProcessLists"));
+    
+    iCancelOnGoing = EFalse;
+    if( iService == ECmServiceAutomStoreListProcess )
+        {
+        iCmSmFileMngr->CancelOperation();
+        iCmSmFileMngr->SetProcessingStatus( ECmSmProcessingFilesStarted );
+        }    
+    else
+        {
+        ChangeState( ECmSmStartFileProcessing );
+        }
+    
+    iService = ECmServicePreProcessingStore;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::GetColItemsL
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::GetColItemsL( TCmMediaType aMedia, 
+    CDesCArray& aArray )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::GetColItemsL"));
+    
+    iCancelOnGoing = EFalse;
+    if( iService == ECmServiceAutomStoreListProcess )
+        {
+        iCmSmFileMngr->CancelOperation();
+        }    
+    iService = ECmServiceGetStoreFields;
+    iCmSmFileMngr->ProcessAlbumList( aMedia, aArray );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::GetColItemsL
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::GetColItemsL( TCmMediaType /*aMedia*/, 
+    CCmSqlPropertyContainer& /*aPropertys*/ )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::GetColItemsL"));
+    
+    iService = ECmServiceGetFillFields;
+    ChangeState( ECmSmFinishing );
+    }
+    
+// ---------------------------------------------------------------------------
+// CCmSmMain::SetAvController
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::SetAvController( MUPnPAVController* aAVController )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::SetAvController"));
+    
+    iCmSmTransferEngine->SetAvController(aAVController);
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::FileProcessingStatus
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::FileProcessingStatus( TCmSmFileProcessingStatus aStatus )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::FileProcessingStatus()"));
+    
+    CancelMdETimer();
+    switch(aStatus)
+        {
+        case ECmSmProcessingFilesStarted:
+            {
+            if( iService == ECmServicePreProcessingStore )
+                {
+                ChangeState( ECmSmStartFileProcessing );
+                }
+            break;
+            }
+        case ECmSmProcessingFilesReady:
+            {
+            break;
+            }
+        case ECmSmProcessingCanceled:
+            {           
+            break;
+            }
+        case ECmSmNoStoreRulesSelected:
+            {
+            if( iService == ECmServiceAutomStoreListProcess )
+                {
+                // Do not complete message
+                }
+            else
+                {
+                ChangeState( ECmSmFinishing );
+                }                                        
+            break;
+            }
+        case ECmSmPreProcessingReady:
+            {
+            if( iService == ECmServiceAutomStoreListProcess )
+                {
+                // Do not complete message
+                }
+            else
+                {
+                iObserver->ServiceExecuted( iService, KErrNone );
+                }
+            iService = ECmServiceNone;                    
+            break;
+            }
+        case ECmSmRefreshError:
+            {
+            if( iService == ECmServiceAutomStoreListProcess )
+                {
+                // Do not complete message
+                }
+            else
+                {
+                iObserver->ServiceExecuted( iService, 
+                    KErrGeneral );
+                }
+            iService = ECmServiceNone;                                
+            break;
+            }
+        case ECmSmAlbumProcessingReady:
+            {
+            if( iService == ECmServiceAutomStoreListProcess )
+                {
+                // Do not complete message
+                }
+            else
+                {
+                iObserver->ServiceExecuted( iService, KErrNone );
+                }
+            iService = ECmServiceNone;                                  
+            break;
+            }
+        case ECmSmContentChanged:
+            {
+            // If timer start up fails => wait next content change event
+            TRAPD( err, StartMdETimerL() );
+            if( err )
+                {
+                TRACE(Print(_L("[STORE MNGR]\t StartMdETimerL err = %d"), 
+                    err ));
+                }           
+            break;
+            }
+        default:
+            {
+            break;
+            }    
+        }
+    
+    }
+    
+// ---------------------------------------------------------------------------
+// CCmSmMain::TransferStatus
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::TransferStatus( TCmSmTransferStatus aStatus )    
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::TransferStatus()"));
+    switch( aStatus )
+        {
+        case ECmSmTransferCompleted:
+            {
+            TTime storeFinished;
+            storeFinished.HomeTime();
+            TTimeIntervalMicroSeconds usecsFrom = 
+                storeFinished.MicroSecondsFrom(iStoreStarted);
+            TInt64 timeinsecs((TInt64)( usecsFrom.Int64() / KCmSmOneSecond ));
+            TRACE(Print(_L("[STORE MNGR]\t Store took = %ld seconds"), 
+                timeinsecs ));                        
+                
+            iCmSmFileMngr->UpdateTransferHistoryData( timeinsecs, 
+                iCmSmTransferEngine->DataAmount(), (TUint8)iId );            
+            ChangeState( ECmSmManageFiles );
+            break;
+            }
+        case ECmSmAborted:
+            {
+            ChangeState( ECmSmStartCopying );            
+            break;
+            }
+        case ECmSmTransferCanceled:
+            {           
+            break;
+            }
+        case ECmSmFileTransferred:
+            {
+            SendProgressInfo( KCmOneFile );
+            break;
+            }
+        case ECmSmFileTransferFailed:
+            {
+            // File transferring failed => skip file
+            SendProgressInfo( KCmOneFile );
+            break;
+            }
+        case ECmSmWlanLost:
+            {
+            if( iDevices )
+                {
+                iDevices->ResetAndDestroy();
+                delete iDevices;
+                iDevices = NULL;                
+                }
+            iItemIds.Reset();
+            iItemIds.Close();
+            iCmSmFileMngr->ResetArrays();    
+            iObserver->ServiceExecuted( iService, KErrGeneral );
+            iProgressInfo.iService = ECmServiceNone;
+            iService = ECmServiceNone;
+            SendProgressInfo( KErrNone );
+            break;
+            }
+        case ECmSmTransferContinued:
+            {
+            ChangeState( ECmSmContinueCopying ); 
+            break;
+            }
+        default:
+            {
+            break;
+            }                
+        }
+    }
+
+#ifdef _DEBUG 
+// ---------------------------------------------------------------------------
+// CCmSmMain::LogServers
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::LogServers()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::LogServers"));
+    
+    for( TInt i = 0; i < iDevices->Count(); i++ )
+        {
+        TBuf<KMaxName>temp;
+        if((*iDevices)[i])
+            {
+            if( &(*iDevices)[i]->Uuid() )
+                {
+                if( (*iDevices)[i]->Uuid().Length() < KMaxName )
+                    {
+                    temp.Copy( (*iDevices)[i]->Uuid() );
+                    TRACE(Print(_L("[STORE MNGR]\t FOUND DEVICE %d = %S"), 
+                        i+1, &temp ));        
+                    }
+                temp.Zero();                
+                }            
+            }        
+        }            
+    }
+#endif
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::SendProgressInfo
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::SendProgressInfo( TInt aProgress ) 
+    {
+    TRACE( Print( _L(
+        "[STORE MNGR]\t CCmSmMain::SendProgressInfo( %d )"), 
+        aProgress));
+    
+    iProgressInfo.iProcessedItems += aProgress;
+    TRAPD( error, iCmSmFileMngr->GetStoreFileCountNoDuplicatesL( 
+        iProgressInfo.iItemsToTransferPerService ) );
+    if ( error ) 
+        {
+        TRACE( Print( _L( "[STORE MNGR]\t GetStoreFileCountNoDuplicatesL \
+            failed with error %d"), error ) );
+        }
+    TCmProgressInfoPckg progressPckg( iProgressInfo );
+    
+    TRACE( Print( _L(
+        "[STORE MNGR]\t processed: %d total %d"), 
+        iProgressInfo.iProcessedItems, iProgressInfo.iTotalItems));
+    
+    TInt err = RProperty::Set( KCmPropertyCat, KCmProperty, progressPckg );
+    
+    TRACE( Print( _L("[STORE MNGR]\t RProperty::Set returned %d"), err));
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::ManageFileL
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::ManageFileL()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::ManageFileL"));
+    
+    if( KErrNone < iCmSmTransferEngine->FilesToBeRemoved().Count() )
+        {
+        iMemManager->DeleteFilesL( iCmSmTransferEngine->FilesToBeRemoved() );
+        }
+    else if ( KErrNone < iCmSmTransferEngine->FilesToBeShrinked().Count() )
+        {
+        TRAPD( err, iMemManager->ShrinkImagesL( 
+            iCmSmTransferEngine->FilesToBeShrinked() ) );
+        if( err )
+            {
+            ChangeState( ECmSmStartCopying );
+            }
+        }
+    else if( iCancelOnGoing )
+        {
+        ChangeState( ECmSmFinishCanceling );      
+        }
+    else
+        {
+        // Store to next server...        
+        ChangeState( ECmSmStartCopying );  
+        }    
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::DeleteCompleteL
+// ---------------------------------------------------------------------------
+//
+void CCmSmMain::DeleteCompleteL( TInt /*aErr*/ )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteCompleteL"));
+    
+    iCmSmTransferEngine->DeleteToBeRemoved();
+    ManageFileL();
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::ShrinkCompleteL
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::ShrinkCompleteL( TInt /*aErr*/ )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::ShrinkCompleteL"));
+    
+    iCmSmTransferEngine->DeleteToBeShrinked();
+    ManageFileL();    
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::ChangeState
+// ---------------------------------------------------------------------------
+// 
+void CCmSmMain::ChangeState( 
+    TCmSmMainSequencer aStatus )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::ChangeState"));
+    
+    __ASSERT_DEBUG(!IsActive(),\
+        User::Panic( KCmSmManager, KErrInUse ));          
+    SetActive();
+    TRequestStatus* pStatus = &iStatus;
+    User::RequestComplete( pStatus, aStatus );
+    }
+    
+// ---------------------------------------------------------------------------
+// CCmSmMain::StartMdETimerL
+// ---------------------------------------------------------------------------
+// 
+void CCmSmMain::StartMdETimerL()
+    {
+    LOG( _L("[STORE MNGR] CCmSmMain::StartMdETimerL start"));
+    
+    if( iPeriodic )
+        {
+        iPeriodic->Cancel();
+        }
+    else
+        {
+        iPeriodic = CPeriodic::NewL( CActive::EPriorityIdle );
+        }
+    iPeriodic->Start( KCmSmClfRefreshInterval, KCmSmClfRefreshInterval,
+            TCallBack( CheckItems, this ) );
+    LOG( _L("[STORE MNGR] CCmSmMain::StartMdETimerL end"));                    
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::CancelMdETimer
+// ---------------------------------------------------------------------------
+//     
+void CCmSmMain::CancelMdETimer()
+    {
+    LOG( _L("[STORE MNGR] CCmSmMain::CancelMdETimer start"));
+    
+    if( iPeriodic )
+        {
+        iPeriodic->Cancel();
+        }
+    LOG( _L("[STORE MNGR] CCmSmMain::CancelMdETimer end"));        
+    } 
+    
+// -----------------------------------------------------------------------------
+// CCmSmMain::CheckItems
+// -----------------------------------------------------------------------------
+//
+TInt CCmSmMain::CheckItems( TAny* aPtr )
+    {
+    LOG( _L("[STORE MNGR] CCmSmMain::CheckItems"));
+    
+    return ( (CCmSmMain*)aPtr)->CheckItemsChanged();
+    }
+    
+// -----------------------------------------------------------------------------
+// CCmSmMain::CheckItemsChanged
+// -----------------------------------------------------------------------------
+//
+TInt CCmSmMain::CheckItemsChanged( )
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::CheckItemsChanged"));
+    
+    TInt restart( 1 );
+    if( iService == ECmServiceNone )
+        {
+        LOG( _L("[STORE MNGR] Starting autom. store list process..."));
+        iService = ECmServiceAutomStoreListProcess;
+        iCmSmFileMngr->StartProcessing();
+        }
+    else
+        {
+        LOG( _L("[STORE MNGR] Store manager busy wait another x mins..."));
+        restart = 0;
+        }                        
+    return restart;
+    }
+        
+// ---------------------------------------------------------------------------
+// CCmSmMain::DeleteDevices
+// ---------------------------------------------------------------------------
+// 
+void CCmSmMain::DeleteDevices()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices"));
+    
+    if ( iDevices )
+        {
+        iDevices->ResetAndDestroy();
+        delete iDevices;
+        iDevices = NULL;
+        }    
+    }
+    
+// ---------------------------------------------------------------------------
+// CCmSmMain::RunL
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::RunL()
+    {
+    TRACE(Print(_L("[STORE MNGR]\t CCmSmMain::RunL status = %d"),
+                iStatus.Int() ));
+                
+    switch( iStatus.Int() )
+        {
+        case ECmSmGetMediaServers:
+            {
+            DeleteDevices();            
+            TRAPD( err, iCmSmTransferEngine->GetMediaServersL( iDevices ) );
+            TRACE(Print(_L("[STORE MNGR]\t GetMediaServersL err = %d"), 
+                err ));            
+            if( err || 0 == iDevices->Count() )
+                {
+                iObserver->ServiceExecuted( iService, KErrNotFound );
+                iService = ECmServiceNone;
+                }
+            else
+                {
+#ifdef _DEBUG            
+                LogServers();
+#endif        
+                iDeviceIndex = 0;
+                // Load store list into memory
+                iCmSmFileMngr->LoadStoreFileListL();
+                iCmSmTransferEngine->ResetFileArrays();    
+                ChangeState( ECmSmStartCopying );                 
+                }                           
+            break;
+            }
+        case ECmSmStartFileProcessing:
+            { 
+            if( iService == ECmServicePreProcessingStore )
+                {
+                iCmSmFileMngr->StartProcessing();
+                }
+            break;
+            }
+        case ECmSmStartCopying:
+            {
+            LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices \
+                    start file copy"));
+
+            iStoreStarted.HomeTime();    
+            if( iDeviceIndex < iDevices->Count())
+                {                    
+                iCmSmFileMngr->GetItemsL( iItemIds, 
+                    (*iDevices)[iDeviceIndex]->Uuid(), iId );
+                if( KErrNone < iItemIds.Count() )
+                    {
+                    LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices \
+                    files to be copied"));
+                    iCmSmTransferEngine->CopyFilesL( (TUint8)iId, 
+                        (*iDevices)[iDeviceIndex] );
+                    }
+                else
+                    {
+                    // Jump to next device
+                    LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices \
+                    undefined mediaserver - no items"));
+                    ChangeState( ECmSmStartCopying );
+                    }    
+                iDeviceIndex++;
+                }
+            else
+                {
+                iCmSmFileMngr->DeleteItems(
+                    iCmSmTransferEngine->ToBeDeleted() );
+                iCmSmFileMngr->UpdateStoreFileListL();
+                iDbManager->SetProgressInfo( iProgressInfo.iProcessedItems, 
+                    iProgressInfo.iTotalItems );
+                DeleteDevices();
+                iItemIds.Reset();
+                iItemIds.Close();
+                iCmSmFileMngr->ResetArrays();    
+                iObserver->ServiceExecuted( iService, KErrNone );
+                iService = ECmServiceNone;
+                }    
+            break;
+            }
+        case ECmSmContinueCopying:
+            {
+            iCmSmTransferEngine->ContinueCopyFilesL();
+            break;
+            }
+        case ECmSmFinishing:
+            {
+            LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices no \
+            rules selected"));
+            iObserver->ServiceExecuted( iService, 
+                KErrNone );
+            iService = ECmServiceNone;                            
+            break;
+            }
+        case ECmSmManageFiles:
+            {
+            ManageFileL();
+            break;
+            }
+        case ECmSmFinishCanceling:
+            {
+            iCancelOnGoing = EFalse;
+            // Before canceling update content of the db    
+            if( KErrNone < iItems.Count() )
+                {
+                iCmSmFileMngr->DeleteItems( 
+                    iCmSmTransferEngine->ToBeDeleted() );
+                iCmSmFileMngr->UpdateStoreFileListL();        
+                }            
+            if( IsActive() )
+                {
+                Cancel();
+                }           
+            break;
+            }
+        default:
+            {
+            LOG(_L("[STORE MNGR]\t CCmSmMain::DeleteDevices \
+            no defined status"));
+            break;
+            }    
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// CCmSmMain::Close
+// ---------------------------------------------------------------------------
+//      
+void CCmSmMain::Close()
+    {
+    LOG(_L("[STORE MNGR]\t CCmSmMain::Close"));
+    
+    delete this;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::DoCancel
+// ---------------------------------------------------------------------------
+//    
+void CCmSmMain::DoCancel()
+    {
+    TRACE(Print(_L("[STORE MNGR]\t CCmSmMain::DoCancel()")));
+    }
+
+// ---------------------------------------------------------------------------
+// CCmSmMain::RunError
+// ---------------------------------------------------------------------------
+//   
+TInt CCmSmMain::RunError( TInt aError )
+    {
+    TRACE(Print(_L("[STORE MNGR]\t RunError aError = %d"), aError ));
+    return aError;
+    }
+    
+// End of file
+
+
+