Fix for JIRA N_SE-53794 in EditTime
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_EditTimePresenter.cpp
index 2a7f813..98e7b4a 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*
@@ -245,7 +260,7 @@ _EditTimePresenter::SetTimeConversion(void)
        int hour = GetHour();
        int minute = GetMinute();
 
-       if (__24hours == false)
+       if (!__24hours)
        {
                int max = DATETIME_HOUR_MAX_FOR_24NOTATION;
 
@@ -286,7 +301,7 @@ _EditTimePresenter::SetAmEnabled(bool amEnable)
        __amEnable = amEnable;
        int hour = GetHour();
 
-       if (__amEnable == true)
+       if (__amEnable)
        {
                __ampmString = textAm;
                if (hour >= DATETIME_HOUR_MAX_FOR_24NOTATION)
@@ -419,6 +434,9 @@ _EditTimePresenter::GetTextWidth(_DateTimeId boxId) const
 
        (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
 
+       pSimpleText->SetTextShadowEnabled(true);
+       pSimpleText->SetTextShadowOffset(FloatPoint(0.0f, -1.0f));
+
        dateObject.AppendElement(*pSimpleText);
        dateObject.SetFont(__pFont, 0, dateObject.GetTextLength());
        dim = dateObject.GetTextExtentF(0, dateObject.GetTextLength());
@@ -458,7 +476,7 @@ _EditTimePresenter::LoadResource(void)
        Color contentHighlightedColor;
        Color colonTextColor;
        Color colonTextDisabledColor;
-       Bitmap* pTempBitmap = null;
+
 
        GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_NORMAL, buttonNormalBgColor);
        GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_PRESSED, buttonPressedColor);
@@ -475,98 +493,36 @@ _EditTimePresenter::LoadResource(void)
 
        GET_SHAPE_CONFIG(EDITTIME::AMPM_FONT_SIZE, __pEditTime->GetOrientation(), __amPmTextSize);
 
-       r = GET_BITMAP_CONFIG_N(EDITTIME::COLON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::COLON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, colonTextColor, __pColonColorReplacementBitmap);
        SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pColonColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA),
-                                                                             colonTextColor);
-       SysTryCatch(NID_UI_CTRL, (__pColonColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       __pColonDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA),
-                       colonTextDisabledColor);
-       SysTryCatch(NID_UI_CTRL, (__pColonDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::COLON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, colonTextDisabledColor, __pColonDisabledColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAmPmBgNormalColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonNormalBgColor);
-       SysTryCatch(NID_UI_CTRL, (__pAmPmBgNormalColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                               "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
 
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, buttonNormalBgColor, __pAmPmBgNormalColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAmPmBgDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonDisabledBgColor);
-       SysTryCatch(NID_UI_CTRL, (__pAmPmBgDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonDisabledBgColor, __pAmPmBgDisabledColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAmPmBgPressedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonPressedColor);
-       SysTryCatch(NID_UI_CTRL, (__pAmPmBgPressedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonPressedColor, __pAmPmBgPressedColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAmPmBgHighlightedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonHighlightedColor);
-       SysTryCatch(NID_UI_CTRL, (__pAmPmBgHighlightedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonHighlightedColor, __pAmPmBgHighlightedColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pContentBgNormalColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentNormalBgColor);
-       SysTryCatch(NID_UI_CTRL, (__pContentBgNormalColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                               "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, contentNormalBgColor, __pContentBgNormalColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pContentBgPressedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentPressedColor);
-       SysTryCatch(NID_UI_CTRL, (__pContentBgPressedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                               "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, contentPressedColor, __pContentBgPressedColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pContentBgDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentDisabledBgColor);
-       SysTryCatch(NID_UI_CTRL, (__pContentBgDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
-       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, contentDisabledBgColor, __pContentBgDisabledColorReplacementBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pContentBgHighlightedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentHighlightedColor);
-       SysTryCatch(NID_UI_CTRL, (__pContentBgHighlightedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
-                                       "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+       r = GET_REPLACED_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, contentHighlightedColor, __pContentBgHighlightedColorReplacementBitmap);
+       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
        r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pAmPmBgEffectNomralBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
@@ -586,15 +542,15 @@ _EditTimePresenter::LoadResource(void)
        r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectDisabledBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-
-       delete pTempBitmap;
-       pTempBitmap = null;
-
        return r;
 
 CATCH:
-       delete pTempBitmap;
-       pTempBitmap = null;
+
+       delete __pColonColorReplacementBitmap;
+       __pColonColorReplacementBitmap = null;
+
+       delete __pColonDisabledColorReplacementBitmap;
+       __pColonDisabledColorReplacementBitmap = null;
 
        delete __pAmPmBgNormalColorReplacementBitmap;
        __pAmPmBgNormalColorReplacementBitmap = null;
@@ -648,7 +604,7 @@ CATCH:
 }
 
 result
-_EditTimePresenter::DrawResourceBitmap(Canvas& canvas, const FloatRectangle& bounds, Bitmap* pBitmap)
+_EditTimePresenter::DrawResourceBitmap(Canvas& canvas, const FloatRectangle& bounds, Bitmap* pBitmap, bool isCustomBitmap)
 {
        result r = E_SUCCESS;
 
@@ -664,7 +620,23 @@ _EditTimePresenter::DrawResourceBitmap(Canvas& canvas, const FloatRectangle& bou
        }
        else
        {
-               r = canvas.DrawBitmap(bounds, *pBitmap);
+               if (isCustomBitmap)
+               {
+                       Canvas *pContentCanvas = __pEditTime->GetCanvasN(bounds);
+                       SysTryReturnResult(NID_UI_CTRL, (pContentCanvas != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+                       FloatPoint position;
+
+                       position.x = (bounds.width - pBitmap->GetWidthF()) / 2;
+                       position.y = (bounds.height - pBitmap->GetHeightF()) / 2;
+                       r = pContentCanvas->DrawBitmap(position, *pBitmap);
+                       delete pContentCanvas;
+               }
+               else
+               {
+                       r = canvas.DrawBitmap(FloatPoint(bounds.x, bounds.y), *pBitmap);
+               }
+
                SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
        }
 
@@ -747,6 +719,9 @@ _EditTimePresenter::InitializeTextObject(void)
        SysTryReturn(NID_UI_CTRL, (pSimpleText != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
                        "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
+       pSimpleText->SetTextShadowEnabled(true);
+       pSimpleText->SetTextShadowOffset(FloatPoint(0.0f, -1.0f));
+
        __textObject.AppendElement(*pSimpleText);
 
        __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
@@ -768,7 +743,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);
 
@@ -789,7 +765,7 @@ _EditTimePresenter::Draw(void)
        hourBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
        minuteBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
 
-       if (__24hours == false)
+       if (!__24hours)
        {
                ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
 
@@ -831,7 +807,7 @@ _EditTimePresenter::Draw(void)
        colonBounds.x = hourBounds.x + hourBounds.width + colonMargin;
        colonBounds.y = hourBounds.y + (hourBounds.height - colonBounds.height) / 2.0f;
 
-       if (__title.IsEmpty() == false)
+       if (!__title.IsEmpty())
        {
                r = DrawTitle(*pCanvas);
                SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
@@ -846,9 +822,9 @@ _EditTimePresenter::Draw(void)
        r = DrawColon(*pCanvas, colonBounds);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       if (__24hours == false)
+       if (!__24hours)
        {
-               r = DrawResourceBitmap(*pCanvas, ampmBounds, pReplacementBitmap);
+               r = DrawResourceBitmap(*pCanvas, ampmBounds, pReplacementBitmap, isCustomBitmap);
                SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
                if (!isCustomBitmap)
@@ -871,8 +847,9 @@ _EditTimePresenter::DrawFocus(void)
 {
        FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
 
+       Canvas* pContentCanvas = null;
        Canvas* pCanvas = __pEditTime->GetCanvasN();
-       SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
+       SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
        if (__focusId == DATETIME_ID_HOUR)
        {
@@ -895,8 +872,15 @@ _EditTimePresenter::DrawFocus(void)
        }
        else
        {
-               r = pCanvas->DrawBitmap(bounds, *__pContentBgHighlightedColorReplacementBitmap);
+               pContentCanvas = __pEditTime->GetCanvasN(bounds);
+               SysTryCatch(NID_UI_CTRL, (pContentCanvas != null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               bounds.x = (bounds.width - __pContentBgHighlightedColorReplacementBitmap->GetWidthF()) / 2;
+               bounds.y = (bounds.height - __pContentBgHighlightedColorReplacementBitmap->GetHeightF()) / 2;
+
+               r = pContentCanvas->DrawBitmap(FloatPoint(bounds.x, bounds.y), *__pContentBgHighlightedColorReplacementBitmap);
                SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+               delete pContentCanvas;
        }
 
        delete pCanvas;
@@ -904,6 +888,7 @@ _EditTimePresenter::DrawFocus(void)
 
 CATCH:
        delete pCanvas;
+       delete pContentCanvas;
        return r;
 }
 
@@ -958,21 +943,11 @@ _EditTimePresenter::DrawContentBitmap(Canvas& canvas, const FloatRectangle& boun
                pReplacementBitmap = __pContentBgDisabledColorReplacementBitmap;
                pEffectBitmap = __pContentBgEffectDisabledBitmap;
        }
-       else if (__selectedId != boxId)
+       else if (GetLastSelectedId() != boxId)
        {
-               if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated() &&
-                               (GetLastSelectedId() == boxId))
-               {
-                       isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
-                       pReplacementBitmap = __pContentBgPressedColorReplacementBitmap;
-                       pEffectBitmap = __pContentBgEffectPressedBitmap;
-               }
-               else
-               {
-                       isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_NORMAL);
-                       pReplacementBitmap = __pContentBgNormalColorReplacementBitmap;
-                       pEffectBitmap = __pContentBgEffectNormalBitmap;
-               }
+               isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_NORMAL);
+               pReplacementBitmap = __pContentBgNormalColorReplacementBitmap;
+               pEffectBitmap = __pContentBgEffectNormalBitmap;
        }
        else
        {
@@ -981,7 +956,7 @@ _EditTimePresenter::DrawContentBitmap(Canvas& canvas, const FloatRectangle& boun
                pEffectBitmap = __pContentBgEffectPressedBitmap;
        }
 
-       r = DrawResourceBitmap(canvas, bounds, pReplacementBitmap);
+       r = DrawResourceBitmap(canvas, bounds, pReplacementBitmap, isCustomBitmap);
        SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        if (!isCustomBitmap)
@@ -1016,30 +991,23 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
        {
                GET_COLOR_CONFIG(EDITTIME::TEXT_NORMAL, textColor);
 
-               if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated() &&
-                               (GetLastSelectedId() == boxId))
-               {
-                       GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
-                       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
-               }
-
                if (boxId == DATETIME_ID_AMPM)
                {
-                       GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_NORMAL, textColor);
-               }
-
-               if (boxId > -1 && boxId == __selectedId)
-               {
-                       if (boxId == DATETIME_ID_AMPM)
+                       if (boxId == __selectedId)
                        {
                                GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_PRESSED, textColor);
                        }
                        else
                        {
-                               GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
-                               (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
+                               GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_NORMAL, textColor);
                        }
                }
+
+               else if (boxId > -1 && boxId == GetLastSelectedId())
+               {
+                       GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
+                       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
+               }
        }
 
        if (boxId != DATETIME_ID_AMPM)
@@ -1057,6 +1025,10 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
        __textObject.RemoveAll();
 
        (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
+
+       pSimpleText->SetTextShadowEnabled(true);
+       pSimpleText->SetTextShadowOffset(FloatPoint(0.0f, -1.0f));
+
        __textObject.AppendElement(*pSimpleText);
 
        if (boxId == DATETIME_ID_AMPM)
@@ -1095,7 +1067,7 @@ _EditTimePresenter::GetBoxIdFromPosition(const FloatPoint& point) const
        FloatRectangle hoursBounds(0.0f, 0.0f, 0.0f, 0.0f);
        FloatRectangle minutesBounds(0.0f, 0.0f, 0.0f, 0.0f);
 
-       if (__24hours == false)
+       if (!__24hours)
        {
                ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
        }
@@ -1108,15 +1080,15 @@ _EditTimePresenter::GetBoxIdFromPosition(const FloatPoint& point) const
                return displayBoxId;
        }
 
-       if (hoursBounds.Contains(point) == true)
+       if (hoursBounds.Contains(point))
        {
                displayBoxId = DATETIME_ID_HOUR;
        }
-       else if (minutesBounds.Contains(point) == true)
+       else if (minutesBounds.Contains(point))
        {
                displayBoxId = DATETIME_ID_MINUTE;
        }
-       else if (ampmBounds.Contains(point) == true)
+       else if (ampmBounds.Contains(point))
        {
                displayBoxId = DATETIME_ID_AMPM;
        }
@@ -1143,7 +1115,11 @@ _EditTimePresenter::SetFocusedElement()
        if (__isEnterKeyPressed)
        {
                __isEnterKeyPressed = false;
-               __isFocused = true;
+
+               if (__pEditTime->IsFocusModeStateEnabled())
+               {
+                       __isFocused = true;
+               }
        }
        if (__focusId == DATETIME_ID_NONE || __focusId == DATETIME_ID_AMPM)
        {
@@ -1166,6 +1142,7 @@ _EditTimePresenter::OnFocusLost(const _Control &source)
        if (!__isEnterKeyPressed || __focusId == DATETIME_ID_AMPM)
        {
                __focusId = DATETIME_ID_NONE;
+               __selectedId = DATETIME_ID_NONE;
        }
        __isFocused = false;
        __pEditTime->Invalidate();
@@ -1177,6 +1154,8 @@ _EditTimePresenter::OnFocusModeStateChanged(void)
 {
        __isFocused = false;
        __focusId = DATETIME_ID_NONE;
+       __isEnterKeyPressed = false;
+       __selectedId = DATETIME_ID_NONE;
        __pEditTime->Invalidate();
        return;
 }
@@ -1232,6 +1211,19 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                        __pEditTime->Invalidate();
                        break;
                }
+               case _KEY_ENTER:
+               {
+                       if (__focusId == DATETIME_ID_AMPM)
+                       {
+                               __selectedId = DATETIME_ID_AMPM;
+                               __pEditTime->Invalidate();
+                       }
+                       else
+                       {
+                               return false;
+                       }
+                       break;
+               }
 
                default:
                {
@@ -1242,17 +1234,16 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
 }
 
 bool
-_EditTimePresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
+_EditTimePresenter::OnKeyReleased(const _Control& source, const _KeyCode& keyCode)
 {
        if (!__isFocused)
        {
                return false;
        }
-       _KeyCode keyCode = keyInfo.GetKeyCode();
 
        if (__isAnimating)
        {
-               VisualElement *pEditTimeElement = __pEditTime->GetVisualElement();
+               VisualElementpEditTimeElement = __pEditTime->GetVisualElement();
                result r = GetLastResult();
                SysTryReturn(NID_UI_CTRL, (pEditTimeElement != null), false, r, "[%s] Propagating.", GetErrorMessage(r));
                pEditTimeElement->RemoveAllAnimations();
@@ -1328,6 +1319,7 @@ _EditTimePresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInf
                                SetAmEnabled(!GetAmEnabled());
                                __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
                                boxId = DATETIME_ID_AMPM;
+                               __selectedId = DATETIME_ID_NONE;
 
                                __pEditTime->Invalidate();
                        }
@@ -1376,7 +1368,7 @@ _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou
        hourBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
        minuteBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
 
-       if (__24hours == false)
+       if (!__24hours)
        {
                ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
        }
@@ -1393,7 +1385,7 @@ _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou
        {
                if (__pEditTime->GetDateTimeBar() != null)
                {
-                       if (__24hours == false)
+                       if (!__24hours)
                        {
                                if (GetHour() == 0)
                                {
@@ -1525,7 +1517,9 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to
 
                if (__pEditTime->GetDateTimeBar()->IsActivated())
                {
+                       __pEditTime->GetDateTimeBar()->RemoveAllAnimations();
                        __pEditTime->GetDateTimeBar()->Close();
+                       __pEditTime->GetDateTimeBar()->SetVisibleState(true);
                        __pEditTime->GetDateTimeBar()->Open();
                }
                else
@@ -1677,7 +1671,7 @@ _EditTimePresenter::Initialize(void)
                editTimeHeight = __pEditTime->GetBoundsF().height;
        }
 
-       if (__title.IsEmpty() == false)
+       if (!__title.IsEmpty())
        {
                SetTitleBounds();
                if (!__isEditTimeInitialized)
@@ -1775,8 +1769,8 @@ _EditTimePresenter::Animate(void)
        VisualElement* pEditTimeElement = null;
        VisualElementPropertyAnimation* pNewBoundsAnimation = null;
        VisualElementPropertyAnimation* pOldBoundsAnimation = null;
-       Canvas *pCanvas = null;
-       Canvas *pContentCanvas = null;
+       CanvaspCanvas = null;
+       CanvaspContentCanvas = null;
        Color contentBgColor;
        Color textNormalColor;
        Color textPressedColor;
@@ -1867,8 +1861,8 @@ _EditTimePresenter::Animate(void)
        pCanvas->Clear();
        rect.x = 0.0f;
        rect.y = 0.0f;
-       r = DrawResourceBitmap(*pCanvas, rect, __pContentBgPressedColorReplacementBitmap);
        isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
+       r = DrawResourceBitmap(*pCanvas, rect, __pContentBgPressedColorReplacementBitmap, isCustomBitmap);
 
        if (!isCustomBitmap)
        {
@@ -1904,7 +1898,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.");
@@ -1913,11 +1906,13 @@ _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.");
 
+       pOldSimpleText->SetTextShadowEnabled(true);
+       pOldSimpleText->SetTextShadowOffset(FloatPoint(0.0f, -1.0f));
+
        pCanvas = pOldVisualElement->GetCanvasN();
        r = GetLastResult();
        SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
@@ -1942,6 +1937,9 @@ _EditTimePresenter::Animate(void)
        pNewSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(newValue.GetPointer())), newValue.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
        SysTryCatch(NID_UI_CTRL, (pNewSimpleText != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
+       pNewSimpleText->SetTextShadowEnabled(true);
+       pNewSimpleText->SetTextShadowOffset(FloatPoint(0.0f, -1.0f));
+
        pCanvas = pNewVisualElement->GetCanvasN();
        r = GetLastResult();
        SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
@@ -1964,10 +1962,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;
@@ -1998,21 +1999,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