omads/omadsappui/AspSyncUtil/src/AspProfile.cpp
branchRCL_3
changeset 48 2bb96f4ecad8
parent 21 2bbcc0756c6d
--- a/omads/omadsappui/AspSyncUtil/src/AspProfile.cpp	Thu Jul 15 18:23:06 2010 +0300
+++ b/omads/omadsappui/AspSyncUtil/src/AspProfile.cpp	Thu Aug 19 09:41:17 2010 +0300
@@ -40,8 +40,8 @@
 #include <calenmulticalutil.h>
 #include <CalenInterimUtils2.h>
 
-_LIT(KDrive ,"C:");
 _LIT(KCharUnderscore, "_");
+_LIT( KNSmlAgendaFileNameForDefaultDB, "c:calendar" );
 
 /*******************************************************************************
  * class TAspProviderItem
@@ -898,10 +898,9 @@
        	
        	if (task.iDataProviderId == KUidNSmlAdapterCalendar.iUid)
        	    {
-       	    CCalSession* session = CCalSession::NewL();
-       	    CleanupStack::PushL(session);
-       	    TRAPD (err, session->OpenL(task.iClientDataSource));
-       	    if (err == KErrNotFound)
+            TBool status = EFalse;
+            status = IsValidClientDataSourceL( task.iClientDataSource );
+       	    if ( !status )
        	        {
        	        TInt index = FindProviderIndex(task.iDataProviderId);
        	        TAspProviderItem& provider = ProviderItem(index);
@@ -920,7 +919,7 @@
                 InitAllTasksL();
                 InitDataProvidersL();
        	        }
-       	    CleanupStack::PopAndDestroy(session);
+       	    
        	    }
 
 		goodContentCount++;
@@ -1242,7 +1241,7 @@
 	if (aDataProvider.iDataProviderId == KUidNSmlAdapterCalendar.iUid )
         {
         TBuf<128> calLocalDb ;
-        CreateCalLocalDatabaseL(calLocalDb);
+        CreateCalLocalDatabaseL(calLocalDb);        
         task.CreateL(iProfile->Profile(), aDataProvider.iDataProviderId, 
                 KNullDesC, calLocalDb);
         }
@@ -1317,8 +1316,7 @@
 				if (err != KErrNone)
 					{
 					CreateCalLocalDatabaseL(calLocalDb);
-					}				
-                
+					}								
                 task.CreateL(iProfile->Profile(), aDataProviderId, 
                                               aRemoteDatabase, calLocalDb);
                 }
@@ -1338,8 +1336,7 @@
 		    if (err != KErrNone)
 		        {
 		        CreateCalLocalDatabaseL(calLocalDb);
-		        }
-		    
+		        }		    
 		    task.CreateL(iProfile->Profile(), aDataProviderId, 
 		                                  aRemoteDatabase, calLocalDb);
 		    }
@@ -1390,8 +1387,7 @@
 //
 void CAspContentList::CreateCalLocalDatabaseL(TDes& aCalName)
     {
-            
-    aCalName.Copy(KDrive);
+                
     
     TBuf<KBufSize> buffer;
     iProfile->GetName(buffer);
@@ -1510,8 +1506,8 @@
     // Create the CalFile
     HBufC* calfilename = CCalenMultiCalUtil::GetNextAvailableCalFileL();
     calSession->CreateCalFileL( calfilename->Des(), *calinfo );
-	
-	aCalName.Copy( calfilename->Des() );
+		
+    aCalName.Copy(KNSmlAgendaFileNameForDefaultDB);
     
     delete calfilename;
     
@@ -1580,6 +1576,23 @@
         
         CCalCalendarInfo* caleninfo = vCalSubSession->CalendarInfoL(); 
         CleanupStack::PushL(caleninfo);
+		
+		//Get MARKASDELETE MetaData property
+		keyBuff.Zero();
+		TBool markAsdelete = EFalse;
+		keyBuff.AppendNum( EMarkAsDelete );
+		TPckgC<TBool> pckMarkAsDelete(markAsdelete);
+		TRAPD(err,pckMarkAsDelete.Set(caleninfo->PropertyValueL(keyBuff)));
+		if ( err == KErrNone )
+			{
+			markAsdelete = pckMarkAsDelete();
+			if( markAsdelete )
+				{
+				CleanupStack::PopAndDestroy(caleninfo);
+				CleanupStack::PopAndDestroy(vCalSubSession);  	  	 
+				continue;
+				}
+			}
         
         TInt profileId;
         keyBuff.Zero();
@@ -1623,6 +1636,49 @@
     }
 
 // -----------------------------------------------------------------------------
+// CAspContentList::IsValidClientDataSource
+// 
+// -----------------------------------------------------------------------------
+//
+TBool CAspContentList::IsValidClientDataSourceL( TDes& aCalName )
+    {
+    TBool datasourcefound = ETrue;
+    TBuf8<KBufSize> keyBuff;
+    CCalCalendarInfo* caleninfo = NULL;
+    CCalSession* session = CCalSession::NewL();
+    CleanupStack::PushL(session);
+    TRAPD (err, session->OpenL(aCalName));
+    
+    if( err == KErrNotFound )
+        {
+        datasourcefound = EFalse;
+        }
+    else
+        {
+        caleninfo = session->CalendarInfoL(); 
+        CleanupStack::PushL(caleninfo);
+                
+        //Get MARKASDELETE MetaData property
+        keyBuff.Zero();
+        TBool markAsdelete = EFalse;
+        keyBuff.AppendNum( EMarkAsDelete );
+        TPckgC<TBool> pckMarkAsDelete(markAsdelete);
+        TRAP(err,pckMarkAsDelete.Set(caleninfo->PropertyValueL(keyBuff)));
+        if ( err == KErrNone )
+            {
+            markAsdelete = pckMarkAsDelete();
+            if( markAsdelete )
+                {
+                datasourcefound = EFalse;
+                }
+            }
+        CleanupStack::PopAndDestroy(caleninfo);
+        }
+    CleanupStack::PopAndDestroy(session);
+    return datasourcefound;
+    }
+
+// -----------------------------------------------------------------------------
 // CAspContentList::ReadTaskL
 // 
 // -----------------------------------------------------------------------------