Fix for DCM-2356
authorAyush <ayush.sriv@samsung.com>
Fri, 16 Aug 2013 10:03:49 +0000 (15:33 +0530)
committerAyush <ayush.sriv@samsung.com>
Mon, 19 Aug 2013 09:18:06 +0000 (14:48 +0530)
Change-Id: Iaf07025954e9a008622e3f706941cc80b1db021c
Signed-off-by: Ayush <ayush.sriv@samsung.com>
src/ui/controls/FUiCtrl_EditDate.cpp
src/ui/controls/FUiCtrl_EditDatePresenter.cpp
src/ui/controls/FUiCtrl_EditTime.cpp
src/ui/controls/FUiCtrl_EditTimePresenter.cpp
src/ui/inc/FUiCtrl_EditDate.h
src/ui/inc/FUiCtrl_EditDatePresenter.h
src/ui/inc/FUiCtrl_EditTime.h
src/ui/inc/FUiCtrl_EditTimePresenter.h

index 9323287..04fa75a 100644 (file)
@@ -1179,4 +1179,25 @@ _EditDate::OnAncestorEnableStateChanged(const _Control& control)
        }
 }
 
+// Tizen::Ui::Animations::IAnimationTransactionEventListener
+void
+_EditDate::OnAnimationTransactionStarted(int transactionId)
+{
+       return;
+}
+
+void
+_EditDate::OnAnimationTransactionStopped(int transactionId)
+{
+       __pEditDatePresenter->EndTransaction();
+       return;
+}
+
+void
+_EditDate::OnAnimationTransactionFinished(int transactionId)
+{
+       __pEditDatePresenter->EndTransaction();
+       return;
+}
+
 }}}  // Tizen::Ui::Controls
index 57df0b5..2ebb91b 100644 (file)
  */
 
 #include <vconf.h>
+#include <FGrpColor.h>
+#include <FUiControl.h>
+#include <FUiAnimAnimationTransaction.h>
+#include <FUiAnimVisualElementPropertyAnimation.h>
 #include <FGrp_TextTextObject.h>
 #include <FGrp_TextTextSimple.h>
 #include <FGrp_CanvasImpl.h>
 #include <FGrp_BitmapImpl.h>
 #include <FGrp_FontImpl.h>
 #include "FUi_ResourceManager.h"
+#include "FUi_CoordinateSystemUtils.h"
+#include "FUiAnim_VisualElement.h"
 #include "FUiCtrl_EditDatePresenter.h"
 #include "FUiCtrl_EditDate.h"
 #include "FUiCtrl_DateTimeModel.h"
 #include "FUiCtrl_DateTimeUtils.h"
-#include "FUiControl.h"
-#include "FUiAnim_VisualElement.h"
-#include "FUiAnimVisualElementPropertyAnimation.h"
-#include "FGrpColor.h"
-#include "FUi_CoordinateSystemUtils.h"
 
 using namespace Tizen::Graphics;
 using namespace Tizen::Base;
@@ -80,6 +81,7 @@ _EditDatePresenter::_EditDatePresenter(void)
        , __elementWidth(0.0f)
        , __isEnterKeyPressed(false)
        , __isFocused(false)
+       , __transactionId(0)
 {
 }
 
@@ -112,8 +114,14 @@ _EditDatePresenter::~_EditDatePresenter(void)
        delete __pContentBgEffectDisabledBitmap;
        __pContentBgEffectDisabledBitmap = null;
 
+       if (__transactionId != 0)
+       {
+               AnimationTransaction::Stop(__transactionId);
+       }
+
        if (__pContentProvider != null)
        {
+               __pEditDate->GetVisualElement()->DetachChild(__pContentProvider);
                __pContentProvider->Destroy();
                __pContentProvider = null;
        }
@@ -237,7 +245,6 @@ _EditDatePresenter::Initialize(void)
        __isEditDateInitialized = true;
 
        CalculateAreaBounds();
-
        return r;
 }
 
@@ -1544,7 +1551,6 @@ _EditDatePresenter::Animate(void)
        pNewBoundsAnimation->SetPropertyName("bounds.position");
        pNewBoundsAnimation->SetStartValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, oldTextDim.height)));
        pNewBoundsAnimation->SetEndValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, 0.0f)));
-       pNewBoundsAnimation->SetVisualElementAnimationStatusEventListener(this);
 
        pOldBoundsAnimation = new (std::nothrow) VisualElementPropertyAnimation();
        SysTryCatch(NID_UI_CTRL, (pOldBoundsAnimation != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
@@ -1553,7 +1559,6 @@ _EditDatePresenter::Animate(void)
        pOldBoundsAnimation->SetPropertyName("bounds.position");
        pOldBoundsAnimation->SetStartValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, 0.0f)));
        pOldBoundsAnimation->SetEndValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, oldTextDim.height * -1.0f)));
-       pOldBoundsAnimation->SetVisualElementAnimationStatusEventListener(this);
 
        pOldSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(__lastSelectedValue.GetPointer())), __lastSelectedValue.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
        SysTryCatch(NID_UI_CTRL, (pOldSimpleText != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
@@ -1604,10 +1609,13 @@ _EditDatePresenter::Animate(void)
        pCanvas = null;
 
        pOldVisualElement->SetImplicitAnimationEnabled(false);
-       pOldVisualElement->AddAnimation(*pOldBoundsAnimation);
-
        pNewVisualElement->SetImplicitAnimationEnabled(false);
+
+       AnimationTransaction::Begin(__transactionId);
+       pOldVisualElement->AddAnimation(*pOldBoundsAnimation);
        pNewVisualElement->AddAnimation(*pNewBoundsAnimation);
+       AnimationTransaction::SetCurrentTransactionEventListener(__pEditDate);
+       AnimationTransaction::Commit();
 
        delete pOldBoundsAnimation;
        delete pNewBoundsAnimation;
@@ -1638,11 +1646,11 @@ CATCH:
 }
 
 void
-_EditDatePresenter::OnVisualElementAnimationFinished (const VisualElementAnimation &animation, const String &keyName, VisualElement &target, bool completedNormally)
+_EditDatePresenter::EndTransaction(void)
 {
        result r = E_SUCCESS;
-       __isAnimating = false;
 
+       __isAnimating = false;
        VisualElement* pEditDateElement = __pEditDate->GetVisualElement();
        r = GetLastResult();
        SysTryReturnVoidResult(NID_UI_CTRL, (pEditDateElement != null), r, "[%s] Propagating.", GetErrorMessage(r));
@@ -1653,10 +1661,10 @@ _EditDatePresenter::OnVisualElementAnimationFinished (const VisualElementAnimati
                pEditDateElement->DetachChild(*__pContentProvider);
                __pContentProvider->Destroy();
                __pContentProvider = null;
-               Draw();
        }
 
+       Draw();
+       __transactionId = 0;
        return;
 }
-
 }}} // Tizen::Ui::Controls
index 7446925..f022433 100644 (file)
@@ -1070,4 +1070,25 @@ _EditTime::OnAccessibilityValueDecreased(const _AccessibilityContainer&, const _
        return false;
 }
 
+// Tizen::Ui::Animations::IAnimationTransactionEventListener
+void
+_EditTime::OnAnimationTransactionStarted(int transactionId)
+{
+       return;
+}
+
+void
+_EditTime::OnAnimationTransactionStopped(int transactionId)
+{
+       __pEditTimePresenter->EndTransaction();
+       return;
+}
+
+void
+_EditTime::OnAnimationTransactionFinished(int transactionId)
+{
+       __pEditTimePresenter->EndTransaction();
+       return;
+}
+
 }}} // Controls
index 2c12be0..6638d0d 100644 (file)
  */
 
 #include <FSysSettingInfo.h>
+#include <FGrpColor.h>
+#include <FUiAnimAnimationTransaction.h>
+#include <FUiAnimVisualElementPropertyAnimation.h>
 #include <FGrp_BitmapImpl.h>
 #include <FGrp_TextTextObject.h>
 #include <FGrp_TextTextSimple.h>
 #include <FGrp_FontImpl.h>
 #include "FUi_CoordinateSystemUtils.h"
 #include "FUi_ResourceManager.h"
+#include "FUiAnim_VisualElement.h"
 #include "FUiCtrl_EditTimePresenter.h"
 #include "FUiCtrl_EditTime.h"
 #include "FUiCtrl_DateTimeModel.h"
 #include "FUiCtrl_DateTimeUtils.h"
-#include "FUiAnim_VisualElement.h"
-#include "FUiAnimVisualElementPropertyAnimation.h"
-#include "FGrpColor.h"
+
 
 using namespace Tizen::Graphics;
 using namespace Tizen::Base;
@@ -87,6 +89,7 @@ _EditTimePresenter::_EditTimePresenter(const String& title)
        , __isEditTimeInitialized(false)
        , __isEnterKeyPressed(false)
        , __isFocused(false)
+       , __transactionId(0)
 {
 }
 
@@ -145,6 +148,18 @@ _EditTimePresenter::~_EditTimePresenter(void)
 
        delete __pContentBgEffectDisabledBitmap;
        __pContentBgEffectDisabledBitmap = null;
+
+       if (__transactionId != 0)
+       {
+               AnimationTransaction::Stop(__transactionId);
+       }
+
+       if (__pContentProvider != null)
+       {
+               __pEditTime->GetVisualElement()->DetachChild(__pContentProvider);
+               __pContentProvider->Destroy();
+               __pContentProvider = null;
+       }
 }
 
 _EditTimePresenter*
@@ -768,7 +783,8 @@ _EditTimePresenter::Draw(void)
        }
 
        Canvas* pCanvas = __pEditTime->GetCanvasN();
-       SysAssertf((pCanvas != null), "Failed to get canvas.");
+       r = GetLastResult();
+       SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), r, "Failed to get canvas.");
 
        FloatRectangle colonBounds(0.0f, 0.0f, 0.0f, 0.0f);
 
@@ -1906,7 +1922,6 @@ _EditTimePresenter::Animate(void)
        pNewBoundsAnimation->SetPropertyName("bounds.position");
        pNewBoundsAnimation->SetStartValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, oldTextDim.height)));
        pNewBoundsAnimation->SetEndValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, 0.0f)));
-       pNewBoundsAnimation->SetVisualElementAnimationStatusEventListener(this);
 
        pOldBoundsAnimation = new (std::nothrow) VisualElementPropertyAnimation();
        SysTryCatch(NID_UI_CTRL, (pOldBoundsAnimation != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
@@ -1915,7 +1930,6 @@ _EditTimePresenter::Animate(void)
        pOldBoundsAnimation->SetPropertyName("bounds.position");
        pOldBoundsAnimation->SetStartValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, 0.0f)));
        pOldBoundsAnimation->SetEndValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, oldTextDim.height * -1.0f)));
-       pOldBoundsAnimation->SetVisualElementAnimationStatusEventListener(this);
 
        pOldSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(__lastSelectedValue.GetPointer())), __lastSelectedValue.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
        SysTryCatch(NID_UI_CTRL, (pOldSimpleText != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
@@ -1966,10 +1980,13 @@ _EditTimePresenter::Animate(void)
        pCanvas = null;
 
        pOldVisualElement->SetImplicitAnimationEnabled(false);
-       pOldVisualElement->AddAnimation(*pOldBoundsAnimation);
-
        pNewVisualElement->SetImplicitAnimationEnabled(false);
+
+       AnimationTransaction::Begin(__transactionId);
+       pOldVisualElement->AddAnimation(*pOldBoundsAnimation);
        pNewVisualElement->AddAnimation(*pNewBoundsAnimation);
+       AnimationTransaction::SetCurrentTransactionEventListener(__pEditTime);
+       AnimationTransaction::Commit();
 
        delete pOldBoundsAnimation;
        delete pNewBoundsAnimation;
@@ -2000,21 +2017,25 @@ CATCH:
 }
 
 void
-_EditTimePresenter::OnVisualElementAnimationFinished (const VisualElementAnimation &animation, const String &keyName, VisualElement &target, bool completedNormally)
+_EditTimePresenter::EndTransaction(void)
 {
        result r = E_SUCCESS;
-       __isAnimating = false;
 
+       __isAnimating = false;
        VisualElement* pEditTimeElement = __pEditTime->GetVisualElement();
        r = GetLastResult();
        SysTryReturnVoidResult(NID_UI_CTRL, (pEditTimeElement != null), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       pEditTimeElement->DetachChild(*__pContentProvider);
-       __pContentProvider->Destroy();
-       __pContentProvider = null;
+       if (__pContentProvider != null)
+       {
+               pEditTimeElement->DetachChild(*__pContentProvider);
+               __pContentProvider->Destroy();
+               __pContentProvider = null;
+
+       }
 
        Draw();
+       __transactionId = 0;
        return;
 }
-
 }}} // Tizen::Ui::Controls
index ee824bd..6a797c5 100644 (file)
@@ -26,6 +26,7 @@
 #define _FUI_CTRL_INTERNAL_EDITDATE_H_
 
 #include <FSysISettingEventListener.h>
+#include <FUiAnimIAnimationTransactionEventListener.h>
 #include "FUi_Control.h"
 #include "FUi_UiTouchEvent.h"
 #include "FUiCtrl_IDateTimeChangeEventListener.h"
@@ -46,6 +47,7 @@ class _OSP_EXPORT_ _EditDate
        : public _Control
        , public _IDateTimeChangeEventListener
        , public _IActionEventListener
+       , public Tizen::Ui::Animations::IAnimationTransactionEventListener
        , virtual public Tizen::Base::Runtime::IEventListener
        , virtual public _IUiEventListener
        , virtual public _IUiEventPreviewer
@@ -147,6 +149,11 @@ public:
        void OnAncestorEnableStateChanged(const _Control& control);
        void OnAncestorVisibleStateChanged(const _Control& control);
 
+       // Tizen::Ui::Animations::IAnimationTransactionEventListener
+       virtual void OnAnimationTransactionStarted(int transactionId);
+       virtual void OnAnimationTransactionStopped(int transactionId);
+       virtual void OnAnimationTransactionFinished(int transactionId);
+
 private:
        _EditDate(void);
 
index 9de6de3..b9f3fda 100644 (file)
@@ -28,7 +28,6 @@
 #include <FGrp_TextTextObject.h>
 #include "FUi_Control.h"
 #include "FUiCtrl_DateTimeDefine.h"
-#include "FUiAnimIVisualElementAnimationStatusEventListener.h"
 
 namespace Tizen { namespace Ui { namespace Controls
 {
@@ -38,7 +37,6 @@ class _DateTimeModel;
 
 class _EditDatePresenter
        : public Tizen::Base::Object
-    , Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
 {
 public:
        _EditDatePresenter(void);
@@ -87,10 +85,7 @@ public:
        virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
        virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
 
-       virtual void OnVisualElementAnimationFinished (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target, bool completedNormally);
-       virtual void OnVisualElementAnimationRepeated (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target, long currentRepeatCount){}
-       virtual void OnVisualElementAnimationStarted (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target){}
-
+       void EndTransaction(void);
 private:
        _EditDatePresenter(const _EditDatePresenter&);
        _EditDatePresenter& operator =(const _EditDatePresenter&);
@@ -149,6 +144,7 @@ private:
        static const int __dividerCount = 2;
        bool __isEnterKeyPressed;
        bool __isFocused;
+       int __transactionId;
 }; // _EditDatePresenter
 
 }}} // Tizen::Ui::Controls
index a444ac2..ae29ae4 100644 (file)
 #define _FUI_CTRL_INTERNAL_EDITTIME_H_
 
 #include <FSysISettingEventListener.h>
+#include <FUiAnimIAnimationTransactionEventListener.h>
 #include "FUi_Control.h"
 #include "FUi_UiTouchEvent.h"
+#include "FUi_IAccessibilityListener.h"
 #include "FUiCtrl_IDateTimeChangeEventListener.h"
 #include "FUiCtrl_DateTimeChangeEvent.h"
 #include "FUiCtrl_IActionEventListener.h"
-#include "FUi_IAccessibilityListener.h"
 #include "FUiCtrl_DateTimeBar.h"
 
 namespace Tizen { namespace Ui
@@ -48,6 +49,7 @@ class _OSP_EXPORT_ _EditTime
        , public _IDateTimeChangeEventListener
        , public _IActionEventListener
        , public _IAccessibilityListener
+       , public Tizen::Ui::Animations::IAnimationTransactionEventListener
        , virtual public Tizen::Base::Runtime::IEventListener
        , virtual public _IUiEventListener
        , virtual public _IUiEventPreviewer
@@ -145,6 +147,11 @@ public:
        virtual bool OnAccessibilityActionPerformed(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
        virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
        virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
+
+       // Tizen::Ui::Animations::IAnimationTransactionEventListener
+       virtual void OnAnimationTransactionStarted(int transactionId);
+       virtual void OnAnimationTransactionStopped(int transactionId);
+       virtual void OnAnimationTransactionFinished(int transactionId);
 private:
        _EditTime(void);
 
index b5e94b3..0b7cca7 100644 (file)
@@ -28,7 +28,6 @@
 #include <FGrp_TextTextObject.h>
 #include "FUi_Control.h"
 #include "FUiCtrl_DateTimeDefine.h"
-#include "FUiAnimIVisualElementAnimationStatusEventListener.h"
 
 namespace Tizen { namespace Ui { namespace Controls
 {
@@ -38,7 +37,6 @@ class _DateTimeModel;
 
 class _EditTimePresenter
        : public Tizen::Base::Object
-       , Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
 {
 public:
        _EditTimePresenter(const Tizen::Base::String& title);
@@ -89,11 +87,10 @@ public:
        void UpdateTimeFormat(void);
        void UpdateLastSelectedValue(_DateTimeId boxId, bool __isTouchPressed);
 
-       virtual void OnVisualElementAnimationFinished (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target, bool completedNormally);
-       virtual void OnVisualElementAnimationRepeated (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target, long currentRepeatCount){}
-       virtual void OnVisualElementAnimationStarted (const Tizen::Ui::Animations::VisualElementAnimation &animation, const Tizen::Base::String &keyName, Tizen::Ui::Animations::VisualElement &target){}
        result DrawFocus(void);
 
+       void EndTransaction(void);
+
 
 private:
        _EditTimePresenter(const _EditTimePresenter&);
@@ -166,6 +163,7 @@ private:
        bool __isEditTimeInitialized;
        bool __isEnterKeyPressed;
        bool __isFocused;
+       int __transactionId;
 }; // _EditTimePresenter
 
 }}} // Tizen::Ui::Controls