diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Wed Jun 09 09:22:57 2010 +0300 @@ -37,6 +37,7 @@ class CMailExternalAccount; class CMailPluginProxy; class CEmailObserverPlugin; +class CMailCpsUpdateHelper; /** * CMail ContentPublishingService Handler class @@ -77,6 +78,12 @@ * Wraps all "Update*" methods */ void UpdateFullL(); + + /** + * Method that actually does the full update. + * Used by CMailCpsUpdateHelper. + */ + void DoUpdateFullL(); /** * @@ -453,6 +460,45 @@ TFSMailMsgId iWaitingForNewWidget; // CAknGlobalNote* iQuery; + // Helper for limiting rate of updates to Homescreen widget + CMailCpsUpdateHelper* iUpdateHelper; }; +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +// Helper class for limiting rate of updates to Homescreen widget + +// Don't make widget updates more often than this delay (milliseconds) +#define KMailCpsHandlerUpdateDelay 1000 + +class CMailCpsUpdateHelper : public CTimer + { + public: + static CMailCpsUpdateHelper* NewLC( CMailCpsHandler *aHandler ); + static CMailCpsUpdateHelper* NewL( CMailCpsHandler *aHandler ); + + virtual ~CMailCpsUpdateHelper(); + + // Notify that Homescreen widget(s) should be updated + void UpdateL(); + + protected: + void ConstructL(); + virtual void RunL(); + TInt RunError( TInt aError ); + + private: + CMailCpsUpdateHelper( CMailCpsHandler *aHandler ); + + // Performs the update, resets the timer, etc. + void DoUpdateL(); + + // Handler to use to do updates (not owned) + CMailCpsHandler *iCpsHandler; + // Whether or not an update is pending + TBool iPending; + }; + + #endif //__CMAILCPSHANDLER_H__