iaupdate/IAD/engine/controller/inc/iaupdatecontrollerimpl.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/engine/controller/inc/iaupdatecontrollerimpl.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,341 @@
+/*
+* Copyright (c) 2009 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:   ?Description
+*
+*/
+
+
+
+#ifndef IAUPDATECONTROLLERIMPL_H
+#define IAUPDATECONTROLLERIMPL_H
+
+
+#include <e32base.h>
+#include <e32cmn.h>
+#include <ncdproviderobserver.h>
+#include <ncdclientlocalizer.h>
+#include <ncdserverreportoperationobserver.h>
+#include <catalogsengineobserver.h>
+
+
+#include "iaupdatecontroller.h"
+#include "iaupdateloaderobserver.h"
+#include "iaupdateselfupdaterobserver.h"
+#include "iaupdatetimerobserver.h"
+
+
+class MCatalogsBase;
+class MNcdProvider;
+class MNcdNode;
+class MNcdNodeContainer;
+class MNcdServerReportManager;
+class MNcdServerReportOperation;
+class CCatalogsEngine;
+class MIAUpdateNode;
+class MIAUpdateAnyNode;
+class CIAUpdateNodeContainer;
+class CIAUpdateHistory;
+class CIAUpdateLoader;
+class CIAUpdateSelfUpdaterCtrl;
+class CIAUpdateContentOperationManager;
+class CIAUpdateCacheCleaner;
+class CIAUpdateControllerFile;
+class CIAUpdateTimer;
+
+
+/**
+ *
+ */
+class CIAUpdateController : public CActive, 
+                            public MIAUpdateController, 
+                            public MIAUpdateLoaderObserver,
+                            public MIAUpdateSelfUpdaterObserver,
+                            public MCatalogsEngineObserver,
+                            public MNcdProviderObserver,
+                            public MNcdClientLocalizer,
+                            public MNcdServerReportOperationObserver,
+                            public MIAUpdateTimerObserver
+    {
+    
+public:
+
+    static CIAUpdateController* NewLC( const TUid& aFamilyUid, 
+                                       MIAUpdateControllerObserver& aObserver );
+    
+    static CIAUpdateController* NewL( const TUid& aFamilyUid, 
+                                      MIAUpdateControllerObserver& aObserver );
+    
+    
+    virtual ~CIAUpdateController();
+
+
+    const TUid& FamilyUid() const;
+
+    MNcdProvider& ProviderL();
+    
+    CIAUpdateSelfUpdaterCtrl& SelfUpdaterCtrl();
+    
+    CIAUpdateContentOperationManager& ContentOperationManager();
+     
+    
+public: // MIAUpdateController   
+    
+    /**
+     * @see MIAUpdateController::Startup
+     **/
+    virtual TInt Startup();
+    
+    /**
+     * @see MIAUpdateController::StartRefreshL
+     **/
+    virtual void StartRefreshL( TBool aAllowNetConnection );
+        
+    /**
+     * @see MIAUpdateController::CancelRefresh
+     **/
+    virtual void CancelRefresh();
+
+    /**
+     * @see MIAUpdateController::CancelReporting
+     **/
+    virtual void CancelReporting();
+    
+    /**
+     * @see MIAUpdateController::HistoryL
+     */
+    virtual MIAUpdateHistory& HistoryL();
+
+    /**
+     * @see MIAUpdateController::SetDefaultConnectionMethodL
+     */
+    virtual void SetDefaultConnectionMethodL( const TIAUpdateConnectionMethod& aMethod );
+
+    /**
+     * @see MIAUpdateController::SelfUpdateDataExists
+     */
+    virtual TBool SelfUpdateDataExists() const;
+
+    /**
+     * @see MIAUpdateController::StartPossibleSelfUpdateL
+     */ 
+    virtual TBool StartPossibleSelfUpdateL( TInt aIndex, 
+                                            TInt aTotalCount,
+                                            const RPointerArray< MIAUpdateNode >& aPendingNodes,
+                                            TBool aSilent );
+
+    /**
+     * @see MIAUpdateController::ResetSelfUpdate
+     */
+    virtual void ResetSelfUpdate();    
+
+
+    /**
+     * @see MIAUpdateController::SelfUpdateRestartInfoL
+     */
+    virtual CIAUpdateRestartInfo* SelfUpdateRestartInfo();
+
+
+    /**
+     * @see MIAUpdateController::NodeL
+     */
+    virtual MIAUpdateNode& NodeL( const CIAUpdaterIdentifier& aIdentifier );
+
+
+    /**
+     * @see MIAUpdateController::StartingUpdatesL
+     */
+    virtual void StartingUpdatesL();
+
+
+    /**
+     * @see MIAUpdateController::FinishedUpdatesL
+     */
+    virtual void FinishedUpdatesL( TBool aOperationsAllowed, TInt aMaxWaitTime );    
+
+
+public: // MIAUpdateLoaderObserver
+    
+    /**
+     * @see MIAUpdateLoaderObserver::LoadComplete
+     **/
+    virtual void LoadComplete( TInt aError );
+
+
+public: // MIAupdateSelfUpdaterObserver
+
+    /** 
+     * @see MIAupdateSelfUpdaterObserver::SelfUpdaterComplete
+     */
+    virtual void SelfUpdaterComplete( TInt aErrorCode );
+    
+                                                     
+public: // MCatalogsEngineObserver
+    
+    /**
+     * @see MCatalogsEngineObserver::CatalogsEngineShutdown
+     */
+    virtual void CatalogsEngineShutdown();
+
+    /**
+     * @see MCatalogsEngineObserver::CatalogsUpdateNotification
+     */
+    virtual void CatalogsUpdateNotification( const TDesC& aTarget,
+                                             const TDesC& aId,
+                                             const TDesC& aVersion,
+                                             const TDesC& aUri,
+                                             TBool aForce );
+
+    /**
+     * @see MCatalogsEngineObserver::CatalogsConnectionEvent
+     */
+    virtual void CatalogsConnectionEvent( TBool aConnectionActive );
+    
+
+public: // MNcdProviderObserver
+  
+    /**
+     * @see MNcdProvider::ForceExpirationInformationReceived
+     */
+    virtual void ForceExpirationInformationReceived( RCatalogsArray< MNcdNode >& aExpiredNodes );
+    
+    
+public: // MNcdClientLocalizer
+    
+    /**
+     * @see MNcdClientLocalizer::LocalizeString
+     *
+     * At the moment, this implementation always returns NULL.
+     */
+    virtual HBufC* LocalizeString( const TDesC& aLocalizationKey );
+
+
+public: // MNcdServerReportOperationObserver
+
+    /**
+     * @see MNcdServerReportOperationObserver::ReportProgress
+     */
+    virtual void ReportProgress( MNcdServerReportOperation& aOperation,
+                                 TNcdProgress aProgress );
+        
+    /**
+     * @see MNcdServerReportOperationObserver::QueryReceived
+     */
+    virtual void QueryReceived( MNcdServerReportOperation& aOperation,
+                                MNcdQuery* aQuery );
+
+    /**
+     * @see MNcdServerReportOperationObserver::OperationComplete
+     */
+    virtual void OperationComplete( MNcdServerReportOperation& aOperation,
+                                    TInt aError );
+
+
+public: // MIAUpdateTimerObserver
+
+    /** 
+     * @see MIAUpdateTimeObserver::TimerComplete
+     */
+    virtual void TimerComplete( TInt aError );
+
+
+protected: // CActive
+    
+    /**
+     * @see CActive::DoCancel
+     */
+	virtual void DoCancel();
+
+    /**
+     * @see CActive::RunL
+     */
+	virtual void RunL();
+
+    /**
+     * @see CActive::RunError
+     */
+     virtual TInt RunError( TInt aError );
+		
+	
+private:
+
+    // Prevent these if not implemented
+    CIAUpdateController( const CIAUpdateController& aObject );
+    CIAUpdateController& operator =( const CIAUpdateController& aObject );
+
+    CIAUpdateController( const TUid& aFamilyUid, MIAUpdateControllerObserver &aObserver );
+    
+    void ConstructL();
+
+    void LocalLoadL();
+    
+    void LocalContainerLoadL( MNcdNodeContainer& aContainer );
+
+    void SetupConfigurationL();
+
+    MNcdNode* NodeFromPurchaseHistoryL( const CIAUpdaterIdentifier& aIdentifier );
+
+    void CancelPausedOperationsL();
+
+
+private: // data
+
+    enum TControllerState
+        {
+        ENotRunning,
+        EStarting,
+        EIdle,
+        EInClearCache,
+        EInLoadOperation,
+        EInLocalLoadOperation
+        };
+
+    TUid iFamilyUid;
+    
+    MIAUpdateControllerObserver& iObserver;
+                
+    TControllerState iControllerState;
+
+    CCatalogsEngine* iEngine;
+    
+    MCatalogsBase* iBaseProvider;
+    MNcdProvider* iProvider;
+    MNcdServerReportManager* iServerReportManager;
+    
+    CIAUpdateSelfUpdaterCtrl* iSelfUpdaterCtrl;
+    
+    CIAUpdateLoader* iLoader;
+    
+    CIAUpdateNodeContainer* iNodeContainer;
+    
+    CIAUpdateHistory* iHistory;
+
+    CIAUpdateContentOperationManager* iContentOperationManager;
+
+    CIAUpdateCacheCleaner* iCacheCleaner;
+
+    CIAUpdateControllerFile* iCacheClearFile;
+
+    // This class does not own the contents of this array.
+    RPointerArray< MIAUpdateAnyNode > iNodes;
+    
+    MNcdServerReportOperation* iReportOperation;
+    TBool iCancellingReportOperation;
+
+    CIAUpdateTimer* iReportTimer;
+    TBool iReportTimerCompleted;
+    
+    };
+
+
+#endif  //  IAUPDATECONTROLLERIMPL_H