From 0a038b7c0b1e399a7d6e1257a555cea4538ce219 Mon Sep 17 00:00:00 2001 From: Syed Khaja Moinuddin Date: Tue, 26 Mar 2013 11:33:31 +0900 Subject: [PATCH] Fixes in EditDate / EditTime w.r.t OnActivation / OnDeactivation. Signed-off-by: Syed Khaja Moinuddin Change-Id: Ib761aa03c6a6abfb44ae2b8020c068096c8583bf Signed-off-by: Syed Khaja Moinuddin --- src/ui/controls/FUiCtrl_DateTimeBar.cpp | 68 ++++++++++++++---------- src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp | 10 ++-- src/ui/controls/FUiCtrl_EditDate.cpp | 2 + src/ui/controls/FUiCtrl_EditDatePresenter.cpp | 42 +++++++++------ src/ui/controls/FUiCtrl_EditTime.cpp | 2 + src/ui/controls/FUiCtrl_EditTimePresenter.cpp | 62 ++++++++++++++------- src/ui/inc/FUiCtrl_DateTimeBar.h | 4 +- src/ui/inc/FUiCtrl_DateTimeBarPresenter.h | 2 +- 8 files changed, 121 insertions(+), 71 deletions(-) diff --git a/src/ui/controls/FUiCtrl_DateTimeBar.cpp b/src/ui/controls/FUiCtrl_DateTimeBar.cpp index 1a64190..213ca4e 100644 --- a/src/ui/controls/FUiCtrl_DateTimeBar.cpp +++ b/src/ui/controls/FUiCtrl_DateTimeBar.cpp @@ -94,9 +94,6 @@ _DateTimeBar::CreateDateTimeBarN(_Control& owner) pDateTimeBar->__pOwner = &owner; - // if SetActivationEnabled is removed, then remove IsActivatedOnOpen CallBack as well. - pDateTimeBar->SetActivationEnabled(false); - pDateTimeBar->__pDateTimeBarPresenter = _DateTimeBarPresenter::CreateInstanceN(*pDateTimeBar); r = GetLastResult(); SysTryCatch(NID_UI_CTRL, pDateTimeBar->__pDateTimeBarPresenter != null, , r, @@ -131,12 +128,6 @@ CATCH: return null; } -bool -_DateTimeBar::IsActivatedOnOpen(void) const -{ - return false; -} - result _DateTimeBar::SetPositionAndAlignment(const FloatPoint& point, _DateTimeBarAlignment alignment) { @@ -425,35 +416,31 @@ _DateTimeBar::OnAttachedToMainTree(void) { SetOwner(__pOwner); - int itemWidth = 0; + return _Window::OnAttachedToMainTree(); +} - if (GetSelectedBoxId() == DATETIME_ID_MONTH) - { - GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } - else if (GetSelectedBoxId() == DATETIME_ID_YEAR) - { - GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } - else - { - GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } +void +_DateTimeBar::OnActivated(void) +{ + RefreshItems(); + SetTouchCapture(true, true); - __pDateTimeBarPresenter->SetInitialAnimationValue(itemWidth); + return _Window::OnActivated(); +} - __pDateTimeBarPresenter->StartAnimationEffect(); +void +_DateTimeBar::OnDeactivated(void) +{ + ReleaseTouchCapture(); - SetTouchCapture(true, true); + GetOwner()->Invalidate(); - return _Window::OnAttachedToMainTree(); + return _Window::OnDeactivated(); } result _DateTimeBar::OnDetachingFromMainTree(void) { - ReleaseTouchCapture(); - return _Window::OnDetachingFromMainTree(); } @@ -615,6 +602,31 @@ _DateTimeBar::GetParentWindowBounds() const return __parentWindowBounds; } +void +_DateTimeBar::RefreshItems(void) +{ + float itemWidth = 0; + + if (GetSelectedBoxId() == DATETIME_ID_MONTH) + { + GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + else if (GetSelectedBoxId() == DATETIME_ID_YEAR) + { + GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + else + { + GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + + __pDateTimeBarPresenter->SetInitialAnimationValue(itemWidth); + + __pDateTimeBarPresenter->StartAnimationEffect(); + + return; +} + bool _DateTimeBar::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element) { diff --git a/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp b/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp index 362ab32..1dcf504 100755 --- a/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp +++ b/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp @@ -58,7 +58,7 @@ _DateTimeBarPresenter::_DateTimeBarPresenter(_DateTimeBar* pDateTimeBar) , __pBgColorReplacementBitmap(null) , __pArrowColorReplacementBitmap(null) , __isInitialAnimation(false) - , __initialAnimationValue(0) + , __initialAnimationValue(0.0f) , __pFont(null) { } @@ -1339,9 +1339,9 @@ _DateTimeBarPresenter::StartAnimationEffect(void) __isInitialAnimation = true; __distance = -10.0f; - if (__initialAnimationValue >= 0 ) + if (__initialAnimationValue >= 0.0f ) { - __initialAnimationValue = __initialAnimationValue + _CoordinateSystemUtils::ConvertToInteger(__distance); + __initialAnimationValue = __initialAnimationValue + __distance; StartFlickAnimationTimer(); LoadItems(); @@ -1350,7 +1350,7 @@ _DateTimeBarPresenter::StartAnimationEffect(void) } else { - __initialAnimationValue = 0; + __initialAnimationValue = 0.0f; __isInitialAnimation = false; ResetFlickAnimationTimer(); ValidateAndAdjustStartPosition(); @@ -1465,7 +1465,7 @@ _DateTimeBarPresenter::ValidateAndAdjustStartPosition(void) } void -_DateTimeBarPresenter::SetInitialAnimationValue(int animationValue) +_DateTimeBarPresenter::SetInitialAnimationValue(float animationValue) { __initialAnimationValue = animationValue; return; diff --git a/src/ui/controls/FUiCtrl_EditDate.cpp b/src/ui/controls/FUiCtrl_EditDate.cpp index a634c30..a52c8db 100644 --- a/src/ui/controls/FUiCtrl_EditDate.cpp +++ b/src/ui/controls/FUiCtrl_EditDate.cpp @@ -785,6 +785,8 @@ _EditDate::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo) { FloatRectangle absoluteBounds = GetAbsoluteBoundsF(); + SetFocused(true); + if (absoluteBounds.y != __absoluteBounds.y || absoluteBounds.height != __absoluteBounds.height) { CalculateDateTimeBarPosition(); diff --git a/src/ui/controls/FUiCtrl_EditDatePresenter.cpp b/src/ui/controls/FUiCtrl_EditDatePresenter.cpp index 7f43956..fcfbced 100644 --- a/src/ui/controls/FUiCtrl_EditDatePresenter.cpp +++ b/src/ui/controls/FUiCtrl_EditDatePresenter.cpp @@ -681,7 +681,7 @@ _EditDatePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou if (boxId < DATETIME_ID_YEAR || boxId > DATETIME_ID_DAY) { __selectedId = DATETIME_ID_NONE; - return true; + return false; } int minValue = -1; @@ -727,9 +727,6 @@ _EditDatePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou } __selectedId = boxId; - - __pEditDate->Invalidate(); - return true; } @@ -748,14 +745,22 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to _DateTimeId boxId = DATETIME_ID_NONE; boxId = GetBoxIdFromPosition(point); - - if (boxId != __selectedId) + if (boxId != __selectedId || boxId == DATETIME_ID_NONE) { + if (__pEditDate->GetDateTimeBar() != null && __pEditDate->GetDateTimeBar()->IsActivated()) + { + __pEditDate->GetDateTimeBar()->SetVisibleState(false); + __pEditDate->GetDateTimeBar()->Close(); + } + + Draw(); __selectedId = DATETIME_ID_NONE; + SetLastSelectedId(__selectedId); + + return true; } SetLastSelectedId(__selectedId); - __selectedId = DATETIME_ID_NONE; __lastSelectedValue = ""; _DateTimeUtils dateTimeUtils; @@ -775,9 +780,9 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } - __pEditDate->Invalidate(); + Draw(); - if (__pEditDate->GetDateTimeBar() != null && GetLastSelectedId() != DATETIME_ID_NONE) + if ((__pEditDate->GetDateTimeBar() != null) && (GetLastSelectedId() != DATETIME_ID_NONE)) { FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f); bounds = GetDateAreaBounds(GetLastSelectedId()); @@ -786,11 +791,19 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to bounds.x += absoluteBounds.x; __pEditDate->GetDateTimeBar()->CalculateArrowBounds(bounds); - __pEditDate->GetDateTimeBar()->SetVisibleState(true); - __pEditDate->GetDateTimeBar()->Close(); - __pEditDate->GetDateTimeBar()->Open(); + + if (__pEditDate->GetDateTimeBar()->IsActivated()) + { + __pEditDate->GetDateTimeBar()->RefreshItems(); + } + else + { + __pEditDate->GetDateTimeBar()->SetVisibleState(true); + __pEditDate->GetDateTimeBar()->Open(); + } } + __selectedId = DATETIME_ID_NONE; return true; } @@ -804,8 +817,6 @@ _EditDatePresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& to __selectedId = DATETIME_ID_NONE; - __pEditDate->Invalidate(); - return true; } @@ -824,7 +835,6 @@ _EditDatePresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touch __selectedId = DATETIME_ID_NONE; } - __pEditDate->Invalidate(); return false; } @@ -833,7 +843,7 @@ _EditDatePresenter::OnTouchMoveHandled(const _Control& control) { __touchMoveHandled = true; __selectedId = DATETIME_ID_NONE; - __pEditDate->Invalidate(); + return; } diff --git a/src/ui/controls/FUiCtrl_EditTime.cpp b/src/ui/controls/FUiCtrl_EditTime.cpp index e4068c2..b8af3e4 100644 --- a/src/ui/controls/FUiCtrl_EditTime.cpp +++ b/src/ui/controls/FUiCtrl_EditTime.cpp @@ -577,6 +577,8 @@ _EditTime::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo) { FloatRectangle absoluteBounds = GetAbsoluteBoundsF(); + SetFocused(true); + if (absoluteBounds.y != __absoluteBounds.y || absoluteBounds.height != __absoluteBounds.height) { CalculateDateTimeBarPosition(); diff --git a/src/ui/controls/FUiCtrl_EditTimePresenter.cpp b/src/ui/controls/FUiCtrl_EditTimePresenter.cpp index d2dd65a..c76ee2c 100755 --- a/src/ui/controls/FUiCtrl_EditTimePresenter.cpp +++ b/src/ui/controls/FUiCtrl_EditTimePresenter.cpp @@ -701,7 +701,6 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const { result r = E_SUCCESS; - Font font; Color textColor; _DateTimeId boxId = DATETIME_ID_NONE; @@ -915,16 +914,17 @@ _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou } else if (boxId == DATETIME_ID_AMPM) { + __selectedId = boxId; __bounds = ampmBounds; + Draw(); } else { __selectedId = DATETIME_ID_NONE; return false; } - __selectedId = boxId; - __pEditTime->Draw(); + __selectedId = boxId; return true; } @@ -952,21 +952,27 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to _DateTimeId boxId = GetBoxIdFromPosition(point); - if (boxId < 0) + if (boxId != __selectedId || boxId == DATETIME_ID_NONE) { - __selectedId = DATETIME_ID_NONE; - } + if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->SetVisibleState(false); + __pEditTime->GetDateTimeBar()->Close(); + } + + Draw(); - if (boxId != __selectedId) - { __selectedId = DATETIME_ID_NONE; + SetLastSelectedId(__selectedId); + + return true; } SetLastSelectedId(__selectedId); - __selectedId = DATETIME_ID_NONE; __lastSelectedValue = ""; _DateTimeUtils dateTimeUtils; + if (GetLastSelectedId() == DATETIME_ID_HOUR) { int hours = GetHour(); @@ -988,18 +994,29 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to __lastSelectedValue.Format(10, L"%02d", GetMinute()); PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } - - if (GetLastSelectedId() == DATETIME_ID_AMPM) + else if (GetLastSelectedId() == DATETIME_ID_AMPM) { SetAmEnabled(!GetAmEnabled()); __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED); __pEditTime->UpdateAccessibilityElement(); PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); + + __selectedId = DATETIME_ID_NONE; + + if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->SetVisibleState(false); + __pEditTime->GetDateTimeBar()->Close(); + } + + Draw(); + + return true; } - __pEditTime->Draw(); + Draw(); - if (__pEditTime->GetDateTimeBar() != null && boxId != DATETIME_ID_AMPM && GetLastSelectedId() != DATETIME_ID_NONE) + if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM) && (GetLastSelectedId() != DATETIME_ID_NONE)) { FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f); bounds = GetDisplayAreaBoundsFromHoursStyle(GetLastSelectedId()); @@ -1008,11 +1025,19 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to bounds.x += absoluteBounds.x; __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds); - __pEditTime->GetDateTimeBar()->SetVisibleState(true); - __pEditTime->GetDateTimeBar()->Close(); - __pEditTime->GetDateTimeBar()->Open(); + + if (__pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->RefreshItems(); + } + else + { + __pEditTime->GetDateTimeBar()->SetVisibleState(true); + __pEditTime->GetDateTimeBar()->Open(); + } } + __selectedId = DATETIME_ID_NONE; return true; } @@ -1026,8 +1051,6 @@ _EditTimePresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& to __selectedId = DATETIME_ID_NONE; - __pEditTime->Draw(); - return true; } @@ -1046,7 +1069,6 @@ _EditTimePresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touch __selectedId = DATETIME_ID_NONE; } - __pEditTime->Invalidate(); return false; } @@ -1055,7 +1077,7 @@ _EditTimePresenter::OnTouchMoveHandled(const _Control& control) { __touchMoveHandled = true; __selectedId = DATETIME_ID_NONE; - __pEditTime->Invalidate(); + return; } diff --git a/src/ui/inc/FUiCtrl_DateTimeBar.h b/src/ui/inc/FUiCtrl_DateTimeBar.h index 67f460c..cccaa3b 100644 --- a/src/ui/inc/FUiCtrl_DateTimeBar.h +++ b/src/ui/inc/FUiCtrl_DateTimeBar.h @@ -82,7 +82,6 @@ public: result FireActionEvent(int actionId); result FireDateTimeChangeEvent(_DateTimeChangeStatus status); - virtual bool IsActivatedOnOpen(void) const; virtual void OnDraw(void); virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo); virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo); @@ -91,6 +90,8 @@ public: virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control); virtual result OnAttachedToMainTree(void); virtual result OnDetachingFromMainTree(void); + virtual void OnActivated(void); + virtual void OnDeactivated(void); virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture); virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture); void AddAccessibilityElement(const Tizen::Graphics::FloatRectangle& itemBounds, const Tizen::Base::String& itemText); @@ -100,6 +101,7 @@ public: void SetFont(Tizen::Graphics::Font& pFont); void SetParentWindowBounds(Tizen::Graphics::FloatRectangle& parentWindowBounds); Tizen::Graphics::FloatRectangle GetParentWindowBounds() const; + void RefreshItems(void); // accessibility listener virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element); diff --git a/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h b/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h index 38d442f..c72e912 100644 --- a/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h +++ b/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h @@ -83,7 +83,7 @@ public: virtual bool OnFlickGestureDetected(int distanceX,int distanceY,int duration); void StartFlickAnimation(void); void StartAnimationEffect(void); - void SetInitialAnimationValue(int animationValue); + void SetInitialAnimationValue(float animationValue); void SetFont(Tizen::Graphics::Font& pFont); virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element); -- 2.7.4