Fix for N_SE-46889
authorAmith Kumar Mahale <amith.m@samsung.com>
Thu, 18 Jul 2013 14:47:00 +0000 (20:17 +0530)
committerAmith Kumar Mahale <amith.m@samsung.com>
Thu, 18 Jul 2013 14:47:00 +0000 (20:17 +0530)
Change-Id: If8208b23ef27b391115f70573d059c2b0df59b78
Signed-off-by: Amith Kumar Mahale <amith.m@samsung.com>
src/ClEventListPresentationModel.cpp
src/ClEventPresentationModel.cpp

index 1e9d5b3..07bee17 100644 (file)
@@ -1686,14 +1686,43 @@ EventListPresentationModel::IsEditableAllEvent(const Tizen::Social::CalEventInst
 {
        CalEvent* pEvent = __pCalendarbook->GetEventN(event.GetOriginalEventId());
        RecordId baseId = pEvent->GetBaseEventId();
-       delete pEvent;
 
        if (baseId == INVALID_RECORD_ID && event.IsRecurring())
        {
-               return true;
+               const Recurrence* pRecurrence = pEvent->GetRecurrence();
+               if (pRecurrence->GetCounts() > 1)
+               {
+                       return true;
+               }
+               else if (pRecurrence->GetUntil())
+               {
+                       DateTime untilDateChecker = ResourceManager::ConvertUtcTimeToWallTime(pEvent->GetStartTime());
+                       switch (pRecurrence->GetFrequency())
+                       {
+                       case FREQ_DAILY:
+                               untilDateChecker.AddDays(pRecurrence->GetInterval());
+                               break;
+                       case FREQ_WEEKLY:
+                               untilDateChecker.AddDays(7 * pRecurrence->GetInterval());
+                               break;
+                       case FREQ_MONTHLY:
+                               untilDateChecker.AddMonths(pRecurrence->GetInterval());
+                               break;
+                       case FREQ_YEARLY:
+                               untilDateChecker.AddYears(pRecurrence->GetInterval());
+                               break;
+                       }
+
+                       if (*pRecurrence->GetUntil() >= untilDateChecker)
+                       {
+                               return true;
+                       }
+               }
+               return false;
        }
        else
        {
                return false;
        }
+       delete pEvent;
 }
index 6321ddc..b04fbdc 100644 (file)
@@ -478,7 +478,35 @@ EventPresentationModel::IsEditableAllEvent(void) const
 {
        if (__pEvent->GetBaseEventId() == INVALID_RECORD_ID && __pRecurrence)
        {
-               return true;
+               if (__pRecurrence->GetCounts() > 1)
+               {
+                       return true;
+               }
+               else if (__pRecurrence->GetUntil())
+               {
+                       DateTime untilDateChecker = ResourceManager::ConvertUtcTimeToWallTime(__pEvent->GetStartTime());
+                       switch (__pRecurrence->GetFrequency())
+                       {
+                       case FREQ_DAILY:
+                               untilDateChecker.AddDays(__pRecurrence->GetInterval());
+                               break;
+                       case FREQ_WEEKLY:
+                               untilDateChecker.AddDays(7 * __pRecurrence->GetInterval());
+                               break;
+                       case FREQ_MONTHLY:
+                               untilDateChecker.AddMonths(__pRecurrence->GetInterval());
+                               break;
+                       case FREQ_YEARLY:
+                               untilDateChecker.AddYears(__pRecurrence->GetInterval());
+                               break;
+                       }
+
+                       if (*__pRecurrence->GetUntil() >= untilDateChecker)
+                       {
+                               return true;
+                       }
+               }
+               return false;
        }
        else
        {