diff -r aaeeca1f15af -r e8d784ac1a4b inc/screensaverctrlplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/screensaverctrlplugin.h Wed Sep 01 12:30:40 2010 +0100 @@ -0,0 +1,218 @@ +/* +* 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 "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: Definitions for the display object of plugin type +* +*/ + + + +#ifndef C_SCREENSAVERCTRLPLUGIN_H +#define C_SCREENSAVERCTRLPLUGIN_H + +#include + +#include "screensaverbase.h" + +/** + * The plugin type of display object which is derived from the + * CScreensaverBase class + */ +class CScreensaverCtrlPlugin : public CScreensaverBase, + public MScreensaverPluginHost + { +public: + enum TScreensaverPluginFlag + { + // Indicates that plugin module wants to draw indicators + EPluginFlagOverrideIndicators = 0, + // Indicates that plugin does not use refresh timer and should not get + // Draw() calls + EPluginFlagTimerNotUsed, + EPluginFlagSuspend + }; +public: + /** + * Two-phased constructor. + */ + static CScreensaverCtrlPlugin* NewL(); + + /** + * Destructor + */ + ~CScreensaverCtrlPlugin(); + + /** + * Start the control needed timer + */ + void StartTimer(); + + /** + * Cancels the timer + */ + void CancelTimer(); + + + /** + * Show the control + */ + void DrawObject(); + + /** + * Clear the screen + */ + void ClearScreen(); + + /* + * Refresh the display + */ + void Refresh(); + + /** + * Send the event to plugin to deal with + * + * @param aEvent the event send to plugin + * @return TInt + */ + TInt SendPluginEvent( TScreensaverEvent aEvent ); + + /** + * Returns the implemenataion UID of the plugin + * + * @return TUid Implementation UID + */ + TUid PluginImplementationUid() const; + +public: + // From MScreensaverPluginHost + void UseStandardIndicators(); + void OverrideStandardIndicators(); + TBool StandardIndicatorsUsed() const; + void SetRefreshTimerValue( TInt aValue ); + TInt RefreshTimerValue() const; + TInt GetIndicatorPayload( TScreensaverIndicatorIndex aIndex, + TIndicatorPayload& aResult ) const; + TInt SetActiveDisplayArea( TRect& aRect, + const TScreensaverPartialMode& aMode ); + TInt SetActiveDisplayArea( TInt aStartRow, TInt aEndRow, + const TScreensaverPartialMode& aMode ); + void ExitPartialMode(); + const TScreensaverColorModel& GetColorModel() const; + void Suspend( TInt aTime ); + void RequestLights( TInt aSecs ); + TInt DisplayInfo( TScreensaverDisplayInfo* aDisplayInfo ); + void UseRefreshTimer( TBool aOn = ETrue ); + void RequestTimeout( TInt aSecs ); + void RevertToDefaultSaver(); + // End MScreensaverPluginHost + +protected: + /** + * The default C++ constuctor + * + * @param aType the type of the display object. + * @param aPlugin the plugin which the screensaver is setted. + */ + CScreensaverCtrlPlugin(); + + /** + * Symbian default constructor. + */ + void ConstructL(); + +protected: + // From CCoeControl + + /** + * Resource change handling + */ + virtual void HandleResourceChange( TInt aType ); + + /** + * Responds to changes to the size and position of the contents + * of this control. + */ + virtual void SizeChanged(); + + /** + * Drawing (override this to draw) + */ + virtual void Draw( const TRect& aRect ) const; + +private: + /* + * LoadPluginL() + */ + void LoadPluginL( MScreensaverPluginHost* aPluginHost ); + + /* + * Get the poiter of the plugin + */ + void LoadPluginModuleL(); + + /* + * Delete the plugin + */ + void DeletePlugin(); + + /** + * Starts the plugin refresh timer + */ + void StartPluginRefreshTimer(); + + /** + * Starts the plugin time out timer + */ + void StartPluginTimeoutTimer( TInt aSecs ); + + + /** + * Callback fuction. Called when the Plugin tiemr time out + */ + static TInt HandlePluginTimeoutTimerExpiry( TAny* aPtr ); + + +private://data + /** + * Plugin interface. + */ + MScreensaverPlugin* iPlugin; + + /** + * The plugin refresh timer + */ + CPeriodic* iPluginRefreshTimer; + + /** + * The plugin timeout timer + */ + CPeriodic* iPluginTimeoutTimer; + + + /** + * The plugin flag + */ + mutable TBitFlagsT iPluginFlag; + + /** + * The refresh rate of plugin + */ + TInt iPluginRefreshRate; + + /** + * The implementation UID of the plugin + */ + TUid iPluginImplUid; + + }; +#endif // C_SCREENSAVERCTRLPLUGIN_H