serviceproviders/sapi_calendar/src/calendarinterface.cpp
changeset 26 5d0ec8b709be
parent 10 fc9cf246af83
child 34 5dae2c62e9b6
--- a/serviceproviders/sapi_calendar/src/calendarinterface.cpp	Tue Nov 24 08:56:33 2009 +0200
+++ b/serviceproviders/sapi_calendar/src/calendarinterface.cpp	Thu Dec 17 09:09:50 2009 +0200
@@ -1303,7 +1303,7 @@
 				if ( entryType == -1 )
 					{
 					AppendErrorMessageL( KCmdAdd, KLocalId, KInvalid );
-					User::Leave( KErrArgument );
+					User::Leave( KErrNotFound );
 					}
 					
 				// Leave if tring to set different entry type
@@ -1313,7 +1313,7 @@
 					if ( tmpType != entryType )
 						{
 						AppendErrorMessageL( KCmdAdd, _L8("Entry Type "), KInvalid );
-						User::Leave( KErrArgument );
+						User::Leave( KErrBadName );
 						}
 					}
 				}
@@ -1357,7 +1357,7 @@
 				{
 				ValidateParamTypeL( inParam, LIW::EVariantTypeTTime, 
 									KCmdAdd, KStartTime, KInvalid );
-				
+				iStTime = inParam.AsTTime();
 				entryAttributes->SetStartTimeL( inParam.AsTTime() );
 				}
 				
@@ -1368,7 +1368,7 @@
 				{
 				ValidateParamTypeL( inParam, LIW::EVariantTypeTTime, 
 									KCmdAdd, KEndTime, KInvalid );
-				
+				iEnTime = inParam.AsTTime();
 				entryAttributes->SetEndTimeL( inParam.AsTTime() );
 				}
 				
@@ -1610,6 +1610,11 @@
 							{
 							ValidateParamTypeL( rptParam, LIW::EVariantTypeTInt32, 
 											KCmdAdd, KRepeatType, KInvalid );
+							if(!isValidEntryDuration(rptParam.AsTInt32()))
+							{
+                                AppendErrorMessageL( KCmdAdd, KRepeatType, KInvalid );
+                                User::Leave( KErrBadName );
+							}
 
 							rrule = CRepeatInfo::NewL( rptParam.AsTInt32() );
 							CleanupStack::PushL( rrule );
@@ -3069,3 +3074,56 @@
 		}
 	return retValue;
 	}
+
+
+bool CCalendarInterface::isValidEntryDuration(int type)
+    {
+    TTime temp;
+    TDateTime temp1;
+    switch(type)
+        {
+        case TCalRRule::EDaily :
+            {
+            TTimeIntervalDays days = 1;
+            temp = iStTime + days;
+                      
+            }
+            break;
+
+        case TCalRRule::EWeekly :
+            {
+            TTimeIntervalDays days = 7;
+            temp = iStTime + days;
+                                        
+            }
+            break;
+
+        case TCalRRule::EMonthly :
+            {
+            TTimeIntervalMonths month = 1;
+            temp = iStTime + month;
+                  
+            }
+            break;
+
+        case TCalRRule::EYearly :
+            {
+            TTimeIntervalYears yr = 1;
+            temp = iStTime + yr;
+               
+            }
+            break;
+
+        }
+
+    if(temp < iEnTime)
+        {
+        return false;
+        }
+
+    else
+        {
+        return true;
+        }
+    
+    }