Focus UI changes For EditDate,Time, DateTimeBar on tizen_2.1
authorkatpaga.a <katpaga.a@samsung.com>
Mon, 27 May 2013 05:16:22 +0000 (10:46 +0530)
committerkatpaga.a <katpaga.a@samsung.com>
Mon, 27 May 2013 08:08:49 +0000 (13:38 +0530)
Signed-off-by: katpaga.a <katpaga.a@samsung.com>
Change-Id: I890d41deaf182d499dfd1e31b8a2035e184b5532
Signed-off-by: katpaga.a <katpaga.a@samsung.com>
13 files changed:
src/ui/controls/FUiCtrl_DateTimeBar.cpp
src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp
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_DateTimeBar.h
src/ui/inc/FUiCtrl_DateTimeBarPresenter.h
src/ui/inc/FUiCtrl_DateTimeDefine.h
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 c346f41..be9b686 100644 (file)
@@ -675,10 +675,19 @@ _DateTimeBar::OnFocusLost(const _Control& control)
 }
 
 void
+_DateTimeBar::OnFocusModeStateChanged(void)
+{
+       __pDateTimeBarPresenter->FocusModeChanged();
+       Invalidate();
+       return;
+}
+
+void
 _DateTimeBar::OnDrawFocus(void)
 {
+       __pDateTimeBarPresenter->RefreshDateTimeBar();
        __pDateTimeBarPresenter->SetItemFocused(true);
-       __pDateTimeBarPresenter->DrawFocus();
+       __pDateTimeBarPresenter->ChangeFocusStatus();
        return;
 }
 
index 0197afe..3a0ad43 100644 (file)
@@ -52,6 +52,7 @@ _DateTimeBarPresenter::_DateTimeBarPresenter(_DateTimeBar* pDateTimeBar)
        , __pFlickAnimationTimer(null)
        , __flickAnimation()
        , __selectedText(L"")
+       , __focusedText(L"")
        , __bodyAreaBounds(FloatRectangle())
        , __arrowAreaBounds(FloatRectangle())
        , __windowAreaBounds(FloatRectangle())
@@ -232,58 +233,72 @@ _DateTimeBarPresenter::Draw(void)
        r = DrawBackground(*pCanvas);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
+       if (__isFocused)
+       {
+               ChangeFocusStatus();
+       }
+
        r = DrawItem(*pCanvas);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        r = DrawArrow(*pCanvas);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       if (__isFocused)
-       {
-               DrawFocus();
-       }
 
 CATCH:
        delete pCanvas;
        return r;
 }
 
-result
-_DateTimeBarPresenter::DrawFocus()
+void
+_DateTimeBarPresenter::ChangeFocusStatus(void)
 {
-       Canvas* pCanvas = __pDateTimeBar->GetCanvasN();
-       SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
-
-       result r = E_SUCCESS;
+       _DateTimeBarItem* pItem = null;
+       pItem = GetItemAt(__focusedIndex);
 
-       if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pFocusBitmap))
-       {
-               r = pCanvas->DrawNinePatchedBitmap(__focusBounds, *__pFocusBitmap);
-               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-       else
+       if (pItem != null)
        {
-               r = pCanvas->DrawBitmap(__focusBounds, *__pFocusBitmap);
-               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+               __focusedText.Clear();
+               __focusedText.Append(pItem->GetText().GetPointer());
        }
-CATCH:
-
-       delete pCanvas;
-       return r;
+       SetItemStatus(__focusedIndex, DATETIMEBAR_ITEM_STATUS_HIGHLIGHTED);
 }
 
 void
 _DateTimeBarPresenter::SetItemFocused(bool isFocused)
 {
+       __isFocused = isFocused;
        if (!__isFocused)
        {
-               __focusedIndex = (GetSelectedItemIndex() - 1);
-               _DateTimeBarItem* pItem = null;
-               pItem = GetItemAt(__focusedIndex);
-
-               __focusBounds = pItem->GetBounds();
+               __focusedIndex = -1;
        }
-       __isFocused = isFocused;
+       return;
+}
+
+void
+_DateTimeBarPresenter::RefreshDateTimeBar()
+{
+       __initialAnimationValue = 0.0f;
+       __isInitialAnimation = false;
+       _DateTimeBarItem* pItem = null;
+
+       ResetFlickAnimationTimer();
+       RemoveAllItems();
+       __pDateTimeBar->SetInitialValue(GetMinimumValue(), GetMaximumValue(), __focusedValue, __pDateTimeBar->GetSelectedBoxId());
+       __distance = (GetItemWidth() * (-1.0f));
+
+       LoadItems();
+       AdjustItemPosition(__distance);
+       ValidateAndAdjustStartPosition();
+       pItem = GetItemAt(__focusedIndex);
+       __focusBounds = pItem->GetBounds();
+}
+
+void
+_DateTimeBarPresenter::FocusModeChanged(void)
+{
+       __isFocused = false;
+       SetItemStatus(__focusedIndex, DATETIMEBAR_ITEM_STATUS_NORMAL);
        return;
 }
 
@@ -325,10 +340,23 @@ _DateTimeBarPresenter::DrawItem(Canvas& canvas)
                }
 
                drawText = pDrawItem->GetText();
-
-               if (drawText.CompareTo(__selectedText) == 0)
+               if (__isFocused)
                {
-                       pDrawItem->SetStatus(DATETIMEBAR_ITEM_STATUS_SELECTED);
+                       if (drawText.CompareTo(__focusedText) == 0)
+                       {
+                               pDrawItem->SetStatus(DATETIMEBAR_ITEM_STATUS_HIGHLIGHTED);
+                       }
+                       else
+                       {
+                               pDrawItem->SetStatus(DATETIMEBAR_ITEM_STATUS_NORMAL);
+                       }
+               }
+               else
+               {
+                       if (drawText.CompareTo(__selectedText) == 0)
+                       {
+                               pDrawItem->SetStatus(DATETIMEBAR_ITEM_STATUS_SELECTED);
+                       }
                }
 
                itemStatus = pDrawItem->GetStatus();
@@ -349,7 +377,7 @@ _DateTimeBarPresenter::DrawItem(Canvas& canvas)
 
                SysAssertf(__pFont != null, "Font instance is null");
 
-               if (itemStatus == DATETIMEBAR_ITEM_STATUS_SELECTED)
+               if (itemStatus == DATETIMEBAR_ITEM_STATUS_SELECTED || itemStatus == DATETIMEBAR_ITEM_STATUS_HIGHLIGHTED)
                {
                        (_FontImpl::GetInstance(*__pFont))->SetSize(fontSize);
                        (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
@@ -503,7 +531,7 @@ _DateTimeBarPresenter::SetItemStatus(int index, _DateTimeBarItemStatus status)
        SysTryReturn(NID_UI_CTRL, pItem, E_SYSTEM, E_SYSTEM,
                 "[E_SYSTEM] A system error has occurred. Failed to get _DateTimeBarItem at index (%d).", index);
 
-       if (status != DATETIMEBAR_ITEM_STATUS_NORMAL)
+       if (status == DATETIMEBAR_ITEM_STATUS_SELECTED)
        {
                __pDateTimeBarModel->SetSelectedItemIndex(index);
        }
@@ -802,6 +830,8 @@ _DateTimeBarPresenter::AddItems(int actionId)
        {
                __selectedText.Clear();
                __selectedText.Append(pItem->GetText().GetPointer());
+               __focusedIndex = (firstDrawItemIndex - 1);
+               __focusedValue = pItem->GetActionId();
        }
 
        SetItemStatus(firstDrawItemIndex, DATETIMEBAR_ITEM_STATUS_SELECTED);
@@ -1035,10 +1065,10 @@ _DateTimeBarPresenter::OnKeyPressed(const _Control &source, const _KeyInfo &keyI
                        else
                        {
                                __focusBounds.x = __focusBounds.x + __focusBounds.width + GetItemMargin();
-                               __pDateTimeBar->Invalidate();
 
                        }
                        __focusedIndex = GetItemIndexFromPosition(FloatPoint(__focusBounds.x, __focusBounds.y));
+                       __pDateTimeBar->Invalidate();
 
                        break;
                }
@@ -1052,10 +1082,9 @@ _DateTimeBarPresenter::OnKeyPressed(const _Control &source, const _KeyInfo &keyI
                        else
                        {
                                __focusBounds.x = __focusBounds.x - __focusBounds.width - GetItemMargin();
-                               __pDateTimeBar->Invalidate();
                        }
                        __focusedIndex = GetItemIndexFromPosition(FloatPoint(__focusBounds.x, __focusBounds.y));
-
+                       __pDateTimeBar->Invalidate();
                        break;
                }
 
index e447c6c..1b7ee79 100644 (file)
@@ -999,8 +999,16 @@ _EditDate::OnFocusLost(const _Control &source)
 }
 
 void
+_EditDate::OnFocusModeStateChanged(void)
+{
+       __pEditDatePresenter->OnFocusModeStateChanged();
+       return;
+}
+
+void
 _EditDate::OnDrawFocus(void)
 {
+       __pEditDatePresenter->SetFocusedElement();
        __pEditDatePresenter->SetFocusState(true);
        __pEditDatePresenter->DrawFocus();
        return;
index 41c611d..a777213 100644 (file)
@@ -65,6 +65,7 @@ _EditDatePresenter::_EditDatePresenter(void)
        , __datePickerEnabled(true)
        , __selectedId(DATETIME_ID_NONE)
        , __lastSelectedId(DATETIME_ID_NONE)
+       , __focusId(DATETIME_ID_NONE)
        , __touchMoveHandled(false)
        , __titleObject()
        , __textObject()
@@ -77,7 +78,6 @@ _EditDatePresenter::_EditDatePresenter(void)
        , __isAnimating(false)
        , __isEditDateInitialized(false)
        , __elementWidth(0.0f)
-       , __focusStatus(FOCUS_NONE)
        , __isEnterKeyPressed(false)
        , __isFocused(false)
 {
@@ -577,10 +577,6 @@ _EditDatePresenter::Draw(void)
        r = DrawText(*pCanvas, GetDateAreaBounds(DATETIME_ID_YEAR), yearString, DATETIME_ID_YEAR);
        SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       if (__pEditDate->IsFocused())
-       {
-               DrawFocus();
-       }
 
 CATCH:
        delete pCanvas;
@@ -595,22 +591,19 @@ _EditDatePresenter::DrawFocus(void)
        Canvas* pCanvas = __pEditDate->GetCanvasN();
        SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
 
-       if (__focusStatus == FOCUS_DAY)
+       if (__focusId == DATETIME_ID_DAY)
        {
                bounds = GetDateAreaBounds(DATETIME_ID_DAY);
        }
-       else if (__focusStatus == FOCUS_MONTH)
+       else if (__focusId == DATETIME_ID_MONTH)
        {
                bounds = GetDateAreaBounds(DATETIME_ID_MONTH);
        }
-       else if (__focusStatus == FOCUS_YEAR)
+       else if (__focusId == DATETIME_ID_YEAR)
        {
                bounds = GetDateAreaBounds(DATETIME_ID_YEAR);
        }
 
-       bounds.y = bounds.y - (__adjustFocusHeight / 2.0f);
-       bounds.height = bounds.height + __adjustFocusHeight;
-
        result r = E_SUCCESS;
 
        if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pContentBgHighlightedColorReplacementBitmap))
@@ -752,6 +745,10 @@ _EditDatePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
        SysTryReturn(NID_UI_CTRL, (pSimpleText != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
        __textObject.RemoveAll();
+       if (__isFocused && __focusId == boxId)
+       {
+               DrawFocus();
+       }
 
        (_FontImpl::GetInstance(*__pFont))->SetSize(__dateFontSize);
        __textObject.AppendElement(*pSimpleText);
@@ -923,27 +920,32 @@ _EditDatePresenter::SetFocusState(bool isFocused)
 }
 
 void
-_EditDatePresenter::SetFocusedElement()
+_EditDatePresenter::SetFocusedElement(void)
 {
        _DateTimeUtils dateTimeUtils;
+       if (__isEnterKeyPressed)
+       {
+               __isEnterKeyPressed = false;
+               __isFocused = true;
+       }
        int localeDateFormat =  dateTimeUtils.GetLocaleDateFormat();
-       if (__focusStatus == FOCUS_NONE)
+       if (__focusId == DATETIME_ID_NONE)
        {
                if (localeDateFormat == DATE_FORMAT_DDMMYYYY)
                {
-                       __focusStatus = FOCUS_DAY;
+                       __focusId = DATETIME_ID_DAY;
                }
                else if (localeDateFormat == DATE_FORMAT_MMDDYYYY)
                {
-                       __focusStatus = FOCUS_MONTH;
+                       __focusId = DATETIME_ID_MONTH;
                }
                else if (localeDateFormat == DATE_FORMAT_YYYYMMDD)
                {
-                       __focusStatus = FOCUS_YEAR;
+                       __focusId = DATETIME_ID_YEAR;
                }
                else if (localeDateFormat == DATE_FORMAT_YYYYDDMM)
                {
-                       __focusStatus = FOCUS_YEAR;
+                       __focusId = DATETIME_ID_YEAR;
                }
        }
        return;
@@ -954,16 +956,22 @@ _EditDatePresenter::OnFocusLost(const _Control &source)
 {
        if (!__isEnterKeyPressed)
        {
-               __focusStatus = FOCUS_NONE;
-       }
-       else
-       {
-               __isEnterKeyPressed = false;
+               __focusId = DATETIME_ID_NONE;
        }
+       __isFocused = false;
        __pEditDate->Invalidate();
        return true;
 }
 
+void
+_EditDatePresenter::OnFocusModeStateChanged(void)
+{
+       __isFocused = false;
+       __focusId = DATETIME_ID_NONE;
+       __pEditDate->Invalidate();
+       return;
+}
+
 bool
 _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
 {
@@ -985,37 +993,37 @@ _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
        {
                case _KEY_RIGHT:
                {
-                       if (__focusStatus == FOCUS_DAY)
+                       if (__focusId == DATETIME_ID_DAY)
                        {
                                if (localeDateFormat == DATE_FORMAT_DDMMYYYY || localeDateFormat == DATE_FORMAT_YYYYDDMM)
                                {
-                                       __focusStatus = FOCUS_MONTH;
+                                       __focusId = DATETIME_ID_MONTH;
                                }
                                else if (localeDateFormat == DATE_FORMAT_MMDDYYYY)
                                {
-                                       __focusStatus = FOCUS_YEAR;
+                                       __focusId = DATETIME_ID_YEAR;
                                }
                        }
-                       else if (__focusStatus == FOCUS_MONTH)
+                       else if (__focusId == DATETIME_ID_MONTH)
                        {
                                if (localeDateFormat == DATE_FORMAT_DDMMYYYY)
                                {
-                                       __focusStatus = FOCUS_YEAR;
+                                       __focusId = DATETIME_ID_YEAR;
                                }
                                else if (localeDateFormat == DATE_FORMAT_MMDDYYYY || localeDateFormat == DATE_FORMAT_YYYYMMDD)
                                {
-                                       __focusStatus = FOCUS_DAY;
+                                       __focusId = DATETIME_ID_DAY;
                                }
                        }
-                       else if (__focusStatus == FOCUS_YEAR)
+                       else if (__focusId == DATETIME_ID_YEAR)
                        {
                                if (localeDateFormat == DATE_FORMAT_YYYYMMDD)
                                {
-                                       __focusStatus = FOCUS_MONTH;
+                                       __focusId = DATETIME_ID_MONTH;
                                }
                                else if (localeDateFormat == DATE_FORMAT_YYYYDDMM)
                                {
-                                       __focusStatus = FOCUS_DAY;
+                                       __focusId = DATETIME_ID_DAY;
                                }
                        }
                        __pEditDate->Invalidate();
@@ -1024,37 +1032,37 @@ _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
 
                case _KEY_LEFT:
                {
-                       if (__focusStatus == FOCUS_DAY)
+                       if (__focusId == DATETIME_ID_DAY)
                        {
                                if (localeDateFormat == DATE_FORMAT_YYYYDDMM)
                                {
-                                       __focusStatus = FOCUS_YEAR;
+                                       __focusId = DATETIME_ID_YEAR;
                                }
                                else if (localeDateFormat == DATE_FORMAT_MMDDYYYY || localeDateFormat == DATE_FORMAT_YYYYMMDD)
                                {
-                                       __focusStatus = FOCUS_MONTH;
+                                       __focusId = DATETIME_ID_MONTH;
                                }
                        }
-                       else if (__focusStatus == FOCUS_MONTH)
+                       else if (__focusId == DATETIME_ID_MONTH)
                        {
                                if (localeDateFormat == DATE_FORMAT_YYYYMMDD)
                                {
-                                       __focusStatus = FOCUS_YEAR;
+                                       __focusId = DATETIME_ID_YEAR;
                                }
                                else if (localeDateFormat == DATE_FORMAT_DDMMYYYY || localeDateFormat == DATE_FORMAT_YYYYDDMM)
                                {
-                                       __focusStatus = FOCUS_DAY;
+                                       __focusId = DATETIME_ID_DAY;
                                }
                        }
-                       else if (__focusStatus == FOCUS_YEAR)
+                       else if (__focusId == DATETIME_ID_YEAR)
                        {
                                if (localeDateFormat == DATE_FORMAT_DDMMYYYY)
                                {
-                                       __focusStatus = FOCUS_MONTH;
+                                       __focusId = DATETIME_ID_MONTH;
                                }
                                else if (localeDateFormat == DATE_FORMAT_MMDDYYYY)
                                {
-                                       __focusStatus = FOCUS_DAY;
+                                       __focusId = DATETIME_ID_DAY;
                                }
                        }
                        __pEditDate->Invalidate();
@@ -1064,7 +1072,7 @@ _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                case _KEY_ENTER:
                {
                        __isEnterKeyPressed = true;
-                       if (__focusStatus == FOCUS_DAY)
+                       if (__focusId == DATETIME_ID_DAY)
                        {
                                _DateTimeUtils dateTimeUtils;
                                maxValue = dateTimeUtils.CalculateMaxDay(GetYear(), GetMonth());
@@ -1078,7 +1086,7 @@ _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                                }
                        }
 
-                       else if (__focusStatus == FOCUS_MONTH)
+                       else if (__focusId == DATETIME_ID_MONTH)
                        {
                                minValue = DATETIME_MONTH_MIN;
                                maxValue = DATETIME_MONTH_MAX;
@@ -1090,7 +1098,7 @@ _EditDatePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                                        __pEditDate->GetDateTimeBar()->RemoveAllItems();
                                }
                        }
-                       else if (__focusStatus == FOCUS_YEAR)
+                       else if (__focusId == DATETIME_ID_YEAR)
                        {
                                minValue = GetMinYear();
                                maxValue = GetMaxYear();
index 991f6c9..403a083 100644 (file)
@@ -761,6 +761,7 @@ void
 _EditTime::OnDrawFocus(void)
 {
        __pEditTimePresenter->SetFocusState(true);
+       __pEditTimePresenter->SetFocusedElement();
        __pEditTimePresenter->DrawFocus();
        return;
 }
@@ -803,6 +804,13 @@ _EditTime::OnFocusLost(const _Control &source)
        return __pEditTimePresenter->OnFocusLost(source);
 }
 
+void
+_EditTime::OnFocusModeStateChanged(void)
+{
+       __pEditTimePresenter->OnFocusModeStateChanged();
+       return;
+}
+
 FloatRectangle
 _EditTime::GetParentWindowBounds(void) const
 {
index ce3746d..5b4221a 100644 (file)
@@ -58,6 +58,7 @@ _EditTimePresenter::_EditTimePresenter(const String& title)
        , __timePickerEnabled(true)
        , __selectedId(DATETIME_ID_NONE)
        , __lastSelectedId(DATETIME_ID_NONE)
+       , __focusId(DATETIME_ID_NONE)
        , __touchMoveHandled(false)
        , __pAmPmBgNormalColorReplacementBitmap(null)
        , __pAmPmBgDisabledColorReplacementBitmap(null)
@@ -84,7 +85,6 @@ _EditTimePresenter::_EditTimePresenter(const String& title)
        , __timeFontSize(0.0f)
        , __isAnimating(false)
        , __isEditTimeInitialized(false)
-       , __focusStatus(FOCUS_NONE)
        , __isEnterKeyPressed(false)
        , __isFocused(false)
 {
@@ -861,11 +861,6 @@ _EditTimePresenter::Draw(void)
                SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
        }
 
-       if (__pEditTime->IsFocused())
-       {
-               DrawFocus();
-       }
-
 CATCH:
        delete pCanvas;
        return r;
@@ -879,23 +874,20 @@ _EditTimePresenter::DrawFocus(void)
        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)
+       if (__focusId == DATETIME_ID_HOUR)
        {
                bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
        }
-       else if (__focusStatus == FOCUS_MINUTE)
+       else if (__focusId == DATETIME_ID_MINUTE)
        {
                bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
        }
-       else if (__focusStatus == FOCUS_AMPM)
+       else if (__focusId == DATETIME_ID_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);
@@ -1071,6 +1063,10 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const
        {
                (_FontImpl::GetInstance(*__pFont))->SetSize(textSize);
        }
+       if (__isFocused && __focusId == boxId)
+       {
+               DrawFocus();
+       }
 
        __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
 
@@ -1135,9 +1131,14 @@ _EditTimePresenter::GetLastSelectedId(void) const
 void
 _EditTimePresenter::SetFocusedElement()
 {
-       if (__focusStatus == FOCUS_NONE || __focusStatus == FOCUS_AMPM)
+       if (__isEnterKeyPressed)
        {
-               __focusStatus = FOCUS_HOUR;
+               __isEnterKeyPressed = false;
+               __isFocused = true;
+       }
+       if (__focusId == DATETIME_ID_NONE || __focusId == DATETIME_ID_AMPM)
+       {
+               __focusId = DATETIME_ID_HOUR;
        }
 
        return;
@@ -1153,18 +1154,24 @@ _EditTimePresenter::SetFocusState(bool isFocused)
 bool
 _EditTimePresenter::OnFocusLost(const _Control &source)
 {
-       if (!__isEnterKeyPressed || __focusStatus == FOCUS_AMPM)
+       if (!__isEnterKeyPressed || __focusId == DATETIME_ID_AMPM)
        {
-               __focusStatus = FOCUS_NONE;
-       }
-       else
-       {
-               __isEnterKeyPressed = false;
+               __focusId = DATETIME_ID_NONE;
        }
+       __isFocused = false;
        __pEditTime->Invalidate();
        return true;
 }
 
+void
+_EditTimePresenter::OnFocusModeStateChanged(void)
+{
+       __isFocused = false;
+       __focusId = DATETIME_ID_NONE;
+       __pEditTime->Invalidate();
+       return;
+}
+
 bool
 _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
 {
@@ -1185,15 +1192,15 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                case _KEY_RIGHT:
                {
                        __isEnterKeyPressed = false;
-                       if (__focusStatus == FOCUS_HOUR)
+                       if (__focusId == DATETIME_ID_HOUR)
                        {
-                               __focusStatus = FOCUS_MINUTE;
+                               __focusId = DATETIME_ID_MINUTE;
                        }
-                       else if (__focusStatus == FOCUS_MINUTE)
+                       else if (__focusId == DATETIME_ID_MINUTE)
                        {
                                if (!Is24HourNotationEnabled())
                                {
-                                       __focusStatus = FOCUS_AMPM;
+                                       __focusId = DATETIME_ID_AMPM;
                                }
                        }
 
@@ -1204,13 +1211,13 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                case _KEY_LEFT:
                {
                        __isEnterKeyPressed = false;
-                       if (__focusStatus == FOCUS_MINUTE)
+                       if (__focusId == DATETIME_ID_MINUTE)
                        {
-                               __focusStatus = FOCUS_HOUR;
+                               __focusId = DATETIME_ID_HOUR;
                        }
-                       else if (__focusStatus == FOCUS_AMPM)
+                       else if (__focusId == DATETIME_ID_AMPM)
                        {
-                               __focusStatus = FOCUS_MINUTE;
+                               __focusId = DATETIME_ID_MINUTE;
                        }
                        __pEditTime->Invalidate();
                        break;
@@ -1219,7 +1226,7 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                case _KEY_ENTER:
                {
                        __isEnterKeyPressed = true;
-                       if (__focusStatus == FOCUS_HOUR)
+                       if (__focusId == DATETIME_ID_HOUR)
                        {
                                boxId = DATETIME_ID_HOUR;
                                if (__pEditTime->GetDateTimeBar() != null)
@@ -1258,7 +1265,7 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                                        }
                                }
                        }
-                       else if (__focusStatus == FOCUS_MINUTE)
+                       else if (__focusId == DATETIME_ID_MINUTE)
                        {
                                if (__pEditTime->GetDateTimeBar() != null)
                                {
@@ -1273,13 +1280,13 @@ _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo
                                }
                                boxId = DATETIME_ID_MINUTE;
                        }
-                       else if (__focusStatus == FOCUS_AMPM)
+                       else if (__focusId == DATETIME_ID_AMPM)
                        {
                                SetAmEnabled(!GetAmEnabled());
                                __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
                                boxId = DATETIME_ID_AMPM;
 
-                               DrawFocus();
+                               __pEditTime->Invalidate();
                        }
 
                        if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM))
index f2efe96..5b29b2d 100644 (file)
@@ -110,6 +110,7 @@ public:
 
        virtual bool OnFocusGained(const _Control &source);
        virtual bool OnFocusLost(const _Control &source);
+       virtual void OnFocusModeStateChanged(void);
        void OnDrawFocus(void);
        bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
 
index 0bbca5e..812aae0 100644 (file)
@@ -69,8 +69,10 @@ public:
        int GetMaximumValue(void) const;
        void SetMaximumValue(int maxValue);
 
-       result DrawFocus();
+       void ChangeFocusStatus(void);
+       void FocusModeChanged(void);
        void SetItemFocused(bool isFocused);
+       void RefreshDateTimeBar(void);
 
        float GetItemWidth(void) const;
        float GetItemMargin(void) const;
@@ -147,6 +149,7 @@ private:
        Tizen::Base::Runtime::Timer* __pFlickAnimationTimer;
        _FlickAnimation __flickAnimation;
        Tizen::Base::String __selectedText;
+       Tizen::Base::String __focusedText;
 
        static const int FLICK_ANIMATION_TIMER_PERIOD = 10;
        static const int FLICK_ANIMATION_FPS_DATE_TIME_BAR = 30;
@@ -165,6 +168,7 @@ private:
        bool __isFocused;
        int __focusedIndex;
        Tizen::Graphics::FloatRectangle __focusBounds;
+       int __focusedValue;
        static const int UPDATE_ITEM_COUNT = 3;
 
 }; // _DateTimeBarPresenter
index fb13036..0de9aa7 100644 (file)
@@ -130,6 +130,7 @@ enum _DateTimeBarItemStatus
 {
        DATETIMEBAR_ITEM_STATUS_NORMAL = 0,
        DATETIMEBAR_ITEM_STATUS_SELECTED,
+       DATETIMEBAR_ITEM_STATUS_HIGHLIGHTED,
        DATETIMEBAR_ITEM_STATUS_MAX
 };
 
@@ -168,17 +169,6 @@ enum _TimeFormat
         TIME_FORMAT_24HOUR
 };
 
-enum _FocusType
-{
-       FOCUS_DAY = 0,
-       FOCUS_MONTH,
-       FOCUS_YEAR,
-       FOCUS_HOUR,
-       FOCUS_MINUTE,
-       FOCUS_AMPM,
-       FOCUS_NONE
-};
-
 }}} // Tizen::Ui::Controls
 
 #endif  // _FUI_CTRL_INTERNAL_DATETIME_DEFINE_H_
index 37af9d3..92538bd 100644 (file)
@@ -136,6 +136,7 @@ public:
 
        virtual bool OnFocusGained(const _Control& source);
        virtual bool OnFocusLost(const _Control& source);
+       virtual void OnFocusModeStateChanged(void);
        virtual void OnDrawFocus(void);
 
        Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const;
index ba97812..cd51b17 100644 (file)
@@ -83,6 +83,7 @@ public:
        void SetFocusState(bool isFocused);
        void SetFocusedElement(void);
        virtual bool OnFocusLost(const _Control& source);
+       void OnFocusModeStateChanged(void);
        virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
 
 
@@ -132,6 +133,7 @@ private:
 
        _DateTimeId __selectedId;
        _DateTimeId __lastSelectedId;
+       _DateTimeId __focusId;
        bool __touchMoveHandled;
        Tizen::Graphics::_Text::TextObject __titleObject;
        Tizen::Graphics::_Text::TextObject __textObject;
@@ -145,8 +147,6 @@ private:
        bool __isEditDateInitialized;
        float __elementWidth;
        static const int __dividerCount = 2;
-       static const float __adjustFocusHeight = 8.0f;
-       _FocusType __focusStatus;
        bool __isEnterKeyPressed;
        bool __isFocused;
 }; // _EditDatePresenter
index 21db20e..92fe1cc 100644 (file)
@@ -120,6 +120,7 @@ public:
        virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
        bool OnFocusGained(const _Control& source);
        bool OnFocusLost(const _Control& source);
+       virtual void OnFocusModeStateChanged(void);
        virtual void OnDrawFocus(void);
 
        Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const;
index effdf8f..4a7034d 100644 (file)
@@ -74,6 +74,7 @@ public:
        void SetFocusedElement(void);
        void SetFocusState(bool isFocused);
        bool OnFocusLost(const _Control& source);
+       void OnFocusModeStateChanged(void);
        bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
 
        virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
@@ -130,6 +131,7 @@ private:
 
        _DateTimeId __selectedId;
        _DateTimeId __lastSelectedId;
+       _DateTimeId __focusId;
 
        bool __touchMoveHandled;
 
@@ -161,10 +163,8 @@ private:
        float __timeFontSize;
        bool __isAnimating;
        bool __isEditTimeInitialized;
-       _FocusType __focusStatus;
        bool __isEnterKeyPressed;
        bool __isFocused;
-       static const float __adjustFocusHeight = 8.0f;
 }; // _EditTimePresenter
 
 }}} // Tizen::Ui::Controls