homesync/contentmanager/cmserver/cmstoremanager/inc/cmsmmain.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homesync/contentmanager/cmserver/cmstoremanager/inc/cmsmmain.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,394 @@
+/*
+* 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 the Store manager component
+*
+*/
+
+
+#ifndef C_CMSMMAIN_H
+#define C_CMSMMAIN_H
+
+#include <e32base.h>
+#include "cmsmfileprocessingobserver.h"
+#include "cmsmtransferobserver.h"
+#include "cmmmobserver.h"
+#include "cmcommon.h"
+#include "cmstoremanager.h"
+   
+// Forward declarations
+class MUPnPAVController;
+class MCmServiceObserver;
+class CCmSmTransferEngine;
+class CCmSmFileMngr;
+class CCmDmMain;
+class CCmStoreListItem;
+class CCmSqlPropertyContainer;
+class CCmMmMain;
+class CUpnpAVDeviceList;
+
+
+/**
+ *  CCmSmMain class definition
+ *
+ *  @lib cmstoremanager.lib
+ *
+ *  @since S60 v5.1
+ */    
+class CCmSmMain : public CActive,
+                  public MCmSmManager, 
+                  public MCmSmFileProcessingObserver,
+                  public MCmSmTransferObserver,
+                  public MCmMmObserver
+    {
+        
+public:
+
+    /**
+     * Two-phased constructor.
+     * Creates new CCmSmMain class and opens connection to database.
+     *
+     * @since S60 5.1
+     * @param aObserver, observer pointer
+     * @param aSession, Mde session
+     * @param aDBManager, database manager
+     * @param aMemManager, memory manager
+     * @return  pointer to CCmSmMain class
+     */
+    static CCmSmMain* NewL( 
+        MCmServiceObserver* aObserver, CMdESession& aSession, 
+        CCmDmMain* aDBManager, CCmMmMain* aMemManager );
+    
+    /**
+     * Two-phased constructor.
+     * Creates new CCmSmMain class and opens connection to database and 
+     * leaves the instance in the cleanup stack.
+     *
+     * @since S60 5.1
+     * @param aObserver, observer pointer
+     * @param aSession, Mde session
+     * @param aDBManager, database manager
+     * @param aMemManager, memory manager
+     * @return  pointer to CCmSmMain class
+     */
+    static CCmSmMain* NewLC(
+        MCmServiceObserver* aObserver, CMdESession& aSession, 
+        CCmDmMain* aDBManager, CCmMmMain* aMemManager );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCmSmMain();
+
+public: 
+
+    /**
+     * Starts store service
+     *
+     * @since S60 5.1
+     * @param None
+     * @return  None
+     */    
+    void StartStoreL();
+
+    /**
+     * Cancels store service
+     *
+     * @since S60 5.1
+     * @param None
+     * @return  None
+     */        
+    void CancelOperation();
+
+    /**
+     * Starts store list processing
+     *
+     * @since S60 5.1     
+     * @param None
+     * @return  None
+     */        
+    void PreProcessLists();
+
+    /**
+     * Provides album list
+     *
+     * @since S60 5.1
+     * @param aMedia, media type
+     * @param aArray, list of values
+     * @return  None
+     */
+    void GetColItemsL( TCmMediaType aMedia, 
+        CDesCArray& aArray );
+        
+    /**
+     * Provides metadata column item list
+     *
+     * @since S60 5.1
+     * @param aMedia, media type
+     * @param aPropertys, list of values
+     * @return  None
+     */
+    void GetColItemsL( TCmMediaType aMedia, 
+        CCmSqlPropertyContainer& aPropertys );        
+    
+    /**
+     * Sets av controller
+     *
+     * @since S60 5.1     
+     * @param aAVController, av controller pointer
+     * @return  None
+     */        
+    void SetAvController( MUPnPAVController* aAVController );    
+    
+// From base class MCmSmManager
+    
+    /**
+     * From MCmSmManager
+     * See base class definition
+     */    
+    void Close();    
+    
+// From base class MCmSmFileProcessingObserver
+
+    /**
+     * From MCmSmFileProcessingObserver
+     * See base class definition
+     */
+    void FileProcessingStatus( TCmSmFileProcessingStatus aStatus );
+    
+// From base class MCmSmTransferObserver
+
+    /**
+     * From MCmSmTransferObserver
+     * See base class definition
+     */
+    void TransferStatus( TCmSmTransferStatus aStatus );        
+
+// From base class MCmMmObserver
+
+    /**
+     * From MCmMmObserver
+     * See base class definition
+     */     
+    void DeleteCompleteL( TInt aErr );
+
+    /**
+     * From MCmMmObserver
+     * See base class definition
+     */     
+    void ShrinkCompleteL( TInt aErr );
+
+protected:
+
+// From base class CActive
+
+    /**
+     * From CActive
+     * See base class definition
+     */  
+    void RunL();
+
+    /**
+     * From CActive
+     * See base class definition
+     */ 
+    void DoCancel();
+
+    /**
+     * From CActive
+     * See base class definition
+     */     
+    TInt RunError( TInt aError );    
+                
+private:
+
+    /**
+     * Managing files after storing
+     *
+     * @since S60 5.1
+     * @param None
+     * @return  None
+     */    
+    void ManageFileL();    
+
+#ifdef _DEBUG        
+    /**
+     * Logs server Uuids
+     *
+     * @since S60 5.1
+     * @param None
+     * @return  None
+     */    
+    void LogServers();    
+#endif    
+  
+    /**
+     * Publish progress info
+     *
+     * @since S60 5.1
+     * @param aProgress
+     * @return  None
+     */        
+    void SendProgressInfo( TInt aProgress );
+    
+    /**
+     * Changes state
+     *
+     * @since S60 5.1
+     * @param aStatus, defined id for the completing 
+     * @return None
+     */     
+    void ChangeState( TCmSmMainSequencer aStatus );
+    
+    /**
+     * Starts clf refresh timer
+     *
+     * @since S60 5.1
+     * @param None
+     * @return None
+     */  
+    void StartMdETimerL();
+
+    /**
+     * Cancels mde refresh timer
+     *
+     * @since S60 5.1
+     * @param None
+     * @return None
+     */     
+    void CancelMdETimer();
+
+    /**
+     * Call back for clf refresh timer
+     *
+     * @since S60 5.1
+     * @param aPtr, this
+     * @return None
+     */ 
+    static TInt CheckItems( TAny* aPtr );
+    
+    /**
+     * Starts clf refresh if no services ongoing
+     *
+     * @since S60 5.1
+     * @param None
+     * @return KErrNone
+     */     
+    TInt CheckItemsChanged( );
+
+    /**
+     * Delete devices
+     *
+     * @since S60 5.1
+     * @param None
+     * @return None
+     */    
+    void DeleteDevices();
+    
+    /**
+     * Performs the first phase of two phase construction.
+     *
+     * @since S60 5.1
+     * @param aObserver, service observer
+     * @param aDBManager, database manager
+     * @param aMemManager, memory manager
+     */
+    CCmSmMain( MCmServiceObserver* aObserver, CCmDmMain* aDBManager, 
+        CCmMmMain* aMemManager );
+
+    /**
+     * Performs the second phase construction.
+     */
+    void ConstructL( CMdESession& aSession, CCmDmMain* aDBManager );
+    
+
+private:
+    
+    /**
+     * Service observer
+     */ 
+    MCmServiceObserver* iObserver;                  // not owned
+    
+    /**
+     * Database manager
+     */
+    CCmMmMain* iMemManager;                         // not owned
+        
+    /**
+     * Memory manager
+     */
+    CCmDmMain* iDbManager;                          // not owned
+    
+    /**
+     * Upnp operation manager
+     */
+    CCmSmTransferEngine* iCmSmTransferEngine;       // owned
+    
+    /**
+     * File manager
+     */
+    CCmSmFileMngr* iCmSmFileMngr;                   // owned
+    
+    /**
+     * Checks if clf state has changed
+     */
+    CPeriodic* iPeriodic;                           // owned
+    
+    /**
+     * Array of found devices
+     */
+    CUpnpAVDeviceList* iDevices;                    // owned
+    
+    /**
+     * Fill progress info
+     */
+    TCmProgressInfo iProgressInfo;
+    
+    /**
+     * Logged storing time values
+     */
+    TTime iStoreStarted;
+    
+    /**
+     * Index to device array
+     */
+    TInt iDeviceIndex;
+    
+    /**
+     * List of store file items
+     */
+    RPointerArray<CCmStoreListItem> iItems;         // owned
+    
+    /**
+     * List of store item ids
+     */
+    RArray<TInt>iItemIds;                           // owned
+    
+    /**
+     * Id of the current mediaserver 
+     */
+    TInt64 iId;
+    
+    /**
+     * Service
+     */
+    TCmService iService;
+    
+    /**
+     * Flag defining if cancel is on
+     */
+    TBool iCancelOnGoing;
+    
+    };
+
+#endif //  C_CMSMMAIN_H