engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h
changeset 36 6481344a6d67
parent 24 99ad1390cd33
child 71 27f2d7aec52a
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h	Thu May 27 12:51:42 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h	Fri Jun 11 13:38:23 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   
+* Description: The data source mds class   
 *
 */
 
@@ -29,10 +29,18 @@
 #define _C_GLXDATASOURCEMDS_H_
 
 // INCLUDES
+#include <e32base.h>
+#include <w32std.h>
+#include <e32property.h> 
+
 #include <e32cmn.h>
 #include <f32file.h>
 
 #include <mdesession.h>
+
+#include <harvesterclient.h>
+#include <harvestereventenum.h>
+
 #include <mglxtnstorage.h>
 #include <mpxcollectionmessagedefs.h>
 
@@ -44,16 +52,104 @@
 
 #include "mthumbnailfetchrequestobserver.h"
 #endif
-
 #include "glxdatasource.h"
 
 // FORWARD DECLARATIONS
 class CGlxRequest;
-
 #ifndef USE_S60_TNM
 class CGlxtnThumbnailCreator;
 class CGlxtnThumbnailDatabase;
 #endif
+class CGlxDataSourceMde ;
+
+const TUid KHarvesterPSShutdown = { 0x200009F5 } ;
+const TInt KMdSShutdown     = 0x00000002; // values 1 = shutdown, 0 = restart, normal state
+
+static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
+static _LIT_SECURITY_POLICY_C1(KPowerMgmtPolicy,ECapabilityPowerMgmt);
+
+/**
+ * PSCW Listener Observer interface for signaling that MDS has Shutdown/restarted
+ */
+class MGlxMDSShutdownObserver
+    {
+public:
+
+    virtual void ShutdownNotification(TInt aShutdownState) = 0;
+    };
+
+/**
+ *  Active object for observing P&S keys
+ *
+ *  @since S60 v5.0
+ */
+class CGlxMDSShutdownObserver: public CActive
+    {
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since S60 v5.0
+     * @return Instance of CGlxMDSShutdownObserver.
+     */
+    static CGlxMDSShutdownObserver* NewL( MGlxMDSShutdownObserver& aObserver, const TUid& aKeyCategory,
+                                      const TInt aPropertyKey, TBool aDefineKey);
+
+    /**
+     * Destructor
+     *
+     * @since S60 v5.0
+     */
+    virtual ~CGlxMDSShutdownObserver();
+    
+protected:
+
+    /**
+     * Handles an active object's request completion event.
+     *
+     * @since S60 v5.0
+     */
+    void RunL();
+
+    /**
+     * Implements cancellation of an outstanding request.
+     *
+     * @since S60 v5.0
+     */
+    void DoCancel();
+
+private:
+
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v5.0
+     * @return Instance of CGlxMDSShutdownObserver.
+     */
+    CGlxMDSShutdownObserver( MGlxMDSShutdownObserver& aObserver, const TUid& aKeyCategory,
+                         const TInt iPropertyKey, TBool aDefineKey);
+
+    /**
+     * Symbian 2nd phase constructor can leave.
+     *
+     * @since S60 v5.0
+     */
+    void ConstructL();
+
+private:
+    
+    // not own
+    MGlxMDSShutdownObserver& iObserver;
+    
+    const TUid& iKeyCategory;
+    RProperty iProperty;
+    TInt iPropertyKey;
+    
+    TBool iDefineKey;
+};
+
+
 
 // CONSTANTS
 
@@ -68,10 +164,12 @@
  */
 class CGlxDataSourceMde : public CGlxDataSource,
                           public MMdESessionObserver,
+                          public MGlxMDSShutdownObserver,
                           public MMdEObjectObserver,
                           public MMdEObjectPresentObserver,
                           public MMdERelationObserver,
-                          public MMdERelationPresentObserver
+                          public MMdERelationPresentObserver,
+                          public MHarvesterEventObserver
 #ifdef USE_S60_TNM
 						, public MThumbnailManagerObserver
 #else
@@ -90,11 +188,19 @@
 
 public:
     // from CGlxDataSource
-    CGlxDataSourceTask* CreateTaskL(CGlxRequest* aRequest, MGlxDataSourceRequestObserver& aObserver);
+    CGlxDataSourceTask* CreateTaskL(CGlxRequest* aRequest,
+            MGlxDataSourceRequestObserver& aObserver);
+public:
+    // from MHarvesterEventObserver
+    void HarvestingUpdated( 
+                HarvesterEventObserverType aHEObserverType, 
+                HarvesterEventState aHarvesterEventState,
+                TInt aItemsLeft );
 
 #ifdef USE_S60_TNM
 public:
-	void FetchThumbnailL(CGlxRequest* aRequest, MThumbnailFetchRequestObserver& aObserver);
+	void FetchThumbnailL(CGlxRequest* aRequest, 
+	        MThumbnailFetchRequestObserver& aObserver);
 	TInt CancelFetchThumbnail();
 #else
 private: 
@@ -161,13 +267,15 @@
 #endif
 		
 private:
-    void BackgroundThumbnailMessageL(const TGlxMediaId& aId, const TSize& aSize, TInt aError);
+    void BackgroundThumbnailMessageL(const TGlxMediaId& aId, const TSize& aSize, 
+            TInt aError);
 
     void DoSessionInitL();
 
     void AddMdEObserversL();
 
-    void ProcessUpdateArray(const RArray<TItemId>& aArray, TMPXChangeEventType aType, TBool aIsObject);
+    void ProcessUpdateArray(const RArray<TItemId>& aArray, TMPXChangeEventType aType,
+            TBool aIsObject);
 
     void ProcessItemUpdateL();
 
@@ -180,8 +288,19 @@
     void TaskCompletedL();
 
     void TaskStartedL();
+    
+#ifdef USE_S60_TNM
+    /*
+     * This function doesnt add up any value, added to reduce compiler warnings
+     */
+    void ThumbnailReadyL( TInt aError, MThumbnailData& aThumbnail,
+        TThumbnailRequestId aId, TBool aQuality );
+#endif
+    
+public:
 
-public:
+    void CreateSession();
+    
     inline CMdESession& Session() const;
     
 #ifndef USE_S60_TNM
@@ -236,6 +355,9 @@
     TBool SameMonth(const TTime& aOldDate, const TTime& aNewDate);
      
 	TBool ContainerIsLeft(CMdEObjectDef& aObjectDef);    
+	
+	// from MGlxMDSShutdownObserver
+    void ShutdownNotification(TInt aShutdownState);
 
 private:
 #ifdef USE_S60_TNM
@@ -247,10 +369,7 @@
     TBool iTnRequestInProgress;
     TInt iTnHandle;
     TGlxMediaId iMediaId;
-#ifdef _DEBUG   
-	TTime iStartTime;
-	TTime iStopTime;
-#endif
+    
 #else
     CGlxtnThumbnailCreator*   iThumbnailCreator;
     CGlxtnThumbnailDatabase*  iThumbnailDatabase;
@@ -279,6 +398,8 @@
     
     RArray<TTime> iMonthArray;
     RArray<TGlxMediaId> iMonthList;
+    RArray<TItemId> iAddedItems;
+    
     TTime iFirstMonth;
     TTime iLastMonth;
     
@@ -296,6 +417,16 @@
     RArray<TUpdateData> iUpdateData;
 	TBool iPauseUpdate;
     TInt iDeletedCount;
+    
+    RHarvesterClient iHC;
+    TBool iHarvestingOngoing;
+
+    CGlxMDSShutdownObserver* iMDSShutdownObserver;
+
+#ifdef _DEBUG
+    TTime iStartTime;
+    TTime iStopTime;
+#endif    
     };
 
 #include "glxdatasourcemds.inl"