From 5b03c37f4507f71f2eea032a56c7fa4c447fc6eb Mon Sep 17 00:00:00 2001 From: SungWan Kim Date: Fri, 26 Apr 2013 17:53:45 +0900 Subject: [PATCH] Resolve N_SE-36463 issue. Change-Id: Ib6a8b3315be661e0fdb674c7695040d37b17b0de Signed-off-by: SungWan Kim --- src/ClDayPanel.cpp | 68 ++++++++++++++++++++++++++++++---------------------- src/ClMonthPanel.cpp | 58 ++++++++++++++++++++++++-------------------- src/ClYearPanel.cpp | 63 ++++++++++++++++++++++++++---------------------- 3 files changed, 107 insertions(+), 82 deletions(-) diff --git a/src/ClDayPanel.cpp b/src/ClDayPanel.cpp index 728d7e9..b00e2b0 100644 --- a/src/ClDayPanel.cpp +++ b/src/ClDayPanel.cpp @@ -1253,34 +1253,37 @@ DayPanel::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& curre minDateTime.AddYears(1); for (int i = VIEW_SCROLL_EFFECT_NEXT; i < VIEW_SCROLL_EFFECT_COUNT; ++i) { - DayEventPanel* pPanel = new (std::nothrow) DayEventPanel(); - DateTime date = __pPm->GetCurrentDate(); - switch (i) + if (__pPanelDayEvent[i] == null) { - case VIEW_SCROLL_EFFECT_NEXT: - date.AddDays(1); - if (date > maxDateTime) - { - DateTime minDate = minDateTime; - date.SetValue(minDate.GetYear(), minDate.GetMonth(), minDate.GetDay(), date.GetHour(), date.GetMinute()); - } - pPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, *__pPm); - break; - case VIEW_SCROLL_EFFECT_PREVIEW: - date.AddDays(-1); - if (date < minDateTime) + DayEventPanel* pPanel = new (std::nothrow) DayEventPanel(); + DateTime date = __pPm->GetCurrentDate(); + switch (i) { - DateTime maxDate = maxDateTime; - date.SetValue(maxDate.GetYear(), maxDate.GetMonth(), maxDate.GetDay(), date.GetHour(), date.GetMinute()); + case VIEW_SCROLL_EFFECT_NEXT: + date.AddDays(1); + if (date > maxDateTime) + { + DateTime minDate = minDateTime; + date.SetValue(minDate.GetYear(), minDate.GetMonth(), minDate.GetDay(), date.GetHour(), date.GetMinute()); + } + pPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, *__pPm); + break; + case VIEW_SCROLL_EFFECT_PREVIEW: + date.AddDays(-1); + if (date < minDateTime) + { + DateTime maxDate = maxDateTime; + date.SetValue(maxDate.GetYear(), maxDate.GetMonth(), maxDate.GetDay(), date.GetHour(), date.GetMinute()); + } + pPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, *__pPm); + break; } - pPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, *__pPm); - break; + pPanel->SetEventActionEventListener(*this); + __pPanningAnimationManager->AddView(*pPanel, (ViewScrollEffect)i); + pPanel->SetDateFocusEventListener(*this); + pPanel->SetScrollEventListener(*this); + __pPanelDayEvent[i] = pPanel; } - pPanel->SetEventActionEventListener(*this); - __pPanningAnimationManager->AddView(*pPanel, (ViewScrollEffect)i); - pPanel->SetDateFocusEventListener(*this); - pPanel->SetScrollEventListener(*this); - __pPanelDayEvent[i] = pPanel; } __pPanningAnimationManager->ResetPosition(); @@ -1298,10 +1301,13 @@ DayPanel::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextS __pPm->RemoveCalendarEventChangedEventListener(*this); __pPm->RemoveCurrentDateChangedEventListener(*this); - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); - __pPanelDayEvent[VIEW_SCROLL_EFFECT_NEXT] = null; - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); - __pPanelDayEvent[VIEW_SCROLL_EFFECT_PREVIEW] = null; + if (nextSceneId == IDSCN_YEAR || nextSceneId == IDSCN_MONTH || nextSceneId == IDSCN_LIST) + { + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); + __pPanelDayEvent[VIEW_SCROLL_EFFECT_NEXT] = null; + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); + __pPanelDayEvent[VIEW_SCROLL_EFFECT_PREVIEW] = null; + } AppLogDebug("Exit."); } @@ -1327,6 +1333,9 @@ DayPanel::OnCurrentDateChanged(const DateTime& currentDate, const DateTime& prev void DayPanel::OnDateFocused(const DateTime& focusedDate) { + __pPanningAnimationManager->CancelPanningAnimationEvent(); + Invalidate(true); + LinkedList* pArgs = new (std::nothrow) LinkedList(); DateTime* pDateTime = new (std::nothrow) DateTime(focusedDate); pDateTime->AddMinutes(-1); @@ -1345,6 +1354,9 @@ DayPanel::OnEventActionPerformed(const CalEventInstance& event, EventAction acti { if (actionId == EVENT_ACTION_SELECTION) { + __pPanningAnimationManager->CancelPanningAnimationEvent(); + Invalidate(true); + LinkedList* pArgs = new (std::nothrow) LinkedList(); pArgs->Add(new (std::nothrow) CalEventInstance(event)); result r = SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_EVENT_DETAILS, diff --git a/src/ClMonthPanel.cpp b/src/ClMonthPanel.cpp index daa90cb..d9d3a43 100644 --- a/src/ClMonthPanel.cpp +++ b/src/ClMonthPanel.cpp @@ -980,32 +980,35 @@ MonthPanel::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& cur minDateTime.AddYears(1); for (int i = VIEW_SCROLL_EFFECT_NEXT; i < VIEW_SCROLL_EFFECT_COUNT; ++i) { - MonthCalendarPanel* pPanel = new (std::nothrow) MonthCalendarPanel(); - DateTime date = __pPm->GetCurrentDate(); - switch (i) + if (__pPanelMonthCalendar[i] == null) { - case VIEW_SCROLL_EFFECT_NEXT: - date.AddMonths(1); - if (date > maxDateTime) - { - DateTime minDate = minDateTime; - date.SetValue(minDate.GetYear(), minDate.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); - } - pPanel->Initialize(Rectangle(0, Y_CALENDAR, GetWidth(), GetHeight()), date, *__pPm); - break; - case VIEW_SCROLL_EFFECT_PREVIEW: - date.AddMonths(-1); - if (date < minDateTime) + MonthCalendarPanel* pPanel = new (std::nothrow) MonthCalendarPanel(); + DateTime date = __pPm->GetCurrentDate(); + switch (i) { - DateTime maxDate = maxDateTime; - date.SetValue(maxDate.GetYear(), maxDate.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + case VIEW_SCROLL_EFFECT_NEXT: + date.AddMonths(1); + if (date > maxDateTime) + { + DateTime minDate = minDateTime; + date.SetValue(minDate.GetYear(), minDate.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + } + pPanel->Initialize(Rectangle(0, Y_CALENDAR, GetWidth(), GetHeight()), date, *__pPm); + break; + case VIEW_SCROLL_EFFECT_PREVIEW: + date.AddMonths(-1); + if (date < minDateTime) + { + DateTime maxDate = maxDateTime; + date.SetValue(maxDate.GetYear(), maxDate.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + } + pPanel->Initialize(Rectangle(0, Y_CALENDAR, GetWidth(), GetHeight()), date, *__pPm); + break; } - pPanel->Initialize(Rectangle(0, Y_CALENDAR, GetWidth(), GetHeight()), date, *__pPm); - break; + __pPanningAnimationManager->AddView(*pPanel, (ViewScrollEffect)i); + pPanel->SetDateFocusEventListener(*this); + __pPanelMonthCalendar[i] = pPanel; } - __pPanningAnimationManager->AddView(*pPanel, (ViewScrollEffect)i); - pPanel->SetDateFocusEventListener(*this); - __pPanelMonthCalendar[i] = pPanel; } __pPanningAnimationManager->ResetPosition(); @@ -1023,10 +1026,13 @@ MonthPanel::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nex __pPm->RemoveCalendarEventChangedEventListener(*this); __pPm->RemoveCurrentDateChangedEventListener(*this); - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); - __pPanelMonthCalendar[VIEW_SCROLL_EFFECT_NEXT] = null; - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); - __pPanelMonthCalendar[VIEW_SCROLL_EFFECT_PREVIEW] = null; + if (nextSceneId == IDSCN_YEAR || nextSceneId == IDSCN_DAY || nextSceneId == IDSCN_LIST) + { + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); + __pPanelMonthCalendar[VIEW_SCROLL_EFFECT_NEXT] = null; + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); + __pPanelMonthCalendar[VIEW_SCROLL_EFFECT_PREVIEW] = null; + } AppLogDebug("Exit."); } diff --git a/src/ClYearPanel.cpp b/src/ClYearPanel.cpp index dc00a2a..a7f62d0 100644 --- a/src/ClYearPanel.cpp +++ b/src/ClYearPanel.cpp @@ -482,34 +482,37 @@ YearPanel::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& curr // Create month calendars. for (int i = VIEW_SCROLL_EFFECT_NEXT; i < VIEW_SCROLL_EFFECT_COUNT; ++i) { - CalendarPanel* pCalendarPanel = new (std::nothrow) CalendarPanel(); - DateTime date = __pPm->GetCurrentDate(); - switch (i) + if (__pPanelYearCalendar[i] == null) { - case VIEW_SCROLL_EFFECT_NEXT: - date.AddYears(1); - if (date > maxDateTime) - { - DateTime minDate = minDateTime; - date.SetValue(minDate.GetYear(), date.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); - } - pCalendarPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, - __pBitmapWeekText, __pBitmapWeekdayText, __pBitmapHolidayText, __pBitmapTodayText, __pBitmapFocus); - break; - case VIEW_SCROLL_EFFECT_PREVIEW: - date.AddYears(-1); - if (date < minDateTime) + CalendarPanel* pCalendarPanel = new (std::nothrow) CalendarPanel(); + DateTime date = __pPm->GetCurrentDate(); + switch (i) { - DateTime maxDate = maxDateTime; - date.SetValue(maxDate.GetYear(), date.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + case VIEW_SCROLL_EFFECT_NEXT: + date.AddYears(1); + if (date > maxDateTime) + { + DateTime minDate = minDateTime; + date.SetValue(minDate.GetYear(), date.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + } + pCalendarPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, + __pBitmapWeekText, __pBitmapWeekdayText, __pBitmapHolidayText, __pBitmapTodayText, __pBitmapFocus); + break; + case VIEW_SCROLL_EFFECT_PREVIEW: + date.AddYears(-1); + if (date < minDateTime) + { + DateTime maxDate = maxDateTime; + date.SetValue(maxDate.GetYear(), date.GetMonth(), date.GetDay(), date.GetHour(), date.GetMinute()); + } + pCalendarPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, + __pBitmapWeekText, __pBitmapWeekdayText, __pBitmapHolidayText, __pBitmapTodayText, __pBitmapFocus); + break; } - pCalendarPanel->Initialize(Rectangle(0, 0, GetWidth(), GetHeight()), date, - __pBitmapWeekText, __pBitmapWeekdayText, __pBitmapHolidayText, __pBitmapTodayText, __pBitmapFocus); - break; + __pPanningAnimationManager->AddView(*pCalendarPanel, (ViewScrollEffect)i); + pCalendarPanel->SetDateFocusEventListener(*this); + __pPanelYearCalendar[i] = pCalendarPanel; } - __pPanningAnimationManager->AddView(*pCalendarPanel, (ViewScrollEffect)i); - pCalendarPanel->SetDateFocusEventListener(*this); - __pPanelYearCalendar[i] = pCalendarPanel; } __pPanningAnimationManager->ResetPosition(); @@ -525,10 +528,13 @@ YearPanel::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& next AppLogDebug("Enter."); __pPm->RemoveCurrentDateChangedEventListener(*this); - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); - __pPanelYearCalendar[VIEW_SCROLL_EFFECT_NEXT] = null; - __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); - __pPanelYearCalendar[VIEW_SCROLL_EFFECT_PREVIEW] = null; + if (nextSceneId == IDSCN_MONTH || nextSceneId == IDSCN_DAY || nextSceneId == IDSCN_LIST) + { + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_NEXT); + __pPanelYearCalendar[VIEW_SCROLL_EFFECT_NEXT] = null; + __pPanningAnimationManager->RemoveView(VIEW_SCROLL_EFFECT_PREVIEW); + __pPanelYearCalendar[VIEW_SCROLL_EFFECT_PREVIEW] = null; + } AppLogDebug("Exit."); } @@ -544,6 +550,7 @@ YearPanel::OnCurrentDateChanged(const DateTime& currentDate, const DateTime& pre void YearPanel::OnDateFocused(const DateTime& focusedDate) { + __pPanningAnimationManager->CancelPanningAnimationEvent(); __pPm->SetCurrentDate(focusedDate); SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_MONTH, -- 2.7.4