diff -r 000000000000 -r 040fcad49f44 scrsaver/scrsaverplugins/SlideshowPlugin/inc/SlideshowPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scrsaver/scrsaverplugins/SlideshowPlugin/inc/SlideshowPlugin.h Thu Dec 17 08:46:04 2009 +0200 @@ -0,0 +1,327 @@ +/* +* Copyright (c) 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: Implements the Slideshow plugin beef, especially +* MScreensaverPlugin interface +* +*/ + + + +#ifndef C_SLIDESHOWPLUGIN_H +#define C_SLIDESHOWPLUGIN_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "SlideshowModel.h" +#include "SlideshowSlide.h" +#include "SlideshowPluginUtils.h" + +class CEikonEnv; +class CDRMHelper; +class CRepositoryWatcher; +class CRepository; + + +/** +* Encapsulates the Settings that are written into the central repository +* @lib ScreenSaverAnimPlugin.lib +* @since 3.1 +*/ +class CSlideshowSettings : public CBase + { +public: + CSlideshowSettings(); + +public: + // Slideshow time + TInt iSlideshowTime; + + // Lights time + TInt iLightsTime; + + // Time a slide is displayed + TInt iSlideTime; + + // Slideshow type + TInt iSlideshowType; + }; + + +/** +* Provides the Animated ScreenSaverPlugin functionality which implements +* ScreenSaver Interface and gives a Netscape Browser Plugin Interface +* to the format specific plugins like SVG, Flash, M3G etc. +* @lib ScreenSaverAnimPlugin.lib +* @since 3.1 +*/ +class CSlideshowPlugin: public CScreensaverPluginInterfaceDefinition, + public MCLFOperationObserver + { + enum TPluginState + { + EPluginStateLoading = 0, + EPluginStateInitializing, + EPluginStateRunning, + EPluginStateStopping + }; + +public: + + /** + * Creator + * @since 3.1 + */ + static CSlideshowPlugin* NewL(); + + /** + * Destructor + */ + virtual ~CSlideshowPlugin(); + +private: + /** + * 2nd phase constructor + * @since 3.1 + */ + void ConstructL(); + + /** + * Default Constructor + * @since 3.1 + */ + CSlideshowPlugin(); + +public: // Functions From CScreensaverPluginInterfaceDefinition + + /** + * From MScreensaverPlugin, Method called by Screensaver + * when plugin is being loaded into use + * @param aHost Plugin host (Screensaver). + * @since 3.1 + */ + virtual TInt InitializeL(MScreensaverPluginHost *aHost); + + /** + * From MScreensaverPlugin, Method called by Screensaver + * when plugin is allowed to draw + * @since 3.1 + */ + virtual TInt Draw( CWindowGc& aGc ); + + /** + * From MScreensaverPlugin, Method called by Themes application + * to get localised name + * @since 3.1 + */ + virtual const TDesC16& Name() const; + + /** + * From MScreensaverPlugin, Method called by Screensaver + * to get the capabilities of screensaver plugin + * @since 3.1 + */ + virtual TInt Capabilities(); + + /** + * From MScreensaverPlugin, Method called by Themes application + * to configure the plugin or to pass e.g. selection notifications + * to plugin + * @since 3.1 + */ + virtual TInt PluginFunction( + TScPluginCaps /* aFunction */, + TAny* /* aParam */ ); + + /** + * From MScreensaverPlugin, Method called by Screensaver + * when there are screensaver events, such as starting and stopping + * @since 3.1 + */ + virtual TInt HandleScreensaverEventL( + TScreensaverEvent aEvent, + TAny* aData ); + + +public: // From MCLFOperationObserver + + /** + * From MCLFOperationObserver. Called by CLF when e.g. a content listing + * operation is finished. + * @since S60 3.1 + * @param aOperationEvent Operation event code of the event + * @param aError System wide error code if the operation did not + * succeed. + */ + virtual void HandleOperationEventL(TCLFOperationEvent aOperationEvent, + TInt aError); + + +public: // New Functions + + /** + * Reads the settings from the central repository + * @since 3.1 + * @return System wide Error value + */ + TInt ReadSettings(); + +#if 0 + /** + * This method checks whether the set file exists currently + * if not, it updates the filename string + * This also checks if the rights are valid if the content is drm + * if not, it updates the filename with the empty file name + * returns True, if the Filename is updated + * False, otherwise + * @since 3.2 + */ + TBool UpdateFileName(); +#endif + + /** + * Called when there is a central repository settings change + * @since 3.2 + */ + void HandleCRSettingsChange(TAny* aPtr); + + /** + * Called by the repository watcher when there is a central + * repository settings change + * @since 3.2 + */ + static TInt HandleRepositoryCallBack(TAny* aPtr); + + /** + * Called by the P & S subscriber when the subscribed key value changes + * @since 3.2 + */ + static TInt HandleSettingsChanged(TAny* aPtr); + +private: // New functions + + /** + * Connects the central repository session + * @since 3.1 + */ + void InitializeCenRepL(); + + /** + * Registers for central repository key changes + * @since 3.1 + */ + void NotifyCenrepChangeL(); + + /** + * Cancels registration for central repository key changes + * @since 3.1 + */ + void NotifyCenrepChangeCancel(); + + /** + * Disconnects the central repository session + * @since 3.1 + */ + void UnInitializeCenRep(); + + void StartPlugin(); + void StopPlugin(); + void DrawCentered(CWindowGc& aGc, CSlideshowSlide* aSlide); + void LoadSlidesL(); + void LoadSlideSetL(); + void LoadRandomSlidesL(); + void SetDisplayMode(); + void Lights(TInt aSecs); + void ConfigureL(TAny* aParam); + void UpdateDisplayInfo(); + void FlushDrawBuffer(); + + TInt SettingsChanged(); + + void ConnectToCLFL(); + void WaitForCLF(); + void EndWaitForCLF(); + +private: + // Pointer to the screensaver host + MScreensaverPluginHost* iHost; + + // Display info + TScreensaverDisplayInfo iDi; + + // Plugin state tracking + TInt iState; + + // Resource file offset + TInt iResourceOffset; + + // Handle to the central repository session + CRepository* iSlideshowRepository; + + // Environment pointer + CEikonEnv* iEikEnv; + + // Pointer to settings + CSlideshowSettings* iSettings; + + // Slideshow model + CSlideshowModel* iModel; + + // Pointer to Drm Helper + CDRMHelper* iDrmHelper; + + // Cenrep watcher for settings change + CRepositoryWatcher* iSlideshowCRWatcher; + + RProperty iSettingsChangedProperty; + CPSSubscriber* iSettingsChangedSubscriber; + + // Localised name + HBufC* iScreensaverName; + + // Gallery content listing engine + MCLFContentListingEngine* iCLFEngine; + + // Gallery content listing model + MCLFItemListModel* iCLFModel; + + // CLF status + TInt iCLFError; + + // CLF model state + TBool iCLFModelUpToDate; + + + // Waiter + CActiveSchedulerWait iWaiter; + TBool iWaitActive; + + // Draw count + TInt iDrawCount; + TBool iTimerUpdated; + }; + + +#endif // C_SLIDESHOWPLUGIN_H +// End Of file