diff -r 6b5204869ed5 -r 89c890c70182 psln/pslnengine/inc/PslnModel.h --- a/psln/pslnengine/inc/PslnModel.h Fri Jun 25 18:53:58 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,772 +0,0 @@ -/* -* Copyright (c) 2004-2006 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: Model class for Psln application. -* -*/ - - -#ifndef C_PSLNMODEL_H -#define C_PSLNMODEL_H - -#include -#include -#include - -// Screen saver plugin capabilities -enum TScPluginCaps - { - // Plugin has no special capabilities - EScpCapsNone = 0x00, - // Plugin implements the configure function - EScpCapsConfigure = 0x01, - // Plugin wants to be notified when selected as the active screensaver - EScpCapsSelectionNotification = 0x02, - // Plugin wants to be notified when preview command is selected - EScpCapsPreviewNotification = 0x04 - }; - -// Determines the type of skin list. -enum TPslnSkinNameType - { - // list name - EPslnSkinNameTypeList = 0, - // title name - EPslnSkinNameTypeTitle - }; - -// What kind of scren saver activation it is. -enum TPslnScreenSaverActivation - { - // Preview is activated. - EPslnScreenSaverPreviewActivation = 0, - // Preview is deactivated, and "real" screen saver is activated, - EPslnScreenSaverPreviewDeactivation, - // Real screen saver is activated straight away. - EPslnScreenSaverActivation - }; - -// Defines actions for a transtion effects -enum TPslnTransitionEffectAction - { - // Used only for enum range validation - EPslnTransitionEffectDummyFirst = -1, - - // -- begin of real values -- - - // Start theme preview transtion effect - EPslnTransitionEffectStartPreview, - // Start theme activation transtion effect - EPslnTransitionEffectStartThemeActivation, - // Stop the current transition effect - EPslnTransitionEffectStop, - - // -- end of real values -- - - // Used only for enum range validation - EPslnTransitionEffectDummyLast - }; - -class MAknsSkinChangeObserver; -class MPslnScreenSaverECOMObserver; -class CEikonEnv; -class CPslnSkinStore; -class CRepository; -class CPslnSkinEntry; -class CPslnSkinNameEntry; -class TAknsPkgID; -class CPslnWallpaperUtilsLoader; -class CPslnEcomListener; -class CPslnBrowserLaunchLoader; -class CCenRepNotifyHandler; - -// Maximum number of characters in Screen saver txt. -const TInt KPslnMaxLengthOfScreenSaverText = 15; - -// CLASS DEFINITIONS - -// Inner class for skin name entry. -class TPslnSkinNameEntry - { - public: - // Package ID. - TAknsPkgID iPid; - // Skin list name. - HBufC* iListName; - // Skin title name. - HBufC* iTitleName; - }; - -// Auxiliary class for screen saver info. -class CPslnScreenSaverInfo : public CBase - { - public: - - // Symbian OS two-phased constructor. - static CPslnScreenSaverInfo* NewL() - { - CPslnScreenSaverInfo* self = new (ELeave) CPslnScreenSaverInfo; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - }; - - // Destructor. - ~CPslnScreenSaverInfo() - { - delete iScreenSaverTxt; - iScreenSaverTxt = NULL; - delete iFileName; - iFileName = NULL; - } - private: - - // Symbian OS second phase constructor. - void ConstructL() - { - iScreenSaverTxt = HBufC::NewL( KPslnMaxLengthOfScreenSaverText ); - iFileName = HBufC::NewL( KMaxFileName ); - }; - - // C++ default constructor. - CPslnScreenSaverInfo() - { - iScreenSaverType = 1; // magic, default value - }; - - public: - // Filename for screensaver, if applicable. - HBufC* iFileName; - // Text, if any, shown in the screensaver. - HBufC* iScreenSaverTxt; - // Type of screen saver. - TInt iScreenSaverType; - }; - -/** -* CPslnModel is the model class of Psln app. -* It provides functions to get and set setting values. -*/ -NONSHARABLE_CLASS( CPslnModel ): - public CBase, - public MCenRepNotifyHandlerCallback - { - public: - - /** - * Two-phased constructor. - * @param aObserver observer for skin changes. - * @return new instance of CPslnModel. - */ - IMPORT_C static CPslnModel* NewL( MAknsSkinChangeObserver* aObserver ); - - /** - * Deprecated. - * @return NULL. - */ - IMPORT_C static CPslnModel* NewL(); - - /** - * Destructor - */ - IMPORT_C ~CPslnModel(); - - /** - * Deprecated. - */ - IMPORT_C TBool ActivateSkinL( const TDesC8& aPreviewType, - const TInt aActiveSkinIndex ); - - /** - * Activates screen saver as set by user. - * @param aItemIndex screensaver to activate. - * @param aActivationType screensaver activation type - * (activation/deactivation/preview). - * @return error code, or KErrNone on success. - */ - IMPORT_C TInt ActivateScreenSaver( - const TInt aItemIndex, - TPslnScreenSaverActivation aActivationType ); - - /** - * Disables skin notify changes. - * - * Creates and pushes internal class CPslnActivationGuard to the - * stack. When CPslnActivationGuard is constructed, SkinSrvSession's - * DisableSkinChangeNotify is called, and thus skin notify changes are - * disabled. When CPslnActivationGuard is popped from stack, - * SkinSrvSession's EnableSkinChangeNotify is called automatically and thus, - * skin notify changes are again active. - */ - IMPORT_C void GuardActivationLC(); - - /** - * Starts skin download. - */ - IMPORT_C void DownloadSkinL(); - - /** - * Sets Idle Wallpaper. - * @param aImagePath Path and filename of new wallpaper. - * @return error code, or KErrNone on success. - */ - IMPORT_C TInt SetBackgroundImagePath( const TDesC& aImagePath ); - - /** - * Invokes screensaver plugins PluginFunction for e.g. configuring - * the screensaver. - * @param aIndex screensaver index to use. - * @param aFunction screensaver function to call. - */ - IMPORT_C void InvokeSSPluginFunctionL( - TInt aIndex, - TScPluginCaps aFunction ); - - /** - * Updates skins from server, UI skins list, and screensaver array. - */ - IMPORT_C void PerformCompleteUpdateL(); - - /** - * Creates screen saver array. - */ - IMPORT_C void LoadScreensaverArrayL(); - - /** - * Gets the visible skin by its UI index. - * Ownership is not transferred. - * @param aIndex skin index. - * @return pointer to skin entry. - */ - IMPORT_C CPslnSkinEntry* VisibleSkin( const TInt aIndex ); - - /** - * Gets the name of the skin. - * @param aIndex skin index to use. - * @param aSkinName localized skin name. - * @param aType which skin name to fetch (list/title name). - */ - IMPORT_C void GetSkinNameByIndex( const TInt aIndex, TDes& aSkinName, - const TPslnSkinNameType aType ) const; - - /** - * Checks whether the current (or given) skin is active. - * @param aSkinIndex skin index to use. - * @return ETrue is given skin index is currently active skin. - */ - IMPORT_C TBool IsActiveSkinSelected ( - TInt aSkinIndex = KErrNotFound ) const; - - /** - * Deprecated since 5.0. - */ - IMPORT_C TAknSkinSrvSkinPackageLocation LocationOfSkin( const TInt aIndex ); - - /** - * Returns skin index of active skin. - * @return skin index of active skin. - */ - IMPORT_C TInt ActiveSkinIndex() const; - - /** - * Returns skin index of currently highlighted skin. - * @return skin index of highlighted skin. - */ - IMPORT_C TInt CurrentSelectedSkinIndex() const; - - /** - * Returns number of found skins. - * @return number of found skins. - */ - IMPORT_C TInt NumberOfSkins() const; - - /** - * Returns screensaver name array. - * @return screensaver name array. - */ - IMPORT_C const MDesC16Array& ScreensaverNames() const; - - /** - * Checks if selected screensaver has the requested capability - * @param aIndex index of screensaver in screensaver array. - * @param aCapability requested capability. - * @return ETrue if screensaver has the capability, EFalse otherwise. - */ - IMPORT_C TBool ScreensaverHasCapability( - const TInt aIndex, - const TScPluginCaps aCapability ) const; - - /** - * Returns protection type of skin. - * @param aIndex skin index to use. - * @return protection type of skin. - */ - IMPORT_C TAknsSkinSrvSkinProtectionType ProtectionOfSkin( - const TInt aIndex ); - - /** - * Checks if the skin can be activated. - * @param aItemIndex skin index to use. - * @return ETrue, if skin can be activated. - */ - IMPORT_C TBool IsValidForActivation( const TInt aItemIndex ); - - /** - * Checks if the skin can be previewed. - * @param aItemIndex skin index to use. - * @return ETrue, if skin can be previewed. - */ - IMPORT_C TBool IsValidForPreview( const TInt aItemIndex ); - - /** - * Checks if the skin support animated background. - * @param aItemIndex skin index to use. - * @return ETrue, if skin support animation background. - */ - IMPORT_C TBool IsSupportAnimBg( TInt aItemIndex ); - - /** - * Sets the given skin index as currently highlighted one. - * @param aCurrentSkinIndex skin index. - */ - IMPORT_C void SetCurrentSelectedSkinIndex( - const TInt aCurrentSkinIndex ); - - /** - * Deprecated. - */ - IMPORT_C TInt SetCurrentPropertyType( const TInt aProperty, - const TInt aCurItemIndex ); - - /** - * Gets currently active index of given property. - * @param aProperty property type - either wallpaper or screensaver. - * @return index of currently active property, or error code. - */ - IMPORT_C TInt CurrentPropertyIndex( const TInt aProperty ); - - /** - * Enables (or disables) notifications from ECOM framework. - * When ECOM state is changed, PslnModel will check that it's - * screensaver list is up to date. Changes in the list are - * indicated to observer class. - * @param aActive if ETrue, notifications are subscribed, otherwise - * subscription is terminated. - * @param aObserver observer for notifications. - */ - IMPORT_C void EnableScreenSaverNotifications( - const TBool& aActive, - MPslnScreenSaverECOMObserver& aObserver ); - - /** - * Deprecated. - */ - IMPORT_C TBool ActivateSkinL( - const TDesC8& aPreviewType, - const TInt aActiveSkinIndex, - const TBool& aActivateFromPreview ); - - /** - * Activates the entire skin. - * @since 3.2 - * @param aActiveSkinIndex skin index of active skin. - * @return ETrue, if skin activation is successful. - */ - IMPORT_C TBool ActivateSkinL( const TInt aActiveSkinIndex ); - - /** - * Gets currently active index of given property. - * This is leaving version of CurrentPropertyIndex (see above). - * @param aProperty property type - either wallpaper or screensaver. - * @return index of currently active property, or error code. - */ - IMPORT_C TInt CurrentPropertyIndexL( const TInt aProperty ); - - /** - * Sets transition effects enabled/disabled as given in the parameter. - * @param aEffectValue used as bitmask. Value of zero enables all effects, - * and value of KMaxTInt disables all effects. - * All other values are considered as invalid. - * @return KErrArgument if aEffectValue is not zero or KMaxTInt. - * Otherwise return value is what is given out by CRepository::Set(). - * - * @since 3.2 - */ - IMPORT_C TInt SetTransitionEffectsL( const TInt aEffectValue ); - - /** - * Gets current transition effect value. - * @return in error cases returns KErrNotFound, - * otherwise returns current repository value. - * - * @since 3.2 - */ - IMPORT_C TInt GetTransitionEffectStateL(); - - /** - * Checks if the screensaver is installed on memory card. - * @param aScreensaverIndex screensaver index - * @return ETrue, if screensaver is installed to the memory card. - * - * @since 3.2 - */ - IMPORT_C TBool IsScreenSaverOnMemoryCard( const TInt aIndex ) const; - - /** - * Sets a given property (wallpaper or screensaver) as active. - * @param aProperty property type - either wallpaper or screensaver. - * @param aCurItemIndex item index that is currently active. - * @return KErrNone always. - * - * @since 3.2 - */ - IMPORT_C void SetCurrentPropertyTypeL( const TInt aProperty, - const TInt aCurItemIndex ); - - /** - * Checks if a skin with given index is on memory card, - * @param aIndex skin index from application. - * @return ETrue if skin is on memory card, EFalse otherwise. - * - * @since 5.0 - */ - IMPORT_C TBool IsThemeOnMemoryCard( const TInt& aIndex ); - - /** - * Checks if a skin with given index is on mass drive, - * @param aIndex skin index from application. - * @return ETrue if skin is on memory card, EFalse otherwise. - * - * @since 5.0 - */ - IMPORT_C TBool IsThemeOnMassDrive( const TInt& aIndex ); - - /** - * Checks if the screensaver is installed on mass drive. - * @param aScreensaverIndex screensaver index - * @return ETrue, if screensaver is installed to the mass drive. - * - * @since 5.0 - */ - IMPORT_C TBool IsScreenSaverOnMassDrive( const TInt& aIndex ) const; - - /** - * Returns skin server session. - * @return skin server session. - * - * @since 3.2 - */ - IMPORT_C RAknsSrvSession SkinSrvSession() const; - - /** - * Starts or stops transition effects. - * - * @param aAction specifies actions for transition effects. - * The value can be one of the values defined in TPslnTransitionEffectAction. - * @since 3.2 - */ - IMPORT_C void TransEffect(TInt aAction) const; - - /** - * Set current screensaver to default screensaver. - */ - IMPORT_C void SetScreenSaverToDefault(); - - /** - * Set Animated Background state - * @param aValue specifies actions for animation background. - * 0 mean enable animation effect, KMaxTInt means disable all animation effect. - * @since 9.2 - */ - IMPORT_C TInt SetAnimBackground( TInt aValue ); - - /** - * Get Animated Background state. - * - * @return 0, if animation is enable; KMaxTInt if animation is disable. - * @since 9.2 - */ - IMPORT_C TInt AnimBackgroundState() const; - - - private: - - /** - * Gets the separately localized name of the skin, if any. - * @param aPID package ID to use. - * @param aSkinName localized skin name. - * @param aType which skin name to fetch (list/title name). - * @return ETrue, if localized skin name was found. - */ - TBool GetSeparatelyLocalizedSkinName( - const TAknsPkgID aPID, TDes& aSkinName, - const TPslnSkinNameType aType ) const; - - - /** - * Default C++ contructor - */ - CPslnModel(); - - /** - * Symbian default constructor - */ - void ConstructL( MAknsSkinChangeObserver* aObserver ); - - /** - * Loads the separately localized skin names resource. - */ - void LoadSkinNamesResourceL(); - - /** - * Finds screensavers from the given path and appends them to the - * screensaver list. - * @return ETrue if screensavers were found, EFalse otherwise. - */ - TBool FindAndAppendScreensaversL(); - - /** - * Updates the skin information from the server and - * the list of visible skins. - */ - void UpdateFromServerL(); - - /** - * Updates the list of visible skins. - */ - void UpdateVisibleSkinListL(); - - /** - * Activates skin that is currently selected. - */ - void SetActiveSkinL(); - - /** - * Launches query dialog for screensaver name. - * @return EFalse, if user cancelled the query. - */ - TBool QueryAndSetScreensaverTextL(); - - /* Gets full name of skin. */ - const TDesC& GetSkinFullName( const TInt aItemIndex ); - - /* Gets the name of the skin. */ - void GetSkinNameByPID( const TAknsPkgID aPID, TDes& aSkinName, - const TPslnSkinNameType aType ) const; - - /* Activates default skin. */ - void ActivateDefaultSkinL(); - - /* Gets default text for text screensaver. */ - void GetDefaultTextToScreensaverL( TDes& aDisplayText ); - - /* Gets wallpaper item index. */ - TInt GetWallPaperItemIndex(); - - /* Gets wallpaper item index. */ - TInt GetScreenSaverItemIndexL(); - - /* Find the aFileName in iScreensaverFilenameArr, and return the index */ - TInt GetScreenSaverIndexByFileName(const TDesC &aFileName) const; - - /* Get screen saver object type from index */ - TInt GetScreensaverTypeByIndex(TInt aIndex); - - /* Loads AknsWallpaperUtils to memory. */ - void LoadWallpaperUtilsL(); - - /* Strips file path information from screensaver UID. */ - TPtrC GetRealScreenSaverUid( const TInt aIndex ); - - /* Leaving version of ActivateScreenSaver. */ - void ActivateScreenSaverL( - const TInt aItemIndex, - TPslnScreenSaverActivation aActivationType ); - - /* Loads browser launcher dll to memory. */ - void LoadBrowserLaunchL(); - - /** - * Checks the status of the skin file. - * @param aIndex skin index from application. - * @return ETrue if skin file is exist and can be accessed. - * EFalse if an error occured or didn't exist. - */ - TBool SkinFileExist( const TInt& aIndex ); - - /** - * From MCenRepNotifyHandlerCallback. - */ - void HandleNotifyInt(TUint32 aId, TInt aNewValue); - - /* Gets transition effect value and initialize CenRep notify handler. */ - void InitTransitionEffectVauleL(); - - /* if KPslnSupportScreenSaverSelectionNone is supported return true, or false */ - TBool IsSupportScreenSaverNoneOption() const; - - private: // Data - - /* - * Skin store. - * Own. - */ - CPslnSkinStore* iSkinStore; - - /* - * Array of visible skins. - * Own. - */ - RPointerArray* iVisibleSkinArr; - - /* - * Skin server session. - */ - RAknsSrvSession iSkinSrvSession; - - /* - * CenRep object for skin keys. - * Own. - */ - CRepository* iSkinsRepository; - - /* - * CenRep object for screen saver keys. - * Own. - */ - CRepository* iScreenSaverRepository; - - /* - * CenRep object for themes application keys. - * Own. - */ - CRepository* iThemesAppRepository; - - /* - * Pointer to eikon environment. Stored to avoid repeated fetches. - * Not own. - */ - CEikonEnv* iEikEnv; - - /* - * Currently highlighted skin index. - */ - TInt iCurrentSkinIndex; - - /* - * Active skin index. - */ - TInt iActiveSkinIndex; - - /* - * Array of skin names. - */ - RArray iSkinNames; - - /* - * Array of screensaver filenames. - * Own. - */ - CDesC16ArrayFlat* iScreensaverFilenameArr; - - /* - * Array of screensaver names. - * Own. - */ - CDesC16ArrayFlat* iScreensaverNameArr; - - /* - * Array of screensaver capabilities. - */ - RArray iScreensaverCapsArr; - - /* - * Active screensaver information. - * Own. - */ - CPslnScreenSaverInfo* iScreenSaverInfo; - - /* - * A handle to a dynamically loadable DLL. - */ - RLibrary iWallpaperDll; - - /* - * Loads Wallpaper Utils DLL dynamically to memory. - * Allows use of the DLL through this pointer, but only for - * methods implemented within the wrapper. - * Own. - */ - CPslnWallpaperUtilsLoader* iWallpaperSetter; - - /** - * Listens to ECOM for screensaver plugin changes. - * Own. - */ - CPslnEcomListener* iScreenSaverListener; - - /* - * A handle to a dynamically loadable DLL. - */ - RLibrary iBrowserLaunchDll; - - /* - * Loads Wallpaper Utils DLL dynamically to memory. - * Allows use of the DLL through this pointer, but only for - * methods implemented within the wrapper. - * Own. - */ - CPslnBrowserLaunchLoader* iBrowserLauncher; - - /* - * Internal state of the class. - */ - enum TPslnModelState - { - // initial state - EPslnModelStateInitial = 0x00000000, - // wallpaper dll has been loaded - EPslnModelStateWallpaperDllLoaded = 0x00000001, - // has the default enable CR key for transition effects been read - EPslnModelStateTransitionEnableCRKeyRead = 0x00000002, - // is skin being previewed - EPslnModelStateSkinPreviewed = 0x00000004, - // browser launch dll has been loaded - EPslnModelStateBrowserLaunchDllLoaded = 0x00000008, - // localized skin names have been loaded - EPslnModelStateSkinNamesLoaded = 0x00000010 - }; - TBitFlags iInternalState; - - /** - * Default mask for enable transition effects. - */ - TInt iEffectsDefaultEnableMask; - - /** - * Transition effect setting value. - */ - TInt iTransitionEffectValue; - - /** - * A pointer to Central Repository notification handling. - * Used to monitor the change of KThemesTransitionEffects. - * Own. - */ - CCenRepNotifyHandler *iThemesAppCenRepNotifyHandler; - }; - -#endif // C_PSLNMODEL_H - -// End of File