scrsaver/scrsaverplugins/SlideshowPlugin/inc/SlideshowPlugin.h
changeset 0 040fcad49f44
child 14 d8eca2b0590d
--- /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 <gdi.h>
+#include <coecntrl.h>
+#include <e32cmn.h>
+#include <coecobs.h>
+#include <AknsSrvClient.h>
+#include <ScreensaverpluginIntDef.h>
+#include <screensaverplugin.h>
+#include <ScreensaverInternalPSKeys.h>
+
+#include <MCLFOperationObserver.h>
+#include <MCLFContentListingEngine.h>
+#include <MCLFItemListModel.h>
+
+#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