Merging EditDateTime & DateTimePicker Changes from RSA-master to RSA-tizen2.1
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_EditTimePresenter.cpp
old mode 100755 (executable)
new mode 100644 (file)
index f114d9c..5c43b9a
@@ -2,14 +2,14 @@
 // Open Service Platform
 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Apache License, Version 2.0 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://floralicense.org/license/
+//     http://www.apache.org/licenses/LICENSE-2.0/
 //
 // Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
+// distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
@@ -62,11 +62,19 @@ _EditTimePresenter::_EditTimePresenter(const String& title)
        , __pAmPmBgNormalColorReplacementBitmap(null)
        , __pAmPmBgDisabledColorReplacementBitmap(null)
        , __pAmPmBgPressedColorReplacementBitmap(null)
+       , __pAmPmBgHighlightedColorReplacementBitmap(null)
        , __pAmPmBgEffectNomralBitmap(null)
        , __pAmPmBgEffectPressedBitmap(null)
        , __pAmPmBgEffectDisabledBitmap(null)
        , __pColonColorReplacementBitmap(null)
        , __pColonDisabledColorReplacementBitmap(null)
+       , __pContentBgNormalColorReplacementBitmap(null)
+       , __pContentBgDisabledColorReplacementBitmap(null)
+       , __pContentBgPressedColorReplacementBitmap(null)
+       , __pContentBgHighlightedColorReplacementBitmap(null)
+       , __pContentBgEffectNormalBitmap(null)
+       , __pContentBgEffectPressedBitmap(null)
+       , __pContentBgEffectDisabledBitmap(null)
        , __pContentProvider(null)
        , __textObject()
        , __pFont(null)
@@ -76,6 +84,9 @@ _EditTimePresenter::_EditTimePresenter(const String& title)
        , __timeFontSize(0.0f)
        , __isAnimating(false)
        , __isEditTimeInitialized(false)
+       , __focusStatus(FOCUS_NONE)
+       , __isEnterKeyPressed(false)
+       , __isFocused(false)
 {
 }
 
@@ -96,6 +107,9 @@ _EditTimePresenter::~_EditTimePresenter(void)
        delete __pAmPmBgPressedColorReplacementBitmap;
        __pAmPmBgPressedColorReplacementBitmap = null;
 
+       delete __pAmPmBgHighlightedColorReplacementBitmap;
+       __pAmPmBgHighlightedColorReplacementBitmap = null;
+
        delete __pAmPmBgEffectNomralBitmap;
        __pAmPmBgEffectNomralBitmap = null;
 
@@ -110,6 +124,27 @@ _EditTimePresenter::~_EditTimePresenter(void)
 
        delete __pColonDisabledColorReplacementBitmap;
        __pColonDisabledColorReplacementBitmap = null;
+
+       delete __pContentBgNormalColorReplacementBitmap;
+       __pContentBgNormalColorReplacementBitmap = null;
+
+       delete __pContentBgDisabledColorReplacementBitmap;
+       __pContentBgDisabledColorReplacementBitmap = null;
+
+       delete __pContentBgPressedColorReplacementBitmap;
+       __pContentBgPressedColorReplacementBitmap = null;
+
+       delete __pContentBgHighlightedColorReplacementBitmap;
+       __pContentBgHighlightedColorReplacementBitmap = null;
+
+       delete __pContentBgEffectNormalBitmap;
+       __pContentBgEffectNormalBitmap = null;
+
+       delete __pContentBgEffectPressedBitmap;
+       __pContentBgEffectPressedBitmap = null;
+
+       delete __pContentBgEffectDisabledBitmap;
+       __pContentBgEffectDisabledBitmap = null;
 }
 
 _EditTimePresenter*
@@ -244,8 +279,9 @@ _EditTimePresenter::SetAmEnabled(bool amEnable)
        String textAm;
        String textPm;
 
-       GET_STRING_CONFIG(IDS_COM_BODY_AM, textAm);
-       GET_STRING_CONFIG(IDS_COM_POP_PM, textPm);
+       _DateTimeUtils dateTimeUtils;
+       dateTimeUtils.GetAmPm(textAm, AM_TYPE);
+       dateTimeUtils.GetAmPm(textPm, PM_TYPE);
 
        __amEnable = amEnable;
        int hour = GetHour();
@@ -284,9 +320,9 @@ _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId)
 
        FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
 
-       float width = 0.0f;
+       float editTimeHeight = 0.0f;
        float colonWidth = 0.0f;
-       float margin = 0.0f;
+       float timeAmPmMargin = 0.0f;
        float colonMargin = 0.0f;
        float timeElementWidth = 0.0f;
        float amPmHeight = 0.0f;
@@ -294,22 +330,23 @@ _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId)
        float titleTimeMargin = 0.0f;
        float leftMargin = 0.0f;
 
-       GET_SHAPE_CONFIG(EDITTIME::TIME_WIDTH, __pEditTime->GetOrientation(), width);
-       GET_SHAPE_CONFIG(EDITTIME::HEIGHT, __pEditTime->GetOrientation(), bounds.height);
+       GET_SHAPE_CONFIG(EDITTIME::HEIGHT, __pEditTime->GetOrientation(), editTimeHeight);
        GET_SHAPE_CONFIG(EDITTIME::COLON_WIDTH, __pEditTime->GetOrientation(), colonWidth);
-       GET_SHAPE_CONFIG(EDITTIME::TIME_AMPM_MARGIN, __pEditTime->GetOrientation(), margin);
-       GET_SHAPE_CONFIG(EDITTIME::TIME_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), leftMargin);
+       GET_SHAPE_CONFIG(EDITTIME::TIME_AMPM_MARGIN, __pEditTime->GetOrientation(), timeAmPmMargin);
        GET_SHAPE_CONFIG(EDITTIME::COLON_MARGIN, __pEditTime->GetOrientation(), colonMargin);
-       GET_SHAPE_CONFIG(EDITTIME::HOUR_MINUTE_WIDTH, __pEditTime->GetOrientation(), timeElementWidth);
        GET_SHAPE_CONFIG(EDITTIME::AMPM_HEIGHT, __pEditTime->GetOrientation(), amPmHeight);
        GET_SHAPE_CONFIG(EDITTIME::TITLE_TIME_MARGIN, __pEditTime->GetOrientation(), titleTimeMargin);
        GET_SHAPE_CONFIG(EDITTIME::TIME_HEIGHT, __pEditTime->GetOrientation(), timeHeight);
 
+       GET_SHAPE_CONFIG(EDITTIME::TIME_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), leftMargin);
+
        if (__pEditTime->GetBoundsF().height > bounds.height)
        {
-               bounds.height = __pEditTime->GetBoundsF().height;
+               editTimeHeight = __pEditTime->GetBoundsF().height;
        }
 
+       bounds.y = (editTimeHeight - timeHeight) / 2.0f;
+
        if (!__title.IsEmpty())
        {
                if (displayBoxId == DATETIME_ID_AMPM)
@@ -319,16 +356,13 @@ _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId)
                else
                {
                        bounds.y = __titleBounds.y + __titleBounds.height + titleTimeMargin;
-                       bounds.height = timeHeight;
                }
        }
 
-       if (__pEditTime->GetOrientation() == _CONTROL_ORIENTATION_LANDSCAPE)
-       {
-               leftMargin = 0.0f;
-       }
+       bounds.x = leftMargin;
+       bounds.height = timeHeight;
 
-       bounds.x = leftMargin + ((width - (2.0f * timeElementWidth + colonWidth + 2.0f * colonMargin)) / 2.0f);
+       timeElementWidth = GetTimeElementWidth();
 
        if (displayBoxId == DATETIME_ID_HOUR)
        {
@@ -336,16 +370,16 @@ _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId)
        }
        else if (displayBoxId == DATETIME_ID_MINUTE)
        {
-               bounds.x = bounds.x + timeElementWidth + colonWidth + 2.0f * colonMargin;
+               bounds.x = bounds.x + timeElementWidth + colonWidth + (2.0f * colonMargin);
                bounds.width = timeElementWidth;
        }
        else if (displayBoxId == DATETIME_ID_AMPM)
        {
-               bounds.x = leftMargin + width + margin;
+               bounds.x = leftMargin + (2.0f * timeElementWidth) + colonWidth + (2.0f * colonMargin) + timeAmPmMargin;
 
                if (__title.IsEmpty())
                {
-                       bounds.y = bounds.y + (bounds.height - amPmHeight) / 2.0f;
+                       bounds.y = (editTimeHeight - amPmHeight) / 2.0f;
                }
 
                GET_SHAPE_CONFIG(EDITTIME::AMPM_WIDTH, __pEditTime->GetOrientation(), bounds.width);
@@ -355,13 +389,51 @@ _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId)
        return bounds;
 }
 
+float
+_EditTimePresenter::GetTextWidth(_DateTimeId boxId) const
+{
+       result r = E_SUCCESS;
+       FloatDimension dim;
+       TextObject dateObject;
+       String hourString;
+       String minuteString;
+
+       hourString.Format(10, L"%02d", GetHour());
+       minuteString.Format(10, L"%02d", GetMinute());
+
+       r = dateObject.Construct();
+       SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       TextSimple* pSimpleText = null;
+
+       if (boxId == DATETIME_ID_HOUR)
+       {
+               pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(hourString.GetPointer())), hourString.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
+       }
+       else if (boxId == DATETIME_ID_MINUTE)
+       {
+               pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(minuteString.GetPointer())), minuteString.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
+       }
+
+       SysTryReturn(NID_UI_CTRL, (pSimpleText != null), dim.width, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+       (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
+
+       dateObject.AppendElement(*pSimpleText);
+       dateObject.SetFont(__pFont, 0, dateObject.GetTextLength());
+       dim = dateObject.GetTextExtentF(0, dateObject.GetTextLength());
+
+       dateObject.RemoveAll();
+       return dim.width;
+}
+
 void
 _EditTimePresenter::SetTitleBounds(void)
 {
-       GET_SHAPE_CONFIG(EDITTIME::TIME_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), __titleBounds.x);
-       GET_SHAPE_CONFIG(EDITTIME::WIDTH, __pEditTime->GetOrientation(), __titleBounds.width);
+       GET_SHAPE_CONFIG(EDITTIME::TITLE_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), __titleBounds.x);
        GET_SHAPE_CONFIG(EDITTIME::TITLE_HEIGHT, __pEditTime->GetOrientation(), __titleBounds.height);
 
+       __titleBounds.width = __pEditTime->GetBoundsF().width - __titleBounds.x;
        return;
 }
 
@@ -378,14 +450,26 @@ _EditTimePresenter::LoadResource(void)
 
        Color buttonNormalBgColor;
        Color buttonDisabledBgColor;
-       Color buttonNormalPressedColor;
+       Color buttonPressedColor;
+       Color buttonHighlightedColor;
+       Color contentNormalBgColor;
+       Color contentDisabledBgColor;
+       Color contentPressedColor;
+       Color contentHighlightedColor;
        Color colonTextColor;
        Color colonTextDisabledColor;
        Bitmap* pTempBitmap = null;
 
        GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_NORMAL, buttonNormalBgColor);
-       GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_PRESSED, buttonNormalPressedColor);
+       GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_PRESSED, buttonPressedColor);
        GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_DISABLED, buttonDisabledBgColor);
+       GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_HIGHLIGHTED, buttonHighlightedColor);
+
+       GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_NORMAL, contentNormalBgColor);
+       GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_DISABLED, contentDisabledBgColor);
+       GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_PRESSED, contentPressedColor);
+       GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_HIGHLIGHTED, contentHighlightedColor);
+
        GET_COLOR_CONFIG(EDITTIME::TEXT_NORMAL, colonTextColor);
        GET_COLOR_CONFIG(EDITTIME::TEXT_DISABLED, colonTextDisabledColor);
 
@@ -394,12 +478,12 @@ _EditTimePresenter::LoadResource(void)
        r = GET_BITMAP_CONFIG_N(EDITTIME::COLON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
        SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pColonColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_WHITE),
+       __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_WHITE),
+       __pColonDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA),
                        colonTextDisabledColor);
        SysTryCatch(NID_UI_CTRL, (__pColonDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
                        "[%s] Propagating.", GetErrorMessage(GetLastResult()));
@@ -417,7 +501,7 @@ _EditTimePresenter::LoadResource(void)
        delete pTempBitmap;
        pTempBitmap = null;
 
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
        __pAmPmBgDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonDisabledBgColor);
@@ -427,13 +511,63 @@ _EditTimePresenter::LoadResource(void)
        delete pTempBitmap;
        pTempBitmap = null;
 
-       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
+       r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAmPmBgPressedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonNormalPressedColor);
+       __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);
+       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);
+       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);
+       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);
+       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);
+       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_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));
 
@@ -443,6 +577,15 @@ _EditTimePresenter::LoadResource(void)
        r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, __pAmPmBgEffectDisabledBitmap);
        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
 
+       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectNormalBitmap);
+       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectPressedBitmap);
+       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       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;
@@ -459,15 +602,48 @@ CATCH:
        delete __pAmPmBgPressedColorReplacementBitmap;
        __pAmPmBgPressedColorReplacementBitmap = null;
 
+       delete __pAmPmBgDisabledColorReplacementBitmap;
+       __pAmPmBgDisabledColorReplacementBitmap = null;
+
+       delete __pAmPmBgHighlightedColorReplacementBitmap;
+       __pAmPmBgHighlightedColorReplacementBitmap = null;
+
+       delete __pContentBgNormalColorReplacementBitmap;
+       __pContentBgNormalColorReplacementBitmap = null;
+
+       delete __pContentBgPressedColorReplacementBitmap;
+       __pContentBgPressedColorReplacementBitmap = null;
+
+       delete __pContentBgDisabledColorReplacementBitmap;
+       __pContentBgDisabledColorReplacementBitmap = null;
+
+       delete __pContentBgHighlightedColorReplacementBitmap;
+       __pContentBgHighlightedColorReplacementBitmap = null;
+
        delete __pAmPmBgEffectNomralBitmap;
        __pAmPmBgEffectNomralBitmap = null;
 
        delete __pAmPmBgEffectPressedBitmap;
        __pAmPmBgEffectPressedBitmap = null;
 
+       delete __pAmPmBgEffectDisabledBitmap;
+       __pAmPmBgEffectDisabledBitmap = null;
+
+       delete __pContentBgEffectNormalBitmap;
+       __pContentBgEffectNormalBitmap = null;
+
+       delete __pContentBgEffectPressedBitmap;
+       __pContentBgEffectPressedBitmap = null;
+
+       delete __pContentBgEffectDisabledBitmap;
+       __pContentBgEffectDisabledBitmap = null;
+
        delete __pColonColorReplacementBitmap;
        __pColonColorReplacementBitmap = null;
 
+       delete __pColonDisabledColorReplacementBitmap;
+       __pColonDisabledColorReplacementBitmap = null;
+
        return r;
 }
 
@@ -495,6 +671,41 @@ _EditTimePresenter::DrawResourceBitmap(Canvas& canvas, const FloatRectangle& bou
        return r;
 }
 
+float
+_EditTimePresenter::GetTimeElementWidth(void) const
+{
+       FloatRectangle bounds;
+       FloatDimension minSize;
+       bounds = __pEditTime->GetBoundsF();
+
+       float timeElementWidth = 0.0f;
+       float timeElementMinWidth = 0.0f;
+       float editTimeWidth = 0.0f;
+
+       GET_SHAPE_CONFIG(EDITTIME::HOUR_MINUTE_WIDTH, __pEditTime->GetOrientation(), timeElementWidth);
+       GET_SHAPE_CONFIG(EDITTIME::HOUR_MINUTE_MIN_WIDTH, __pEditTime->GetOrientation(), timeElementMinWidth);
+       GET_SHAPE_CONFIG(EDITTIME::WIDTH, __pEditTime->GetOrientation(), editTimeWidth);
+
+       GET_DIMENSION_CONFIG(EDITTIME::MIN_SIZE, __pEditTime->GetOrientation(), minSize);
+
+       if (bounds.width >= editTimeWidth)
+       {
+               return timeElementWidth;
+       }
+
+       if (bounds.width <= minSize.width)
+       {
+               timeElementWidth = timeElementMinWidth;
+       }
+       else if (bounds.width < editTimeWidth && bounds.width > minSize.width)
+       {
+               timeElementWidth = timeElementWidth -
+                               ((timeElementWidth - timeElementMinWidth) / (editTimeWidth - minSize.width)) * (editTimeWidth - bounds.width);
+       }
+
+       return timeElementWidth;
+}
+
 result
 _EditTimePresenter::InitializeTitleObject(void)
 {
@@ -519,6 +730,7 @@ _EditTimePresenter::InitializeTitleObject(void)
        __titleObject.SetAlignment(TEXT_OBJECT_ALIGNMENT_LEFT | TEXT_OBJECT_ALIGNMENT_MIDDLE);
        __titleObject.SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
        __titleObject.SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
+       __titleObject.SetTextObjectEllipsisType(TEXT_OBJECT_ELLIPSIS_TYPE_TAIL);
 
        return r;
 }
@@ -599,15 +811,6 @@ _EditTimePresenter::Draw(void)
                        pReplacementBitmap = __pAmPmBgPressedColorReplacementBitmap;
                        pEffectBitmap = __pAmPmBgEffectPressedBitmap;
                }
-
-               r = DrawResourceBitmap(*pCanvas, ampmBounds, pReplacementBitmap);
-               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
-
-               if (!isCustomBitmap)
-               {
-                       r = DrawResourceBitmap(*pCanvas, ampmBounds, pEffectBitmap);
-                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
-               }
        }
 
        if (GetHour() >= DATETIME_HOUR_MAX_FOR_24NOTATION)
@@ -634,24 +837,81 @@ _EditTimePresenter::Draw(void)
                SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
        }
 
-       r = DrawText(*pCanvas, hourBounds, __hourString);
+       r = DrawText(*pCanvas, hourBounds, __hourString, DATETIME_ID_HOUR);
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = DrawText(*pCanvas, minuteBounds, __minuteString, DATETIME_ID_MINUTE);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       r = DrawText(*pCanvas, minuteBounds, __minuteString);
+       r = DrawColon(*pCanvas, colonBounds);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        if (__24hours == false)
        {
-               r = DrawText(*pCanvas, ampmBounds, __ampmString, __amPmTextSize);
+               r = DrawResourceBitmap(*pCanvas, ampmBounds, pReplacementBitmap);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+
+               if (!isCustomBitmap)
+               {
+                       r = DrawResourceBitmap(*pCanvas, ampmBounds, pEffectBitmap);
+                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+               }
+
+               r = DrawText(*pCanvas, ampmBounds, __ampmString, DATETIME_ID_AMPM, __amPmTextSize);
                SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
        }
 
-       r = DrawColon(*pCanvas, colonBounds);
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+       if (__pEditTime->IsFocused())
+       {
+               DrawFocus();
+       }
 
 CATCH:
        delete pCanvas;
+       return r;
+}
+
+result
+_EditTimePresenter::DrawFocus(void)
+{
+       FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
+
+       Canvas* pCanvas = __pEditTime->GetCanvasN();
+       SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
+
+       if (__focusStatus == FOCUS_HOUR)
+       {
+               bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
+       }
+       else if (__focusStatus == FOCUS_MINUTE)
+       {
+               bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
+       }
+       else if (__focusStatus == FOCUS_AMPM)
+       {
+               bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
+       }
+       result r = E_SUCCESS;
 
+       bounds.y = bounds.y - (__adjustFocusHeight / 2.0f);
+       bounds.height = bounds.height + __adjustFocusHeight;
+
+       if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pContentBgHighlightedColorReplacementBitmap))
+       {
+               r = pCanvas->DrawNinePatchedBitmap(bounds, *__pContentBgHighlightedColorReplacementBitmap);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+       else
+       {
+               r = pCanvas->DrawBitmap(bounds, *__pContentBgHighlightedColorReplacementBitmap);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       delete pCanvas;
+       return r;
+
+CATCH:
+       delete pCanvas;
        return r;
 }
 
@@ -669,12 +929,6 @@ _EditTimePresenter::DrawColon(Canvas& canvas, const FloatRectangle& bounds)
                r = DrawResourceBitmap(canvas, bounds, __pColonColorReplacementBitmap);
        }
 
-       if ( r != E_SUCCESS)
-       {
-               r = DrawText(canvas, bounds, L":");
-               SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
        return r;
 }
 
@@ -689,6 +943,7 @@ _EditTimePresenter::DrawTitle(Canvas& canvas)
        }
 
        (_FontImpl::GetInstance(*__pFont))->SetSize(__titleFontSize);
+       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
        __titleObject.SetFont(__pFont, 0, __titleObject.GetTextLength());
 
        __titleObject.Draw(*_CanvasImpl::GetInstance(canvas));
@@ -697,14 +952,62 @@ _EditTimePresenter::DrawTitle(Canvas& canvas)
 }
 
 result
-_EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const String& text, float textSize)
+_EditTimePresenter::DrawContentBitmap(Canvas& canvas, const FloatRectangle& bounds, _DateTimeId boxId)
 {
        result r = E_SUCCESS;
 
-       Color textColor;
+       bool isCustomBitmap = false;
+       Bitmap* pReplacementBitmap = null;
+       Bitmap* pEffectBitmap = null;
+
+       if (!__pEditTime->IsEnabled())
+       {
+               isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_DISABLED);
+               pReplacementBitmap = __pContentBgDisabledColorReplacementBitmap;
+               pEffectBitmap = __pContentBgEffectDisabledBitmap;
+       }
+       else if (__selectedId != 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;
+               }
+       }
+       else
+       {
+               isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
+               pReplacementBitmap = __pContentBgPressedColorReplacementBitmap;
+               pEffectBitmap = __pContentBgEffectPressedBitmap;
+       }
+
+       r = DrawResourceBitmap(canvas, bounds, pReplacementBitmap);
+       SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       if (!isCustomBitmap)
+       {
+               r = DrawResourceBitmap(canvas, bounds, pEffectBitmap);
+               SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       return r;
+}
+
+result
+_EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const String& text, _DateTimeId boxId, float textSize)
+{
+       result r = E_SUCCESS;
 
-       _DateTimeId boxId = DATETIME_ID_NONE;
-       boxId = GetBoxIdFromPosition(FloatPoint(bounds.x + 1.0f, bounds.y));
+       Color textColor;
+       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
 
        if (!__pEditTime->IsEnabled())
        {
@@ -725,6 +1028,7 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
                                (GetLastSelectedId() == boxId))
                {
                        GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
+                       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
                }
 
                if (boxId == DATETIME_ID_AMPM)
@@ -741,10 +1045,16 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
                        else
                        {
                                GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
+                               (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
                        }
                }
        }
 
+       if (boxId != DATETIME_ID_AMPM)
+       {
+               DrawContentBitmap(canvas, bounds, boxId);
+       }
+
        FloatRectangle drawAreaBounds(0.0f, 0.0f, 0.0f, 0.0f);
        drawAreaBounds = bounds;
 
@@ -755,19 +1065,15 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
        __textObject.RemoveAll();
 
        (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
-
        __textObject.AppendElement(*pSimpleText);
 
        if (boxId == DATETIME_ID_AMPM)
        {
                (_FontImpl::GetInstance(*__pFont))->SetSize(textSize);
-               __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
-       }
-       else
-       {
-               __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
        }
 
+       __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
+
        __textObject.SetForegroundColor(textColor, 0, __textObject.GetTextLength());
        __textObject.SetBounds(drawAreaBounds);
        __textObject.Draw(*_CanvasImpl::GetInstance(canvas));
@@ -780,28 +1086,28 @@ _EditTimePresenter::GetBoxIdFromPosition(const FloatPoint& point) const
 {
        _DateTimeId displayBoxId = DATETIME_ID_NONE;
 
-       FloatRectangle hourBounds(0.0f, 0.0f, 0.0f, 0.0f);
-       FloatRectangle minuteBounds(0.0f, 0.0f, 0.0f, 0.0f);
        FloatRectangle ampmBounds(0.0f, 0.0f, 0.0f, 0.0f);
-
-       hourBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
-       minuteBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
+       FloatRectangle hoursBounds(0.0f, 0.0f, 0.0f, 0.0f);
+       FloatRectangle minutesBounds(0.0f, 0.0f, 0.0f, 0.0f);
 
        if (__24hours == false)
        {
                ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
        }
 
-       if (point.y < hourBounds.y || point.y > hourBounds.y + hourBounds.height)
+       hoursBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
+       minutesBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
+
+       if (point.y < hoursBounds.y || point.y > hoursBounds.y + hoursBounds.height)
        {
                return displayBoxId;
        }
 
-       if (hourBounds.Contains(point) == true)
+       if (hoursBounds.Contains(point) == true)
        {
                displayBoxId = DATETIME_ID_HOUR;
        }
-       else if (minuteBounds.Contains(point) == true)
+       else if (minutesBounds.Contains(point) == true)
        {
                displayBoxId = DATETIME_ID_MINUTE;
        }
@@ -826,6 +1132,181 @@ _EditTimePresenter::GetLastSelectedId(void) const
        return __lastSelectedId;
 }
 
+void
+_EditTimePresenter::SetFocusedElement()
+{
+       if (__focusStatus == FOCUS_NONE || __focusStatus == FOCUS_AMPM)
+       {
+               __focusStatus = FOCUS_HOUR;
+       }
+
+       return;
+}
+
+void
+_EditTimePresenter::SetFocusState(bool isFocused)
+{
+       __isFocused = isFocused;
+       return;
+}
+
+bool
+_EditTimePresenter::OnFocusLost(const _Control &source)
+{
+       if (!__isEnterKeyPressed || __focusStatus == FOCUS_AMPM)
+       {
+               __focusStatus = FOCUS_NONE;
+       }
+       else
+       {
+               __isEnterKeyPressed = false;
+       }
+       __pEditTime->Invalidate();
+       return true;
+}
+
+bool
+_EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
+{
+       if (!__isFocused)
+       {
+               return false;
+       }
+       _KeyCode keyCode = keyInfo.GetKeyCode();
+
+       int minValue = -1;
+       int maxValue = -1;
+       int displayValue = -1;
+
+       _DateTimeId boxId = DATETIME_ID_HOUR;
+
+       switch (keyCode)
+       {
+               case _KEY_RIGHT:
+               {
+                       __isEnterKeyPressed = false;
+                       if (__focusStatus == FOCUS_HOUR)
+                       {
+                               __focusStatus = FOCUS_MINUTE;
+                       }
+                       else if (__focusStatus == FOCUS_MINUTE)
+                       {
+                               if (!Is24HourNotationEnabled())
+                               {
+                                       __focusStatus = FOCUS_AMPM;
+                               }
+                       }
+
+                       __pEditTime->Invalidate();
+                       break;
+               }
+
+               case _KEY_LEFT:
+               {
+                       __isEnterKeyPressed = false;
+                       if (__focusStatus == FOCUS_MINUTE)
+                       {
+                               __focusStatus = FOCUS_HOUR;
+                       }
+                       else if (__focusStatus == FOCUS_AMPM)
+                       {
+                               __focusStatus = FOCUS_MINUTE;
+                       }
+                       __pEditTime->Invalidate();
+                       break;
+               }
+
+               case _KEY_ENTER:
+               {
+                       __isEnterKeyPressed = true;
+                       if (__focusStatus == FOCUS_HOUR)
+                       {
+                               boxId = DATETIME_ID_HOUR;
+                               if (__pEditTime->GetDateTimeBar() != null)
+                               {
+                                       if (!Is24HourNotationEnabled())
+                                       {
+                                               if (GetHour() == 0)
+                                               {
+                                                       minValue = DATETIME_HOUR_MIN + 1;
+                                                       maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
+                                                       displayValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
+                                               }
+                                               else if (GetHour() > DATETIME_HOUR_MAX_FOR_24NOTATION)
+                                               {
+                                                       minValue = DATETIME_HOUR_MIN + 1;
+                                                       maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
+                                                       displayValue = __pEditTime->GetHour() - DATETIME_HOUR_MAX_FOR_24NOTATION;
+                                               }
+                                               else
+                                               {
+                                                       minValue = DATETIME_HOUR_MIN + 1;
+                                                       maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
+                                                       displayValue = __pEditTime->GetHour();
+                                               }
+                                       }
+                                       else
+                                       {
+                                               minValue = DATETIME_HOUR_MIN;
+                                               maxValue = DATETIME_HOUR_MAX;
+                                               displayValue = __pEditTime->GetHour();
+                                       }
+
+                                       if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
+                                       {
+                                               __pEditTime->GetDateTimeBar()->RemoveAllItems();
+                                       }
+                               }
+                       }
+                       else if (__focusStatus == FOCUS_MINUTE)
+                       {
+                               if (__pEditTime->GetDateTimeBar() != null)
+                               {
+                                       minValue = DATETIME_MINUTE_MIN;
+                                       maxValue = DATETIME_MINUTE_MAX;
+                                       displayValue = __pEditTime->GetMinute();
+
+                                       if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
+                                       {
+                                               __pEditTime->GetDateTimeBar()->RemoveAllItems();
+                                       }
+                               }
+                               boxId = DATETIME_ID_MINUTE;
+                       }
+                       else if (__focusStatus == FOCUS_AMPM)
+                       {
+                               SetAmEnabled(!GetAmEnabled());
+                               __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
+                               boxId = DATETIME_ID_AMPM;
+
+                               DrawFocus();
+                       }
+
+                       if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM))
+                       {
+                               FloatRectangle absoluteBounds = __pEditTime->GetAbsoluteBoundsF();
+
+                               FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
+                               bounds = GetDisplayAreaBoundsFromHoursStyle(boxId);
+                               bounds.x += absoluteBounds.x;
+
+                               __pEditTime->GetDateTimeBar()->SetInitialValue(minValue, maxValue, displayValue, boxId);
+                               __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds);
+                               __pEditTime->GetDateTimeBar()->SetVisibleState(true);
+                               __pEditTime->GetDateTimeBar()->Open();
+                               UpdateLastSelectedValue(boxId, false);
+                       }
+                       break;
+               }
+
+               default:
+               {
+                       return false;
+               }
+       }
+       return true;
+}
+
 bool
 _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
 {
@@ -958,7 +1439,7 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to
 
        _DateTimeId boxId = GetBoxIdFromPosition(point);
 
-       if (boxId != __selectedId || boxId == DATETIME_ID_NONE)
+       if ((boxId == GetLastSelectedId() && boxId != DATETIME_ID_AMPM) || boxId != __selectedId || boxId == DATETIME_ID_NONE)
        {
                if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated())
                {
@@ -973,11 +1454,46 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to
 
                return true;
        }
+       UpdateLastSelectedValue(__selectedId, true);
+       if (GetLastSelectedId() == DATETIME_ID_AMPM)
+       {
+               return true;
+       }
+
+       Draw();
+
+       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());
+               FloatRectangle absoluteBounds(0.0f, 0.0f, 0.0f, 0.0f);
+               absoluteBounds = __pEditTime->GetAbsoluteBoundsF();
+               bounds.x += absoluteBounds.x;
 
-       SetLastSelectedId(__selectedId);
+               __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds);
+
+               if (__pEditTime->GetDateTimeBar()->IsActivated())
+               {
+                       __pEditTime->GetDateTimeBar()->RefreshItems();
+               }
+               else
+               {
+                       __pEditTime->GetDateTimeBar()->SetVisibleState(true);
+                       __pEditTime->GetDateTimeBar()->Open();
+               }
+       }
+
+       __selectedId = DATETIME_ID_NONE;
+       return true;
+}
+
+void
+_EditTimePresenter::UpdateLastSelectedValue(_DateTimeId boxId, bool isTouchPressed)
+{
+       __selectedId = boxId;
+       SetLastSelectedId(boxId);
 
        __lastSelectedValue = "";
-       _DateTimeUtils dateTimeUtils;
 
        if (GetLastSelectedId() == DATETIME_ID_HOUR)
        {
@@ -989,24 +1505,32 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to
 
                        if (hours == DATETIME_HOUR_MIN)
                        {
-                               hours = hours + DATETIME_HOUR_MAX_FOR_24NOTATION;
+                               hours = hours + DATETIME_HOUR_MAX_FOR_24NOTATION;
                        }
                }
                __lastSelectedValue.Format(10, L"%02d", hours);
-               PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
+               if (isTouchPressed)
+               {
+                       PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
+               }
        }
        else if (GetLastSelectedId() == DATETIME_ID_MINUTE)
        {
                __lastSelectedValue.Format(10, L"%02d", GetMinute());
-               PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
+               if (isTouchPressed)
+               {
+                       PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
+               }
        }
        else if (GetLastSelectedId() == DATETIME_ID_AMPM)
        {
                SetAmEnabled(!GetAmEnabled());
                __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
-               __pEditTime->UpdateAccessibilityElement();
-               PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
-
+               if (isTouchPressed)
+               {
+                       __pEditTime->UpdateAccessibilityElement();
+                       PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
+               }
                __selectedId = DATETIME_ID_NONE;
 
                if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated())
@@ -1014,37 +1538,11 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to
                        __pEditTime->GetDateTimeBar()->SetVisibleState(false);
                        __pEditTime->GetDateTimeBar()->Close();
                }
-
-               Draw();
-
-               return true;
-       }
-
-       Draw();
-
-       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());
-               FloatRectangle absoluteBounds(0.0f, 0.0f, 0.0f, 0.0f);
-               absoluteBounds = __pEditTime->GetAbsoluteBoundsF();
-               bounds.x += absoluteBounds.x;
-
-               __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds);
-
-               if (__pEditTime->GetDateTimeBar()->IsActivated())
-               {
-                       __pEditTime->GetDateTimeBar()->RefreshItems();
-               }
-               else
-               {
-                       __pEditTime->GetDateTimeBar()->SetVisibleState(true);
-                       __pEditTime->GetDateTimeBar()->Open();
-               }
        }
 
        __selectedId = DATETIME_ID_NONE;
-       return true;
+       __pEditTime->Invalidate();
+       return;
 }
 
 bool
@@ -1222,6 +1720,12 @@ _EditTimePresenter::Animate(void)
        VisualElementPropertyAnimation* pNewBoundsAnimation = null;
        VisualElementPropertyAnimation* pOldBoundsAnimation = null;
        Canvas *pCanvas = null;
+       Color contentBgColor;
+       Color textNormalColor;
+       Color textPressedColor;
+
+       GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_PRESSED, contentBgColor);
+       GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textPressedColor);
 
        __pFont->GetTextExtent(newValue, newValue.GetLength(), newTextDim);
        __pFont->GetTextExtent(__lastSelectedValue, __lastSelectedValue.GetLength(), oldTextDim);
@@ -1318,7 +1822,7 @@ _EditTimePresenter::Animate(void)
        }
 
        pCanvas = pEditTimeElement->GetCanvasN(rect);
-       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+       pCanvas->SetBackgroundColor(contentBgColor);
        pCanvas->Clear();
        delete pCanvas;
 
@@ -1351,6 +1855,8 @@ _EditTimePresenter::Animate(void)
 
        pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
        pCanvas->Clear();
+       pCanvas->SetForegroundColor(textPressedColor);
+       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
        pCanvas->SetFont(*__pFont);
        pCanvas->DrawText(FloatPoint(0.0f, 0.0f), __lastSelectedValue);
 
@@ -1363,6 +1869,8 @@ _EditTimePresenter::Animate(void)
 
        pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
        pCanvas->Clear();
+       pCanvas->SetForegroundColor(textPressedColor);
+       (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
        pCanvas->SetFont(*__pFont);
        pCanvas->DrawText(FloatPoint(0.0f, 0.0f), newValue);