diff -r 000000000000 -r ba25891c3a9e iaupdate/IAD/engine/controller/inc/iaupdatecontrollerimpl.h --- /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 +#include +#include +#include +#include +#include + + +#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