Fix for N_SE-46566
authorGaurav Bhatt <gaurav.bhatt@samsung.com>
Tue, 16 Jul 2013 12:30:22 +0000 (18:00 +0530)
committerGaurav Bhatt <gaurav.bhatt@samsung.com>
Tue, 16 Jul 2013 12:30:22 +0000 (18:00 +0530)
Change-Id: I79e219cec37dd3512cddf1376c0bff70899d1002
Signed-off-by: Gaurav Bhatt <gaurav.bhatt@samsung.com>
inc/ClEventListPresentationModel.h
src/ClEventListPresentationModel.cpp

index 0ada65d..1dd92d1 100644 (file)
@@ -114,6 +114,7 @@ private:
        result Construct(void);
        int ConvertDayOfWeek(int dayOfWeek) const;
        int FindGroupIndex(const Tizen::Base::DateTime& date, int start, int end) const;
+       int FindOriginalGroupIndex(const Tizen::Base::DateTime& date, int start, int end) const;
        void FireCalendarEventChangedEvent(void);
        const Tizen::Base::String GetMonthFormatterPattern(const Tizen::Base::String& fullDatePattern) const;
        const Tizen::Base::String GetYearFormatterPattern(const Tizen::Base::String& fullDatePattern) const;
index 2aa38f9..1e9d5b3 100644 (file)
@@ -450,7 +450,7 @@ EventListPresentationModel::GetDateTimeFromGroupIndex(int groupIndex) const
 int
 EventListPresentationModel::GetGroupIndex(const DateTime& date) const
 {
-       if (date < __minRange || date > __maxRange)
+       if ((__viewType != VIEW_TYPE_DELETE) && (date < __minRange || date > __maxRange))
        {
                AppLogException("%ls over range", date.ToString().GetPointer());
                return -1;
@@ -471,6 +471,12 @@ EventListPresentationModel::GetGroupIndex(const DateTime& date) const
                }
                return index;
        }
+       else if (__viewType == VIEW_TYPE_DELETE)
+       {
+               int index = FindOriginalGroupIndex(date, 0, __indexedOriginalEvents.GetCount() - 1);
+               return index;
+       }
+
 
        return FindGroupIndex(date, 0, __indexedEvents.GetCount() - 1);
 }
@@ -1097,6 +1103,37 @@ EventListPresentationModel::FindGroupIndex(const DateTime& date, int start, int
        return -1;
 }
 
+int
+EventListPresentationModel::FindOriginalGroupIndex(const DateTime& date, int start, int end) const
+{
+       if (start < end)
+       {
+               int mid = (start + end) >> 1;
+               const EventInstanceListNode* pNode = static_cast<const EventInstanceListNode*>(__indexedOriginalEvents.GetAt(mid));
+               if (IsSameDay(date, pNode->GetDate()) == true)
+               {
+                       return mid;
+               }
+
+               if (pNode->GetDate() > date)
+               {
+                       return FindOriginalGroupIndex(date, start, mid - 1);
+               }
+               return FindOriginalGroupIndex(date, mid + 1, end);
+       }
+       else if (start == end)
+       {
+               const EventInstanceListNode* pNode = static_cast<const EventInstanceListNode*>(__indexedOriginalEvents.GetAt(start));
+               if (IsSameDay(date, pNode->GetDate()) == true)
+               {
+                       return start;
+               }
+               return -1;
+       }
+
+       return -1;
+}
+
 void
 EventListPresentationModel::FireCalendarEventChangedEvent(void)
 {