2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiCtrl_DateTimeBarPresenter.cpp
20 * @brief This is the implementation file for the _DateTimeBarPresenter class.
23 #include <FGrp_BitmapImpl.h>
24 #include <FGrp_FontImpl.h>
25 #include <FGrp_TextTextSimple.h>
26 #include "FUi_CoordinateSystemUtils.h"
27 #include "FUi_ResourceManager.h"
28 #include "FUiCtrl_DateTimeUtils.h"
29 #include "FUiCtrl_DateTimeBar.h"
30 #include "FUiCtrl_DateTimeBarPresenter.h"
32 using namespace Tizen::Graphics;
33 using namespace Tizen::Ui;
34 using namespace Tizen::Base;
35 using namespace Tizen::Base::Runtime;
36 using namespace Tizen::Graphics::_Text;
38 namespace Tizen { namespace Ui { namespace Controls
41 _DateTimeBarPresenter::_DateTimeBarPresenter(_DateTimeBar* pDateTimeBar)
42 : __pDateTimeBar(pDateTimeBar)
43 , __pDateTimeBarModel(null)
44 , __currentPoint(FloatPoint(0.0f, 0.0f))
45 , __isTouchMoved(false)
46 , __touchMoveHandled(false)
47 , __isFlickEnabled(true)
48 , __isFlickInProgress(false)
50 , __pFlickAnimationTimer(null)
53 , __bodyAreaBounds(FloatRectangle())
54 , __arrowAreaBounds(FloatRectangle())
55 , __windowAreaBounds(FloatRectangle())
56 , __pBgColorReplacementBitmap(null)
57 , __pFocusBitmap(null)
58 , __pArrowColorReplacementBitmap(null)
59 , __isInitialAnimation(false)
60 , __initialAnimationValue(0.0f)
64 , __focusBounds(FloatRectangle())
68 _DateTimeBarPresenter::~_DateTimeBarPresenter(void)
70 delete __pDateTimeBarModel;
71 __pDateTimeBarModel = 0;
73 delete __pBgColorReplacementBitmap;
74 __pBgColorReplacementBitmap = null;
76 delete __pFocusBitmap;
77 __pFocusBitmap = null;
79 delete __pArrowColorReplacementBitmap;
80 __pArrowColorReplacementBitmap = null;
82 delete __pFlickAnimationTimer;
83 __pFlickAnimationTimer = null;
89 _DateTimeBarPresenter*
90 _DateTimeBarPresenter::CreateInstanceN(_DateTimeBar& dateTimeBar)
94 _DateTimeBarPresenter* pDateTimeBarPresenter = new (std::nothrow) _DateTimeBarPresenter(&dateTimeBar);
95 SysTryReturn(NID_UI_CTRL, pDateTimeBarPresenter, null, E_OUT_OF_MEMORY,
96 "[E_OUT_OF_MEMORY] Memory allocation failed.");
98 pDateTimeBarPresenter->__pDateTimeBarModel = _DateTimeBarModel::CreateInstanceN();
100 SysTryCatch(NID_UI_CTRL, pDateTimeBarPresenter->__pDateTimeBarModel, , r,
101 "[%s] Propagating.", GetErrorMessage(r));
103 r = GET_SHAPE_CONFIG(DATETIMEBAR::ARROW_WIDTH, dateTimeBar.GetOrientation(), pDateTimeBarPresenter->__arrowAreaBounds.width);
104 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to get arrow width from resource.", GetErrorMessage(r));
106 r = GET_SHAPE_CONFIG(DATETIMEBAR::ARROW_HEIGHT, dateTimeBar.GetOrientation(), pDateTimeBarPresenter->__arrowAreaBounds.height);
107 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to get arrow height from resource.", GetErrorMessage(r));
109 r = pDateTimeBarPresenter->LoadResource();
110 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to load the resources.", GetErrorMessage(r));
112 return pDateTimeBarPresenter;
115 delete pDateTimeBarPresenter;
121 _DateTimeBarPresenter::AddFlickAnimationInfo()
123 __flickAnimation.SetSensitivity(FLICK_ANIMATION_FPS_DATE_TIME_BAR, FLICK_ANIMATION_SENSITIVITY_DATE_TIME_BAR);
124 __flickAnimation.SetDirection(FD_HORIZONTAL);
128 _DateTimeBarPresenter::LoadResource(void)
130 result r = E_SUCCESS;
132 Bitmap* pBackgroundNormalBitmap = null;
134 r = GET_BITMAP_CONFIG_N(DATETIMEBAR::TIMEPICKERBAR_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundNormalBitmap);
135 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
137 GET_COLOR_CONFIG(DATETIMEBAR::BG_NORMAL, bgBitmapColor);
138 __pBgColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundNormalBitmap,
139 Color::GetColor(COLOR_ID_MAGENTA), bgBitmapColor);
140 SysTryCatch(NID_UI_CTRL, __pBgColorReplacementBitmap != null, r = GetLastResult(), GetLastResult(), "[%s] Propagating.",
141 GetErrorMessage(GetLastResult()));
143 r = GET_BITMAP_CONFIG_N(FOCUSUI::FOCUS, BITMAP_PIXEL_FORMAT_ARGB8888, __pFocusBitmap);
144 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
146 r = LoadArrowBitmap();
147 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to load resources.", GetErrorMessage(r));
149 delete pBackgroundNormalBitmap;
150 pBackgroundNormalBitmap = null;
152 AddFlickAnimationInfo();
158 delete pBackgroundNormalBitmap;
159 pBackgroundNormalBitmap = null;
161 delete __pBgColorReplacementBitmap;
162 __pBgColorReplacementBitmap = null;
164 delete __pFocusBitmap;
165 __pFocusBitmap = null;
171 _DateTimeBarPresenter::LoadArrowBitmap(void)
173 result r = E_SUCCESS;
175 Bitmap* pArrowNormalBitmap = null;
177 GET_COLOR_CONFIG(DATETIMEBAR::BG_NORMAL, arrowColor);
179 if (__pDateTimeBar->GetAlignment() == DATETIME_BAR_ALIGN_DOWN)
181 r = GET_BITMAP_CONFIG_N(DATETIMEBAR::TAIL_DOWN, BITMAP_PIXEL_FORMAT_ARGB8888, pArrowNormalBitmap);
182 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
186 r = GET_BITMAP_CONFIG_N(DATETIMEBAR::TAIL_UP, BITMAP_PIXEL_FORMAT_ARGB8888, pArrowNormalBitmap);
187 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
190 if (__pArrowColorReplacementBitmap != null)
192 delete __pArrowColorReplacementBitmap;
193 __pArrowColorReplacementBitmap = null;
196 __pArrowColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pArrowNormalBitmap,
197 Color::GetColor(COLOR_ID_MAGENTA), arrowColor);
198 SysTryCatch(NID_UI_CTRL, __pArrowColorReplacementBitmap != null, r = GetLastResult(), GetLastResult(), "[%s] Propagating.",
199 GetErrorMessage(GetLastResult()));
201 delete pArrowNormalBitmap;
202 pArrowNormalBitmap = null;
208 delete pArrowNormalBitmap;
209 pArrowNormalBitmap = null;
211 delete __pArrowColorReplacementBitmap;
212 __pArrowColorReplacementBitmap = null;
218 _DateTimeBarPresenter::Draw(void)
220 result r = E_SUCCESS;
222 Canvas* pCanvas = __pDateTimeBar->GetCanvasN();
223 SysAssertf((pCanvas != null), "Failed to get canvas.");
225 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
227 r = pCanvas->Clear();
228 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
230 r = DrawBackground(*pCanvas);
231 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
233 r = DrawItem(*pCanvas);
234 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
236 r = DrawArrow(*pCanvas);
237 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
250 _DateTimeBarPresenter::DrawFocus()
252 Canvas* pCanvas = __pDateTimeBar->GetCanvasN();
253 SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
255 result r = E_SUCCESS;
257 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pFocusBitmap))
259 r = pCanvas->DrawNinePatchedBitmap(__focusBounds, *__pFocusBitmap);
260 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
264 r = pCanvas->DrawBitmap(__focusBounds, *__pFocusBitmap);
265 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
274 _DateTimeBarPresenter::SetItemFocused(bool isFocused)
278 __focusedIndex = (GetSelectedItemIndex() - 1);
279 _DateTimeBarItem* pItem = null;
280 pItem = GetItemAt(__focusedIndex);
282 __focusBounds = pItem->GetBounds();
284 __isFocused = isFocused;
289 _DateTimeBarPresenter::DrawItem(Canvas& canvas)
291 result r = E_SUCCESS;
293 FloatRectangle clientBounds = canvas.GetBoundsF();
295 _DateTimeBarItem* pDrawItem = null;
296 FloatRectangle itemBounds(0.0f, 0.0f, 0.0f, 0.0f);
301 GET_COLOR_CONFIG(DATETIMEBAR::TEXT_NORMAL, textColor);
303 Color textPressedColor;
304 GET_COLOR_CONFIG(DATETIMEBAR::TEXT_PRESSED, textPressedColor);
306 _DateTimeBarItemStatus itemStatus = DATETIMEBAR_ITEM_STATUS_NORMAL;
308 int itemCount = GetItemCount();
310 for (int i = __pDateTimeBarModel->GetFirstDrawnItemIndex(); i < itemCount; i++)
312 pDrawItem = __pDateTimeBarModel->GetItemAt(i);
313 if (pDrawItem == null)
318 itemBounds = pDrawItem->GetBounds();
320 if (itemBounds.x + itemBounds.width <= 0)
325 drawText = pDrawItem->GetText();
327 if (drawText.CompareTo(__selectedText) == 0)
329 pDrawItem->SetStatus(DATETIMEBAR_ITEM_STATUS_SELECTED);
332 itemStatus = pDrawItem->GetStatus();
334 float fontSize = GetFontSize();
336 TextSimple* pSimpleText = null;
337 TextObject* pTextObject = new (std::nothrow) TextObject;
338 SysTryReturn(NID_UI_CTRL, (pTextObject != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
340 pTextObject->Construct();
341 pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(drawText.GetPointer())), drawText.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
342 pTextObject->AppendElement(*pSimpleText);
344 pTextObject->SetAlignment(TEXT_OBJECT_ALIGNMENT_CENTER | TEXT_OBJECT_ALIGNMENT_MIDDLE);
345 pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
346 pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
348 SysAssertf(__pFont != null, "Font instance is null");
350 if (itemStatus == DATETIMEBAR_ITEM_STATUS_SELECTED)
352 (_FontImpl::GetInstance(*__pFont))->SetSize(fontSize);
353 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
354 pTextObject->SetFont(__pFont, 0, pTextObject->GetTextLength());
355 pTextObject->SetForegroundColor(textPressedColor, 0, pTextObject->GetTextLength());
359 (_FontImpl::GetInstance(*__pFont))->SetSize(fontSize);
360 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
361 pTextObject->SetFont(__pFont, 0, pTextObject->GetTextLength());
362 pTextObject->SetForegroundColor(textColor, 0, pTextObject->GetTextLength());
365 pTextObject->SetBounds(itemBounds);
366 pTextObject->Draw(*_CanvasImpl::GetInstance(canvas));
370 if ((itemBounds.x + itemBounds.width + GetLeftRightMargin()) >= clientBounds.width)
380 _DateTimeBarPresenter::DrawBackground(Canvas& canvas)
382 result r = E_SUCCESS;
384 FloatRectangle bodyAreaBounds = GetBodyBounds();
386 if (__pBgColorReplacementBitmap != null)
388 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pBgColorReplacementBitmap))
390 r = canvas.DrawNinePatchedBitmap(bodyAreaBounds, *__pBgColorReplacementBitmap);
391 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
395 r = canvas.DrawBitmap(bodyAreaBounds, *__pBgColorReplacementBitmap);
396 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
402 r = canvas.DrawRectangle(bodyAreaBounds);
403 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
410 _DateTimeBarPresenter::DrawArrow(Canvas& canvas)
412 result r = E_SUCCESS;
413 FloatRectangle arrowAreaBounds = GetArrowBounds();
415 if (__pArrowColorReplacementBitmap != null)
417 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pArrowColorReplacementBitmap))
419 r = canvas.DrawNinePatchedBitmap(arrowAreaBounds, *__pArrowColorReplacementBitmap);
420 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
424 r = canvas.DrawBitmap(arrowAreaBounds, *__pArrowColorReplacementBitmap);
425 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
433 _DateTimeBarPresenter::SetItemSelected(int index)
435 __pDateTimeBarModel->SetSelectedItemIndex(index);
440 _DateTimeBarPresenter::GetSelectedItemIndex(void) const
442 return __pDateTimeBarModel->GetSelectedItemIndex();
446 _DateTimeBarPresenter::GetItemIndexFromPosition(const FloatPoint& point) const
448 FloatRectangle clientBounds = __pDateTimeBar->GetBoundsF();
450 if (point.x > clientBounds.width
451 || point.y > clientBounds.height)
456 int itemIndex = __pDateTimeBarModel->GetFirstDrawnItemIndex();
457 _DateTimeBarItem* pItem = __pDateTimeBarModel->GetItemAt(itemIndex);
459 float itemMargin = 0.0f;
460 itemMargin = GetItemMargin();
462 while (pItem != null)
464 FloatRectangle itemBounds = pItem->GetBounds();
466 if (itemBounds.x > clientBounds.x)
468 if (itemIndex == __pDateTimeBarModel->GetFirstDrawnItemIndex())
470 startX = itemBounds.x;
473 itemBounds.x -= startX;
476 itemBounds.x = itemBounds.x - (itemMargin / 2.0f);
477 itemBounds.width = itemBounds.width + itemMargin;
479 if (itemBounds.Contains(point) == true)
486 if (itemIndex == GetItemCount())
491 pItem = __pDateTimeBarModel->GetItemAt(itemIndex);
498 _DateTimeBarPresenter::SetItemStatus(int index, _DateTimeBarItemStatus status)
500 _DateTimeBarItem* pItem = __pDateTimeBarModel->GetItemAt(index);
501 SysTryReturn(NID_UI_CTRL, pItem, E_SYSTEM, E_SYSTEM,
502 "[E_SYSTEM] A system error has occurred. Failed to get _DateTimeBarItem at index (%d).", index);
504 if (status != DATETIMEBAR_ITEM_STATUS_NORMAL)
506 __pDateTimeBarModel->SetSelectedItemIndex(index);
508 pItem->SetStatus(status);
513 _DateTimeBarItemStatus
514 _DateTimeBarPresenter::GetItemStatus(int index) const
516 _DateTimeBarItem* pItem = __pDateTimeBarModel->GetItemAt(index);
517 SysTryReturn(NID_UI_CTRL, pItem, DATETIMEBAR_ITEM_STATUS_NORMAL, E_SYSTEM,
518 "[E_SYSTEM] A system error has occurred. Failed to get _DateTimeBarItem at index (%d).", index);
520 return pItem->GetStatus();
524 _DateTimeBarPresenter::GetFirstDrawnItemIndex(void) const
526 return __pDateTimeBarModel->GetFirstDrawnItemIndex();
530 _DateTimeBarPresenter::SetFirstDrawnItemIndex(int index)
532 __pDateTimeBarModel->SetFirstDrawnItemIndex(index);
537 _DateTimeBarPresenter::GetMinimumValue(void) const
539 return __pDateTimeBarModel->GetMinimumValue();
543 _DateTimeBarPresenter::SetMinimumValue(int minValue)
545 __pDateTimeBarModel->SetMinimumValue(minValue);
550 _DateTimeBarPresenter::GetMaximumValue(void) const
552 return __pDateTimeBarModel->GetMaximumValue();
556 _DateTimeBarPresenter::SetMaximumValue(int maxValue)
558 __pDateTimeBarModel->SetMaximumValue(maxValue);
563 _DateTimeBarPresenter::GetItemWidth(void) const
565 result r = E_SUCCESS;
567 _DateTimeId boxId = __pDateTimeBar->GetSelectedBoxId();
569 float itemWidth = 0.0f;
571 if (boxId == DATETIME_ID_YEAR)
573 GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth);
575 else if (boxId == DATETIME_ID_DAY || boxId == DATETIME_ID_HOUR || boxId == DATETIME_ID_MINUTE)
577 GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth);
579 else if (boxId == DATETIME_ID_MONTH)
581 GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth);
583 FloatDimension textArea;
586 GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_FONT_SIZE, __pDateTimeBar->GetOrientation(), fontSize);
588 SysAssertf(__pFont != null, "Font instance is null");
590 (_FontImpl::GetInstance(*__pFont))->SetSize(fontSize);
591 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
593 for (int i = DATETIME_MONTH_MIN; i <= DATETIME_MONTH_MAX; i++)
596 _DateTimeUtils dateTimeUtils;
597 string = dateTimeUtils.GetMonthString(i);
599 r = __pFont->GetTextExtent(string, string.GetLength(), textArea);
600 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
602 if (textArea.width > itemWidth)
604 itemWidth = textArea.width;
613 _DateTimeBarPresenter::GetFontSize(void) const
615 float fontSize = 0.0f;
616 _DateTimeId boxId = __pDateTimeBar->GetSelectedBoxId();
618 if (boxId == DATETIME_ID_YEAR)
620 GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_FONT_SIZE, _ControlManager::GetInstance()->GetOrientation(), fontSize);
622 else if (boxId == DATETIME_ID_DAY || boxId == DATETIME_ID_HOUR || boxId == DATETIME_ID_MINUTE)
624 GET_SHAPE_CONFIG(DATETIMEBAR::DAY_FONT_SIZE, _ControlManager::GetInstance()->GetOrientation(), fontSize);
626 else if (boxId == DATETIME_ID_MONTH)
628 GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_FONT_SIZE, _ControlManager::GetInstance()->GetOrientation(), fontSize);
635 _DateTimeBarPresenter::GetLeftRightMargin(void) const
637 float leftRightMargin = 0.0f;
638 _DateTimeId boxId = __pDateTimeBar->GetSelectedBoxId();
640 if (boxId == DATETIME_ID_YEAR)
642 GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_LEFT_RIGHT_MARGIN, _ControlManager::GetInstance()->GetOrientation(), leftRightMargin);
644 else if (boxId == DATETIME_ID_DAY || boxId == DATETIME_ID_HOUR || boxId == DATETIME_ID_MINUTE)
646 GET_SHAPE_CONFIG(DATETIMEBAR::DAY_LEFT_RIGHT_MARGIN, _ControlManager::GetInstance()->GetOrientation(), leftRightMargin);
648 else if (boxId == DATETIME_ID_MONTH)
650 GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_LEFT_RIGHT_MARGIN, _ControlManager::GetInstance()->GetOrientation(), leftRightMargin);
653 return leftRightMargin;
657 _DateTimeBarPresenter::GetItemMargin(void) const
660 _DateTimeId boxId = __pDateTimeBar->GetSelectedBoxId();
662 if (boxId == DATETIME_ID_YEAR)
664 GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_MARGIN, _ControlManager::GetInstance()->GetOrientation(), margin);
666 else if (boxId == DATETIME_ID_DAY || boxId == DATETIME_ID_HOUR || boxId == DATETIME_ID_MINUTE)
668 GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_MARGIN, _ControlManager::GetInstance()->GetOrientation(), margin);
670 else if (boxId == DATETIME_ID_MONTH)
672 GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_MARGIN, _ControlManager::GetInstance()->GetOrientation(), margin);
679 _DateTimeBarPresenter::AdjustItemPosition(float distance)
683 _DateTimeBarItem* pItem = null;
685 pItem = __pDateTimeBarModel->GetItemAt(index);
687 while (pItem != null)
689 FloatRectangle bounds = pItem->GetBounds();
690 bounds.x += distance;
691 pItem->SetBounds(bounds);
694 if (index == GetItemCount())
699 pItem = __pDateTimeBarModel->GetItemAt(index);
702 return AdjustAccessibilityElementPosition(distance);
706 _DateTimeBarPresenter::AdjustAccessibilityElementPosition(float distance)
708 _AccessibilityElement* pAccessibilityElement = null;
712 pAccessibilityElement = __pDateTimeBar->GetAccessibilityElementAt(index);
714 while (pAccessibilityElement != null)
716 FloatRectangle bounds = pAccessibilityElement->GetBounds();
717 bounds.x += distance;
718 pAccessibilityElement->SetBounds(bounds);
721 if (index == GetItemCount())
726 pAccessibilityElement = __pDateTimeBar->GetAccessibilityElementAt(index);
733 _DateTimeBarPresenter::GetDisplayedText(int value) const
737 if (__pDateTimeBar->GetSelectedBoxId() == DATETIME_ID_MONTH)
740 _DateTimeUtils dateTimeUtils;
741 monthString = dateTimeUtils.GetMonthString(value);
742 string.Append(monthString);
744 else if (__pDateTimeBar->GetSelectedBoxId() == DATETIME_ID_YEAR)
746 string.Format(10, L"%04d", value);
750 string.Format(10, L"%02d", value);
757 _DateTimeBarPresenter::AddItems(int actionId)
759 result r = E_SUCCESS;
760 int cachingSize = __pDateTimeBarModel->GetMaxCachingSize() / 2;
762 int firstDrawItemIndex = cachingSize;
764 int value = actionId;
765 float startPosition = 0.0f;
766 float itemWidth = GetItemWidth();
767 float itemMargin = GetItemMargin();
769 startPosition = (GetWindowBounds().width) / 2.0f;
770 startPosition = startPosition + (itemWidth / 2.0f) + itemMargin;
771 __pDateTimeBarModel->SetItemStartPosition(startPosition);
773 while (cachingSize > 0)
777 string = GetDisplayedText(value);
779 r = __pDateTimeBarModel->AddItem(string, value, __pDateTimeBar->GetAlignment(), itemWidth, itemMargin);
780 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
782 AddAccessibilityElement();
787 if (__pDateTimeBarModel->GetMaximumValue() < value)
789 value = __pDateTimeBarModel->GetMinimumValue();
793 r = InsertItems(actionId -1);
794 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
796 _DateTimeBarItem* pItem = null;
797 pItem = GetItemAt(firstDrawItemIndex);
801 __selectedText.Clear();
802 __selectedText.Append(pItem->GetText().GetPointer());
805 SetItemStatus(firstDrawItemIndex, DATETIMEBAR_ITEM_STATUS_SELECTED);
811 _DateTimeBarPresenter::InsertItems(int actionId)
813 result r = E_SUCCESS;
815 int cachingSize = __pDateTimeBarModel->GetMaxCachingSize() / 2;
817 int value = actionId;
818 float itemWidth = GetItemWidth();
819 float itemMargin = GetItemMargin();
821 while (cachingSize > 0)
825 if (value < __pDateTimeBarModel->GetMinimumValue())
827 value = __pDateTimeBarModel->GetMaximumValue();
830 string = GetDisplayedText(value);
831 r = __pDateTimeBarModel->InsertItemAt(0, string, value, __pDateTimeBar->GetAlignment(), itemWidth, itemMargin);
832 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
833 InsertAccessibilityElementAt(0);
843 _DateTimeBarPresenter::InsertItem(int index, int actionId)
845 result r = E_SUCCESS;
849 string = GetDisplayedText(actionId);
851 r = __pDateTimeBarModel->InsertItemAt(index, string, actionId, __pDateTimeBar->GetAlignment(), GetItemWidth(), GetItemMargin());
852 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
853 InsertAccessibilityElementAt(index);
858 _DateTimeBarPresenter::AddItem(int actionId)
860 result r = E_SUCCESS;
864 string = GetDisplayedText(actionId);
866 r = __pDateTimeBarModel->AddItem(string, actionId, __pDateTimeBar->GetAlignment(), GetItemWidth(), GetItemMargin());
867 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
869 AddAccessibilityElement();
874 _DateTimeBarPresenter::DeleteItem(int index)
876 int itemCount = GetItemCount();
878 SysTryReturn(NID_UI_CTRL, itemCount > 0, E_INVALID_ARG, E_INVALID_ARG,
879 "[E_INVALID_ARG] Invalid argument is used. index = %d", index);
881 SysTryReturn(NID_UI_CTRL, index < itemCount, E_INVALID_ARG, E_INVALID_ARG,
882 "[E_INVALID_ARG] Invalid argument is used. index = %d", index);
884 SysTryReturn(NID_UI_CTRL, index >= 0, E_INVALID_ARG, E_INVALID_ARG,
885 "[E_INVALID_ARG] Invalid argument is used. index = %d", index);
887 result r = E_SUCCESS;
889 r = __pDateTimeBarModel->RemoveItemAt(index);
890 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
892 __pDateTimeBar->RemoveAccessibilityElementAt(index);
898 _DateTimeBarPresenter::RemoveAllItems(void)
900 SysTryReturn(NID_UI_CTRL, GetItemCount() > 0, E_INVALID_OPERATION, E_INVALID_OPERATION,
901 "[E_INVALID_OPERATION] Items count is zero.");
903 result r = E_SUCCESS;
905 __pDateTimeBarModel->RemoveAllItems();
907 __pDateTimeBar->RemoveAllAccessibilityElement();
913 _DateTimeBarPresenter::GetItemCount(void) const
915 return __pDateTimeBarModel->GetItemCount();
919 _DateTimeBarPresenter::GetItemAt(int index) const
921 return __pDateTimeBarModel->GetItemAt(index);
925 _DateTimeBarPresenter::CalculateWindowBounds(void)
927 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
928 FloatRectangle windowAreaBounds = FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f);
929 FloatRectangle bodyAreaBounds = FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f);
930 FloatRectangle arrowAreaBounds = FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f);
932 FloatRectangle parentWindowBounds = __pDateTimeBar->GetParentWindowBounds();
934 arrowAreaBounds = GetArrowBounds();
938 GET_SHAPE_CONFIG(DATETIMEBAR::ARROW_HEIGHT, orientation, arrowAreaBounds.height);
939 GET_SHAPE_CONFIG(DATETIMEBAR::ARROW_WIDTH, orientation, arrowAreaBounds.width);
940 GET_SHAPE_CONFIG(DATETIMEBAR::ITEM_HEIGHT, orientation, bodyAreaBounds.height);
942 bodyAreaBounds.width = parentWindowBounds.width;
944 bodyAreaBounds.x = 0.0f;
945 FloatPoint tempPoint = __pDateTimeBar->GetPositionF();
946 windowAreaBounds.x = tempPoint.x;
948 if (__pDateTimeBar->GetAlignment() == DATETIME_BAR_ALIGN_DOWN)
950 bodyAreaBounds.y = arrowAreaBounds.height;
951 arrowAreaBounds.y = 0.0f;
952 windowAreaBounds.y = tempPoint.y - arrowAreaBounds.height;
956 arrowAreaBounds.y = bodyAreaBounds.height;
957 bodyAreaBounds.y = 0.0f;
958 windowAreaBounds.y = tempPoint.y;
961 windowAreaBounds.width = bodyAreaBounds.width;
962 windowAreaBounds.height = bodyAreaBounds.height + arrowAreaBounds.height;
964 SetBodyBounds(bodyAreaBounds);
965 SetArrowBounds(arrowAreaBounds);
966 SetWindowBounds(windowAreaBounds);
967 __pDateTimeBar->SetMovable(true);
968 __pDateTimeBar->SetResizable(true);
969 __pDateTimeBar->SetBounds(windowAreaBounds);
970 __pDateTimeBar->SetMovable(false);
971 __pDateTimeBar->SetResizable(false);
977 _DateTimeBarPresenter::SetBodyBounds(const FloatRectangle& bounds)
979 __bodyAreaBounds = bounds;
984 _DateTimeBarPresenter::GetBodyBounds(void) const
986 return __bodyAreaBounds;
990 _DateTimeBarPresenter::SetArrowBounds(const FloatRectangle& bounds)
992 __arrowAreaBounds = bounds;
997 _DateTimeBarPresenter::GetArrowBounds(void) const
999 return __arrowAreaBounds;
1003 _DateTimeBarPresenter::SetWindowBounds(const FloatRectangle& bounds)
1005 __windowAreaBounds = bounds;
1010 _DateTimeBarPresenter::GetWindowBounds(void) const
1012 return __windowAreaBounds;
1016 _DateTimeBarPresenter::OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo)
1023 _KeyCode keyCode = keyInfo.GetKeyCode();
1029 if ((__focusBounds.x + __focusBounds.width) > (GetWindowBounds().width - __focusBounds.width))
1035 __focusBounds.x = __focusBounds.x + __focusBounds.width + GetItemMargin();
1036 __pDateTimeBar->Invalidate();
1039 __focusedIndex = GetItemIndexFromPosition(FloatPoint(__focusBounds.x, __focusBounds.y));
1046 if ((__focusBounds.x - __focusBounds.width) < 0)
1052 __focusBounds.x = __focusBounds.x - __focusBounds.width - GetItemMargin();
1053 __pDateTimeBar->Invalidate();
1055 __focusedIndex = GetItemIndexFromPosition(FloatPoint(__focusBounds.x, __focusBounds.y));
1062 _DateTimeBarItem* pItem = null;
1064 SetItemSelected(__focusedIndex);
1065 __pDateTimeBarModel->SetFirstDrawnItemIndex((__focusedIndex));
1067 if (__focusedIndex >= 0)
1069 pItem = GetItemAt(__focusedIndex);
1074 __pDateTimeBar->SetVisibleState(false);
1075 __pDateTimeBar->Close();
1077 __pDateTimeBar->FireActionEvent(pItem->GetActionId());
1079 if (__pDateTimeBar->GetSelectedBoxId() >= DATETIME_ID_YEAR && __pDateTimeBar->GetSelectedBoxId() <= DATETIME_ID_DAY)
1081 __pDateTimeBar->FireDateTimeChangeEvent(DATE_INTERNAL_CHANGE_SAVED);
1083 else if (__pDateTimeBar->GetSelectedBoxId() >= DATETIME_ID_HOUR && __pDateTimeBar->GetSelectedBoxId() <= DATETIME_ID_MINUTE)
1085 __pDateTimeBar->FireDateTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
1088 __isFocused = false;
1102 _DateTimeBarPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1104 if (&source != __pDateTimeBar)
1109 __isFlickEnabled = true;
1111 if (GetBodyBounds().Contains(touchinfo.GetCurrentPosition()) == false)
1113 __isFlickEnabled = false;
1117 if (__isFlickInProgress)
1119 ResetFlickAnimationTimer();
1122 __touchMoveHandled = false;
1124 __currentPoint = touchinfo.GetCurrentPosition();
1126 int index = GetItemIndexFromPosition(touchinfo.GetCurrentPosition());
1133 __pDateTimeBar->Invalidate();
1139 _DateTimeBarPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1141 if (&source != __pDateTimeBar)
1146 if (GetBodyBounds().Contains(touchinfo.GetCurrentPosition()) == false && !__isFlickInProgress && !__isTouchMoved)
1148 __isTouchMoved = false;
1149 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1150 __pDateTimeBar->SetVisibleState(false);
1151 __pDateTimeBar->Close();
1152 ResetFlickAnimationTimer();
1153 __pDateTimeBar->FireDateTimeChangeEvent(DATE_INTERNAL_CHANGE_CANCELED);
1157 int index = GetItemIndexFromPosition(touchinfo.GetCurrentPosition());
1158 bool isEventFire = true;
1160 if (index != -1 && __isTouchMoved == false && __isFlickInProgress == false)
1162 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1163 SetItemStatus(index, DATETIMEBAR_ITEM_STATUS_SELECTED);
1164 __pDateTimeBarModel->SetFirstDrawnItemIndex(index);
1168 isEventFire = false;
1171 __isTouchMoved = false;
1174 __pDateTimeBar->Invalidate();
1176 if (isEventFire == true)
1178 int index = GetFirstDrawnItemIndex();
1180 _DateTimeBarItem* pItem = null;
1184 pItem = GetItemAt(index);
1189 __pDateTimeBar->SetVisibleState(false);
1190 __pDateTimeBar->Close();
1192 __pDateTimeBar->FireActionEvent(pItem->GetActionId());
1194 if (__pDateTimeBar->GetSelectedBoxId() >= DATETIME_ID_YEAR && __pDateTimeBar->GetSelectedBoxId() <= DATETIME_ID_DAY)
1196 __pDateTimeBar->FireDateTimeChangeEvent(DATE_INTERNAL_CHANGE_SAVED);
1198 else if (__pDateTimeBar->GetSelectedBoxId() >= DATETIME_ID_HOUR && __pDateTimeBar->GetSelectedBoxId() <= DATETIME_ID_MINUTE)
1200 __pDateTimeBar->FireDateTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
1209 _DateTimeBarPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1211 if (&source != __pDateTimeBar)
1216 if (GetBodyBounds().Contains(touchinfo.GetCurrentPosition()) == false || __touchMoveHandled == true)
1221 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
1223 __isTouchMoved = true;
1225 FloatDimension screen(0.0f, 0.0f);
1226 GET_DIMENSION_CONFIG(DATETIMEBAR::DEFAULT_SIZE, orientation, screen);
1228 const float _BOUNDARY_X_POSITION = screen.width * 2.0f;
1229 float distance = touchinfo.GetCurrentPosition().x - __currentPoint.x;
1231 _DateTimeBarItem* pItem = null;
1233 FloatRectangle itemBounds;
1235 bool needItem = false;
1236 int updateItemCount = 1;
1238 if (distance > 0.0f)
1240 pItem = __pDateTimeBarModel->GetItemAt(GetFirstDrawnItemIndex());
1247 itemBounds = pItem->GetBounds();
1249 __distance += distance;
1251 if (__distance > itemBounds.width / 2.0f)
1254 if (__distance > itemBounds.width)
1256 updateItemCount = UPDATE_ITEM_COUNT;
1259 if (needItem == true)
1261 while (updateItemCount > 0)
1263 pItem = __pDateTimeBarModel->GetItemAt(GetFirstDrawnItemIndex());
1269 int actionId = pItem->GetActionId() - 1;
1271 if (__pDateTimeBarModel->GetMinimumValue() > actionId)
1273 actionId = __pDateTimeBarModel->GetMaximumValue();
1276 if (pItem->GetBounds().x > _BOUNDARY_X_POSITION * -1.0f)
1278 if (InsertItem(0, actionId) == E_SUCCESS)
1280 SetFirstDrawnItemIndex(0);
1284 if (GetItemCount() >= __pDateTimeBarModel->GetMaxCachingSize())
1286 DeleteItem(GetItemCount() - 1);
1296 pItem = __pDateTimeBarModel->GetItemAt(GetItemCount() - 1);
1302 itemBounds = pItem->GetBounds();
1304 __distance += distance;
1306 if (__distance * -1.0f > itemBounds.width / 2.0f)
1309 if (__distance * -1.0f > itemBounds.width)
1311 updateItemCount = UPDATE_ITEM_COUNT;
1316 if (needItem == true)
1318 while (updateItemCount > 0)
1320 pItem = __pDateTimeBarModel->GetItemAt(GetItemCount() - 1);
1326 int actionId = pItem->GetActionId() + 1;
1328 if (__pDateTimeBarModel->GetMaximumValue() < actionId)
1330 actionId = __pDateTimeBarModel->GetMinimumValue();
1333 if (pItem->GetBounds().x < _BOUNDARY_X_POSITION)
1338 if (GetItemCount() >= __pDateTimeBarModel->GetMaxCachingSize())
1341 SetFirstDrawnItemIndex(0);
1348 __currentPoint = touchinfo.GetCurrentPosition();
1350 AdjustItemPosition(distance);
1352 __pDateTimeBar->Invalidate();
1358 _DateTimeBarPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1360 if (&source != __pDateTimeBar)
1365 __isTouchMoved = false;
1368 __pDateTimeBar->Invalidate();
1374 _DateTimeBarPresenter::LoadItems()
1376 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
1378 FloatDimension screen(0.0f, 0.0f);
1379 GET_DIMENSION_CONFIG(DATETIMEBAR::DEFAULT_SIZE, orientation, screen);
1381 const float _BOUNDARY_X_POSITION = screen.width * 2.0f;
1383 _DateTimeBarItem* pItem = null;
1385 int updateItemCount = UPDATE_ITEM_COUNT;
1387 if (__distance > 0.0f)
1389 pItem = __pDateTimeBarModel->GetItemAt(GetFirstDrawnItemIndex());
1397 while (updateItemCount > 0)
1399 pItem = __pDateTimeBarModel->GetItemAt(GetFirstDrawnItemIndex());
1405 int actionId = pItem->GetActionId() - 1;
1407 if (__pDateTimeBarModel->GetMinimumValue() > actionId)
1409 actionId = __pDateTimeBarModel->GetMaximumValue();
1412 if (pItem->GetBounds().x > _BOUNDARY_X_POSITION * -1)
1414 if (InsertItem(0, actionId) == E_SUCCESS)
1416 SetFirstDrawnItemIndex(0);
1420 if (GetItemCount() >= __pDateTimeBarModel->GetMaxCachingSize())
1422 DeleteItem(GetItemCount() - 1);
1430 pItem = __pDateTimeBarModel->GetItemAt(GetItemCount() - 1);
1437 while (updateItemCount > 0)
1439 pItem = __pDateTimeBarModel->GetItemAt(GetItemCount() - 1);
1445 int actionId = pItem->GetActionId() + 1;
1447 if (__pDateTimeBarModel->GetMaximumValue() < actionId)
1449 actionId = __pDateTimeBarModel->GetMinimumValue();
1452 if (pItem->GetBounds().x < _BOUNDARY_X_POSITION)
1457 if (GetItemCount() >= __pDateTimeBarModel->GetMaxCachingSize())
1460 SetFirstDrawnItemIndex(0);
1470 _DateTimeBarPresenter::OnFlickGestureDetected(int distanceX,int distanceY,int duration)
1472 if (!__isFlickEnabled)
1477 __isFlickInProgress = true;
1478 __isInitialAnimation = false;
1483 __flickAnimation.CalculateInitializeVelocity(distanceX, 0, duration, &velX, &velY);
1484 __flickAnimation.InitializeFlickAmount(velX * FLICK_ANIMATION_VELOCITY_FACTOR_DATE_TIME_BAR);
1486 StartFlickAnimationTimer();
1491 _DateTimeBarPresenter::StartFlickAnimation(void)
1496 __flickAnimation.CalculateNextMove(&moveX, &moveY);
1498 __distance = _CoordinateSystemUtils::ConvertToFloat(moveX);
1501 StartFlickAnimationTimer();
1505 AdjustItemPosition(__distance);
1511 _DateTimeBarPresenter::StartAnimationEffect(void)
1513 __isInitialAnimation = true;
1514 __distance = -10.0f;
1516 if (__initialAnimationValue >= 0.0f)
1518 __initialAnimationValue = __initialAnimationValue + __distance;
1519 StartFlickAnimationTimer();
1522 AdjustItemPosition(__distance);
1527 __initialAnimationValue = 0.0f;
1528 __isInitialAnimation = false;
1529 ResetFlickAnimationTimer();
1530 ValidateAndAdjustStartPosition();
1537 _DateTimeBarPresenter::StartFlickAnimationTimer(void)
1539 result r = E_SUCCESS;
1541 if (__pFlickAnimationTimer == null)
1543 __pFlickAnimationTimer = new (std::nothrow) Timer;
1544 SysTryReturn(NID_UI_CTRL, (__pFlickAnimationTimer != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create timer.");
1546 r = __pFlickAnimationTimer->Construct(*this);
1547 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1551 __pFlickAnimationTimer->Cancel();
1554 r = __pFlickAnimationTimer->Start(FLICK_ANIMATION_TIMER_PERIOD);
1555 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1560 ResetFlickAnimationTimer();
1565 _DateTimeBarPresenter::ResetFlickAnimationTimer(void)
1567 if (__pFlickAnimationTimer)
1569 delete __pFlickAnimationTimer;
1570 __pFlickAnimationTimer = null;
1573 __isFlickInProgress = false;
1578 _DateTimeBarPresenter::OnTimerExpired(Timer& timer)
1580 __isFlickInProgress = false;
1581 if (&timer == __pFlickAnimationTimer)
1583 if (__isInitialAnimation)
1585 StartAnimationEffect();
1589 StartFlickAnimation();
1596 _DateTimeBarPresenter::ValidateAndAdjustStartPosition(void)
1599 float adjustPosition = 0.0f;
1600 float leftMargin = GetLeftRightMargin();
1601 FloatRectangle bodyBounds = GetBodyBounds();
1603 index = GetItemIndexFromPosition(FloatPoint(GetLeftRightMargin() + GetItemMargin(), bodyBounds.y + (bodyBounds.height / 2.0f)));
1610 _DateTimeBarItem* pDrawItem = null;
1611 pDrawItem = __pDateTimeBarModel->GetItemAt(index);
1613 if (pDrawItem == null)
1618 if (pDrawItem->GetBounds().x > 0.0f && pDrawItem->GetBounds().x < leftMargin)
1620 adjustPosition = leftMargin - pDrawItem->GetBounds().x;
1622 else if (pDrawItem->GetBounds().x < 0.0f)
1624 pDrawItem = __pDateTimeBarModel->GetItemAt(index + 1);
1625 if (pDrawItem == null)
1629 adjustPosition = leftMargin - pDrawItem->GetBounds().x;
1631 else if (pDrawItem->GetBounds().x > leftMargin)
1633 adjustPosition = leftMargin - pDrawItem->GetBounds().x;
1636 AdjustItemPosition(adjustPosition);
1642 _DateTimeBarPresenter::SetInitialAnimationValue(float animationValue)
1644 __initialAnimationValue = animationValue;
1649 _DateTimeBarPresenter::SetFont(Font& pFont)
1654 __pFont = _FontImpl::CloneN(pFont);
1655 SysTryReturnVoidResult(NID_UI_CTRL, (__pFont != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
1661 _DateTimeBarPresenter::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
1667 _DateTimeBarPresenter::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
1673 _DateTimeBarPresenter::OnTouchMoveHandled(const Tizen::Ui::_Control& control)
1675 __touchMoveHandled = true;
1677 __isTouchMoved = false;
1680 __pDateTimeBar->Invalidate();
1686 _DateTimeBarPresenter::AddAccessibilityElement(void)
1688 _DateTimeBarItem* pItem = null;
1689 pItem = __pDateTimeBarModel->GetItemAt(__pDateTimeBarModel->GetItemCount() - 1);
1696 if (__pDateTimeBar->GetSelectedBoxId() == DATETIME_ID_MONTH)
1698 __pDateTimeBar->AddAccessibilityElement(pItem->GetBounds(), __pDateTimeBar->GetMonthValue(pItem->GetActionId()));
1702 __pDateTimeBar->AddAccessibilityElement(pItem->GetBounds(), pItem->GetText());
1709 _DateTimeBarPresenter::InsertAccessibilityElementAt(int index)
1711 _DateTimeBarItem* pItem = null;
1712 pItem = __pDateTimeBarModel->GetItemAt(index);
1719 if (__pDateTimeBar->GetSelectedBoxId() == DATETIME_ID_MONTH)
1721 __pDateTimeBar->InsertAccessibilityElementAt(index, pItem->GetBounds(), __pDateTimeBar->GetMonthValue(pItem->GetActionId()));
1725 __pDateTimeBar->InsertAccessibilityElementAt(index, pItem->GetBounds(), pItem->GetText());
1732 _DateTimeBarPresenter::MoveNext(void)
1734 __distance = (GetItemWidth() + GetItemMargin()) * (-1.0f);
1736 AdjustItemPosition(__distance);
1742 _DateTimeBarPresenter::MovePrevious(void)
1744 __distance = (GetItemWidth() + GetItemMargin());
1746 AdjustItemPosition(__distance);
1751 }}} // Tizen::Ui::Controls