diff -r 5315654608de -r 08c6ee43b396 idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h Mon Jan 18 20:10:36 2010 +0200 @@ -0,0 +1,244 @@ +/* +* 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 the License "Symbian Foundation License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Background manager +* +*/ + +#ifndef CXNBACKGROUNDMANAGER_H +#define CXNBACKGROUNDMANAGER_H + +// System includes +#include +#include +#include +#include + +// CLASS DECLARATION +class CXnViewManager; +class CXnViewData; +class CAknsLayeredBackgroundControlContext; + +namespace hspswrapper + { + class CHspsWrapper; + } + +using namespace hspswrapper; + +/** +* Background manager. +* +* @since S60 v5.0 +*/ +NONSHARABLE_CLASS( CXnBackgroundManager ) : public CCoeControl, + public MAknsSkinChangeObserver, public MCoeViewActivationObserver, + public MDiskNotifyHandlerCallback + { +public: + + /** + * Two-phased constructor. + * @param aWrapper HSPS wrapper + * @return new instance of CXnWallpaperView. + */ + static CXnBackgroundManager* NewL( CXnViewManager& aViewManager, CHspsWrapper& aWrapper ); + + /** + * Destructor. + */ + ~CXnBackgroundManager(); + + /** + * Caches wallpaper image. + * + * @since S60 5.0 + * @param aFileName WallpaperImage image path and filename to be cached + * @return Error code. + */ + TInt CacheWallpaperL( const TDesC& aFileName, CXnViewData& aViewData ); + + /** + * Changes wallpaper image of the current page. + * + * @since S60 5.0 + * @param aFileName WallpaperImage image path and filename + */ + void AddWallpaperL( const TDesC& aFileName ); + + /** + * Checks whether page specific wallpaper feature is activated or not. + * + * @since S60 5.0 + */ + TBool ActivatedL(); + + /** + * Shows wallpaper change dialog + * + * @since S60 5.0 + */ + void SetWallpaperL(); + + /** + * Handles wallpaper changing in page change + * + * @since S60 5.0 + * @param aOldView Old view + * @param aNewView New view + */ + void WallpaperChanged( CXnViewData& aOldView, CXnViewData& aNewView ); + +private: // Functions from base classes + + /** + * see CCoeControl + */ + void Draw(const TRect& aRect) const; + + /** + * see CCoeControl + */ + void SizeChanged(); + + /** + * see MAknsSkinChangeObserver + */ + void SkinContentChanged(); + + /** + * see MAknsSkinChangeObserver + */ + void SkinConfigurationChanged( + const TAknsSkinStatusConfigurationChangeReason aReason ); + + /** + * see MAknsSkinChangeObserver + */ + void SkinPackageChanged( + const TAknsSkinStatusPackageChangeReason aReason ); + + /** + * @see MCoeViewActivationObserver + */ + void HandleViewActivation( const TVwsViewId& aNewlyActivatedViewId, + const TVwsViewId& aViewIdToBeDeactivated ); + + /** + * From MDiskNotifyHandlerCallback. + */ + void HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ); + +private: + + /** + * C++ default constructor. + */ + CXnBackgroundManager( CXnViewManager& aViewManager, CHspsWrapper& aWrapper ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + void SaveWallpaperL(); + TInt SetSettingPropertyL( const TDesC8& aPluginId, const TDesC8& aItemId, + const TDesC8& aPropertyName, const TDesC8& aPropertyValue ); + void UpdateWallpapersL(); + void CleanCache(); + void RemoveWallpaperL( CXnViewData& aViewData ); + void RemoveWallpaperFromCache( const TDesC& aFileName ); + void RemovableDiskInsertedL(); + void CheckFeatureTypeL(); + void AddPageSpecificWallpaperL( const TDesC& aFileName ); + void AddCommonWallpaperL( const TDesC& aFileName, TBool aSave = ETrue ); + void ReadWallpaperFromCenrepL(); + +private: // data + + /** + * Provides needed services + */ + CXnViewManager& iViewManager; + + /** + * Hsps wrapper + */ + CHspsWrapper& iHspsWrapper; + + /** + * skin server to detect when wallpaper has changed + * Own. + */ + RAknsSrvSession iSkinSrv; + + /** + * File server session. + * Own. + */ + RFs iFsSession; + + /** + * Notifier for disk drive status changes. + * Own. + */ + CDiskNotifyHandler* iDiskNotifier; + + /** + * Background control context. + * Own. + */ + CAknsLayeredBackgroundControlContext* iBgContext; + + /** + * Current view rect, which is basically the whole screen. + */ + TRect iRect; + + /** + * States whether page specific wallpaper is supported or + * same wallpaper is shown in all pages. + */ + TBool iFeatureSuppoted; + + /** + * Internal wallpaper update in progress + */ + TInt iIntUpdate; + + /** + * States whether transparent CBA and status pane is used. + * Homescreen uses transparency, but e.g. Widget catalog does not. + */ + TBool iTransparencyEnabled; + + /** + * Pointer to wallpaper image. This is used only if same wallpaper + * is shared among all HS pages. + * Own. + */ + CFbsBitmap* iBgImage; + + /** + * Path of the wallpaper image, including filename. + * This is used only if same wallpaper + * is shared among all HS pages. + * Own. + */ + HBufC* iBgImagePath; + + }; + +#endif // CXNBACKGROUNDMANAGER_H + +// End of File