williamr@2: /* williamr@2: * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Supports registration of UI Lib modules. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef CDOWNLOADMGRUILIBREGISTRY_H williamr@2: #define CDOWNLOADMGRUILIBREGISTRY_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CDownloadMgrUiUserInteractions; williamr@2: class CDownloadMgrUiDownloadsList; williamr@2: class RHttpDownloadMgr; williamr@2: class RHttpDownload; williamr@2: class CUiLibRegistryExtension; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * This abstarct class represents an accessor for the resources of the UI Lib Registry. williamr@2: */ williamr@2: NONSHARABLE_CLASS( MDownloadMgrUiLibRegModel ) williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Third UID of the Client App, which installed UI Lib. williamr@2: * This is the UID with which RHttpDownloadMgr was connected. williamr@2: */ williamr@2: virtual TUid ClientAppUid() const = 0; williamr@2: williamr@2: /** williamr@2: * Is Downloads List installed? williamr@2: */ williamr@2: virtual TBool DownloadsListInstalled() const = 0; williamr@2: williamr@2: /** williamr@2: * Reference to the Downloads List. williamr@2: */ williamr@2: virtual CDownloadMgrUiDownloadsList& DownloadsList() const = 0; williamr@2: williamr@2: /** williamr@2: * Is User Interactions installed? williamr@2: */ williamr@2: virtual TBool UserInteractionsInstalled() const = 0; williamr@2: williamr@2: /** williamr@2: * Reference to the User Interactions. williamr@2: */ williamr@2: virtual CDownloadMgrUiUserInteractions& UserInteractions() const = 0; williamr@2: williamr@2: /** williamr@2: * Reference to the observed DMgr session. williamr@2: */ williamr@2: virtual RHttpDownloadMgr& DownloadMgr() const = 0; williamr@2: williamr@2: /** williamr@2: * All download in Download Manager session. williamr@2: */ williamr@2: virtual TInt DownloadCount() const = 0; williamr@2: williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Supports registration of a User Interactions and a Downloads List component. williamr@2: */ williamr@2: NONSHARABLE_CLASS( CDownloadMgrUiLibRegistry ) : public CBase, williamr@2: public MDownloadMgrUiLibRegModel williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * @param aDownloadMgr The initial Download Manager session williamr@2: */ williamr@2: IMPORT_C static CDownloadMgrUiLibRegistry* NewL( RHttpDownloadMgr& aDownloadMgr ); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CDownloadMgrUiLibRegistry(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: // ******* Register User Interactions and Downloads List williamr@2: williamr@2: /** williamr@2: * Register a User Interactions. williamr@2: * The created component will be owned by the Registry. williamr@2: * @return Reference to the constructed object. williamr@2: */ williamr@2: IMPORT_C CDownloadMgrUiUserInteractions& RegisterUserInteractionsL(); williamr@2: williamr@2: /** williamr@2: * Register a Downloads List. williamr@2: * The created component will be owned by the Registry. williamr@2: * @return Reference to the constructed object. williamr@2: */ williamr@2: IMPORT_C CDownloadMgrUiDownloadsList& RegisterDownloadsListL(); williamr@2: williamr@2: public: // Functions from MDownloadMgrUiLibRegModel williamr@2: williamr@2: virtual TUid ClientAppUid() const; williamr@2: virtual TBool DownloadsListInstalled() const; williamr@2: virtual CDownloadMgrUiDownloadsList& DownloadsList() const; williamr@2: virtual TBool UserInteractionsInstalled() const; williamr@2: virtual CDownloadMgrUiUserInteractions& UserInteractions() const; williamr@2: virtual RHttpDownloadMgr& DownloadMgr() const; williamr@2: virtual TInt DownloadCount() const; williamr@2: williamr@2: private: // Constructors williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: CDownloadMgrUiLibRegistry( RHttpDownloadMgr& aDownloadMgr ); williamr@2: williamr@2: /** williamr@2: * By default Symbian 2nd phase constructor is private. williamr@2: */ williamr@2: void ConstructL(); williamr@2: williamr@2: private: // New functions williamr@2: williamr@2: /** williamr@2: * Set registered UI components as observers of iDownloadMgr. williamr@2: */ williamr@2: void SetUiComponentsAsObserversL(); williamr@2: williamr@2: /** williamr@2: * Remove registered UI components as observers from iDownloadMgr. williamr@2: */ williamr@2: void RemoveUiComponentsAsObservers(); williamr@2: williamr@2: private: // Data williamr@2: williamr@2: CUiLibRegistryExtension* iExtension; ///< Extension class. Owned. williamr@2: williamr@2: // UI components williamr@2: CDownloadMgrUiUserInteractions* iUserInteractions; // Owned. williamr@2: CDownloadMgrUiDownloadsList* iDownloadsList; // Owned. williamr@2: williamr@2: // Observed DM session williamr@2: RHttpDownloadMgr& iDownloadMgr; ///< Observed. williamr@2: TUid iClientAppUid; williamr@2: }; williamr@2: williamr@2: #endif /* CDOWNLOADMGRUILIBREGISTRY_H */