emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h
branchRCL_3
changeset 18 6b8f3b30d0ec
parent 17 67369d1b217f
child 20 efd4f1afd43e
--- 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__