Fix for JIRA N_SE-53794 in EditTime
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_EditTimePresenter.cpp
index 7561f3b..98e7b4a 100644 (file)
@@ -604,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;
 
@@ -620,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));
        }
 
@@ -808,7 +824,7 @@ _EditTimePresenter::Draw(void)
 
        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)
@@ -831,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)
        {
@@ -855,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;
@@ -864,6 +888,7 @@ _EditTimePresenter::DrawFocus(void)
 
 CATCH:
        delete pCanvas;
+       delete pContentCanvas;
        return r;
 }
 
@@ -931,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)
@@ -1090,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)
        {
@@ -1113,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();
@@ -1125,6 +1155,7 @@ _EditTimePresenter::OnFocusModeStateChanged(void)
        __isFocused = false;
        __focusId = DATETIME_ID_NONE;
        __isEnterKeyPressed = false;
+       __selectedId = DATETIME_ID_NONE;
        __pEditTime->Invalidate();
        return;
 }
@@ -1212,7 +1243,7 @@ _EditTimePresenter::OnKeyReleased(const _Control& source, const _KeyCode& keyCod
 
        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();
@@ -1738,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;
@@ -1830,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)
        {