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_EditTimePresenter.cpp
20 * @brief This is the implementation file for the _EditTimePresenter class.
23 #include <FSysSettingInfo.h>
24 #include <FGrpColor.h>
25 #include <FUiAnimAnimationTransaction.h>
26 #include <FUiAnimVisualElementPropertyAnimation.h>
27 #include <FGrp_BitmapImpl.h>
28 #include <FGrp_TextTextObject.h>
29 #include <FGrp_TextTextSimple.h>
30 #include <FGrp_FontImpl.h>
31 #include "FUi_CoordinateSystemUtils.h"
32 #include "FUi_ResourceManager.h"
33 #include "FUiAnim_VisualElement.h"
34 #include "FUiCtrl_EditTimePresenter.h"
35 #include "FUiCtrl_EditTime.h"
36 #include "FUiCtrl_DateTimeModel.h"
37 #include "FUiCtrl_DateTimeUtils.h"
40 using namespace Tizen::Graphics;
41 using namespace Tizen::Base;
42 using namespace Tizen::Graphics::_Text;
43 using namespace Tizen::Ui::Animations;
44 using namespace Tizen::System;
46 namespace Tizen { namespace Ui { namespace Controls
48 _EditTimePresenter::_EditTimePresenter(const String& title)
49 : __pEditDateTimeModel(null)
51 , __bounds(FloatRectangle())
52 , __titleBounds(FloatRectangle())
53 , __ampmString(String())
54 , __hourString(String())
55 , __minuteString(String())
58 , __is24hoursSet(false)
60 , __timePickerEnabled(true)
61 , __selectedId(DATETIME_ID_NONE)
62 , __lastSelectedId(DATETIME_ID_NONE)
63 , __focusId(DATETIME_ID_NONE)
64 , __touchMoveHandled(false)
65 , __pAmPmBgNormalColorReplacementBitmap(null)
66 , __pAmPmBgDisabledColorReplacementBitmap(null)
67 , __pAmPmBgPressedColorReplacementBitmap(null)
68 , __pAmPmBgHighlightedColorReplacementBitmap(null)
69 , __pAmPmBgEffectNomralBitmap(null)
70 , __pAmPmBgEffectPressedBitmap(null)
71 , __pAmPmBgEffectDisabledBitmap(null)
72 , __pColonColorReplacementBitmap(null)
73 , __pColonDisabledColorReplacementBitmap(null)
74 , __pContentBgNormalColorReplacementBitmap(null)
75 , __pContentBgDisabledColorReplacementBitmap(null)
76 , __pContentBgPressedColorReplacementBitmap(null)
77 , __pContentBgHighlightedColorReplacementBitmap(null)
78 , __pContentBgEffectNormalBitmap(null)
79 , __pContentBgEffectPressedBitmap(null)
80 , __pContentBgEffectDisabledBitmap(null)
81 , __pContentProvider(null)
85 , __amPmTextSize(0.0f)
86 , __titleFontSize(0.0f)
87 , __timeFontSize(0.0f)
88 , __isAnimating(false)
89 , __isEditTimeInitialized(false)
90 , __isEnterKeyPressed(false)
96 _EditTimePresenter::~_EditTimePresenter(void)
98 __textObject.RemoveAll();
99 __titleObject.RemoveAll();
101 delete __pEditDateTimeModel;
102 __pEditDateTimeModel = null;
104 delete __pAmPmBgNormalColorReplacementBitmap;
105 __pAmPmBgNormalColorReplacementBitmap = null;
107 delete __pAmPmBgDisabledColorReplacementBitmap;
108 __pAmPmBgDisabledColorReplacementBitmap = null;
110 delete __pAmPmBgPressedColorReplacementBitmap;
111 __pAmPmBgPressedColorReplacementBitmap = null;
113 delete __pAmPmBgHighlightedColorReplacementBitmap;
114 __pAmPmBgHighlightedColorReplacementBitmap = null;
116 delete __pAmPmBgEffectNomralBitmap;
117 __pAmPmBgEffectNomralBitmap = null;
119 delete __pAmPmBgEffectPressedBitmap;
120 __pAmPmBgEffectPressedBitmap = null;
122 delete __pAmPmBgEffectDisabledBitmap;
123 __pAmPmBgEffectDisabledBitmap = null;
125 delete __pColonColorReplacementBitmap;
126 __pColonColorReplacementBitmap = null;
128 delete __pColonDisabledColorReplacementBitmap;
129 __pColonDisabledColorReplacementBitmap = null;
131 delete __pContentBgNormalColorReplacementBitmap;
132 __pContentBgNormalColorReplacementBitmap = null;
134 delete __pContentBgDisabledColorReplacementBitmap;
135 __pContentBgDisabledColorReplacementBitmap = null;
137 delete __pContentBgPressedColorReplacementBitmap;
138 __pContentBgPressedColorReplacementBitmap = null;
140 delete __pContentBgHighlightedColorReplacementBitmap;
141 __pContentBgHighlightedColorReplacementBitmap = null;
143 delete __pContentBgEffectNormalBitmap;
144 __pContentBgEffectNormalBitmap = null;
146 delete __pContentBgEffectPressedBitmap;
147 __pContentBgEffectPressedBitmap = null;
149 delete __pContentBgEffectDisabledBitmap;
150 __pContentBgEffectDisabledBitmap = null;
152 if (__transactionId != 0)
154 AnimationTransaction::Stop(__transactionId);
157 if (__pContentProvider != null)
159 __pEditTime->GetVisualElement()->DetachChild(__pContentProvider);
160 __pContentProvider->Destroy();
161 __pContentProvider = null;
166 _EditTimePresenter::CreateInstanceN(const _EditTime& editTime, const String& title)
168 _EditTimePresenter* pEditTimePresenter = new (std::nothrow) _EditTimePresenter(title);
169 SysTryReturn(NID_UI_CTRL, pEditTimePresenter, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
171 pEditTimePresenter->__pEditTime = const_cast <_EditTime*>(&editTime);
173 pEditTimePresenter->__pEditDateTimeModel = new (std::nothrow) _DateTimeModel;
174 SysTryCatch(NID_UI_CTRL, pEditTimePresenter->__pEditDateTimeModel, , E_OUT_OF_MEMORY,
175 "[E_OUT_OF_MEMORY] Memory allocation failed.");
177 return pEditTimePresenter;
180 delete pEditTimePresenter;
185 _EditTimePresenter::GetTime(void) const
188 time.SetValue(DATETIME_YEAR_MIN, DATETIME_MONTH_MIN, DATETIME_DAY_MIN, GetHour(), GetMinute(), 0);
194 _EditTimePresenter::GetHour(void) const
196 return __pEditDateTimeModel->GetHour();
200 _EditTimePresenter::GetMinute(void) const
202 return __pEditDateTimeModel->GetMinute();
206 _EditTimePresenter::SetTime(const DateTime& time)
208 __pEditDateTimeModel->SetDateTime(time);
212 _EditTimePresenter::SetCurrentTime(void)
214 __pEditDateTimeModel->SetCurrentDateTime();
219 _EditTimePresenter::SetHour(int hour)
221 return __pEditDateTimeModel->SetHour(hour);
225 _EditTimePresenter::SetMinute(int minute)
227 return __pEditDateTimeModel->SetMinute(minute);
231 _EditTimePresenter::SetTimePickerEnabled(bool enable)
233 __timePickerEnabled = enable;
238 _EditTimePresenter::IsTimePickerEnabled(void) const
240 return __timePickerEnabled;
244 _EditTimePresenter::Set24HourNotationEnabled(bool enable)
247 __is24hoursSet = true;
252 _EditTimePresenter::Is24HourNotationEnabled(void) const
258 _EditTimePresenter::SetTimeConversion(void)
260 int hour = GetHour();
261 int minute = GetMinute();
265 int max = DATETIME_HOUR_MAX_FOR_24NOTATION;
269 __hourString.Format(10, L"%02d", hour - max);
271 else if (hour == DATETIME_HOUR_MIN)
273 __hourString.Format(10, L"%02d", hour + DATETIME_HOUR_MAX_FOR_24NOTATION);
277 __hourString.Format(10, L"%02d", hour);
280 __minuteString.Format(10, L"%02d", minute);
284 __hourString.Format(10, L"%02d", hour);
285 __minuteString.Format(10, L"%02d", minute);
292 _EditTimePresenter::SetAmEnabled(bool amEnable)
297 _DateTimeUtils dateTimeUtils;
298 dateTimeUtils.GetAmPm(textAm, AM_TYPE);
299 dateTimeUtils.GetAmPm(textPm, PM_TYPE);
301 __amEnable = amEnable;
302 int hour = GetHour();
306 __ampmString = textAm;
307 if (hour >= DATETIME_HOUR_MAX_FOR_24NOTATION)
309 SetHour(hour - DATETIME_HOUR_MAX_FOR_24NOTATION);
314 __ampmString = textPm;
315 if (hour < DATETIME_HOUR_MAX_FOR_24NOTATION)
317 SetHour(hour + DATETIME_HOUR_MAX_FOR_24NOTATION);
325 _EditTimePresenter::GetAmEnabled(void) const
331 _EditTimePresenter::GetDisplayAreaBoundsFromHoursStyle(_DateTimeId displayBoxId) const
333 SysTryReturn(NID_UI_CTRL, displayBoxId >= DATETIME_ID_HOUR && displayBoxId <= DATETIME_ID_AMPM, FloatRectangle(),
334 E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] displayBoxId is out of range.");
336 FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
338 float editTimeHeight = 0.0f;
339 float colonWidth = 0.0f;
340 float timeAmPmMargin = 0.0f;
341 float colonMargin = 0.0f;
342 float timeElementWidth = 0.0f;
343 float amPmHeight = 0.0f;
344 float timeHeight = 0.0f;
345 float titleTimeMargin = 0.0f;
346 float leftMargin = 0.0f;
348 GET_SHAPE_CONFIG(EDITTIME::HEIGHT, __pEditTime->GetOrientation(), editTimeHeight);
349 GET_SHAPE_CONFIG(EDITTIME::COLON_WIDTH, __pEditTime->GetOrientation(), colonWidth);
350 GET_SHAPE_CONFIG(EDITTIME::TIME_AMPM_MARGIN, __pEditTime->GetOrientation(), timeAmPmMargin);
351 GET_SHAPE_CONFIG(EDITTIME::COLON_MARGIN, __pEditTime->GetOrientation(), colonMargin);
352 GET_SHAPE_CONFIG(EDITTIME::AMPM_HEIGHT, __pEditTime->GetOrientation(), amPmHeight);
353 GET_SHAPE_CONFIG(EDITTIME::TITLE_TIME_MARGIN, __pEditTime->GetOrientation(), titleTimeMargin);
354 GET_SHAPE_CONFIG(EDITTIME::TIME_HEIGHT, __pEditTime->GetOrientation(), timeHeight);
356 GET_SHAPE_CONFIG(EDITTIME::TIME_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), leftMargin);
358 if (__pEditTime->GetBoundsF().height > editTimeHeight)
360 editTimeHeight = __pEditTime->GetBoundsF().height;
363 bounds.y = (editTimeHeight - timeHeight) / 2.0f;
365 if (!__title.IsEmpty())
367 if (displayBoxId == DATETIME_ID_AMPM)
369 bounds.y = __titleBounds.y + __titleBounds.height;
373 bounds.y = __titleBounds.y + __titleBounds.height + titleTimeMargin;
377 bounds.x = leftMargin;
378 bounds.height = timeHeight;
380 timeElementWidth = GetTimeElementWidth();
382 if (displayBoxId == DATETIME_ID_HOUR)
384 bounds.width = timeElementWidth;
386 else if (displayBoxId == DATETIME_ID_MINUTE)
388 bounds.x = bounds.x + timeElementWidth + colonWidth + (2.0f * colonMargin);
389 bounds.width = timeElementWidth;
391 else if (displayBoxId == DATETIME_ID_AMPM)
393 bounds.x = leftMargin + (2.0f * timeElementWidth) + colonWidth + (2.0f * colonMargin) + timeAmPmMargin;
395 if (__title.IsEmpty())
397 bounds.y = (editTimeHeight - amPmHeight) / 2.0f;
400 GET_SHAPE_CONFIG(EDITTIME::AMPM_WIDTH, __pEditTime->GetOrientation(), bounds.width);
401 bounds.height = amPmHeight;
408 _EditTimePresenter::GetTextWidth(_DateTimeId boxId) const
410 result r = E_SUCCESS;
412 TextObject dateObject;
416 hourString.Format(10, L"%02d", GetHour());
417 minuteString.Format(10, L"%02d", GetMinute());
419 r = dateObject.Construct();
420 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
422 TextSimple* pSimpleText = null;
424 if (boxId == DATETIME_ID_HOUR)
426 pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(hourString.GetPointer())), hourString.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
428 else if (boxId == DATETIME_ID_MINUTE)
430 pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(minuteString.GetPointer())), minuteString.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
433 SysTryReturn(NID_UI_CTRL, (pSimpleText != null), dim.width, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
435 (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
437 dateObject.AppendElement(*pSimpleText);
438 dateObject.SetFont(__pFont, 0, dateObject.GetTextLength());
439 dim = dateObject.GetTextExtentF(0, dateObject.GetTextLength());
441 dateObject.RemoveAll();
446 _EditTimePresenter::SetTitleBounds(void)
448 GET_SHAPE_CONFIG(EDITTIME::TITLE_TEXT_LEFT_MARGIN, __pEditTime->GetOrientation(), __titleBounds.x);
449 GET_SHAPE_CONFIG(EDITTIME::TITLE_HEIGHT, __pEditTime->GetOrientation(), __titleBounds.height);
451 __titleBounds.width = __pEditTime->GetBoundsF().width - __titleBounds.x;
456 _EditTimePresenter::GetTitleBounds(void) const
458 return __titleBounds;
462 _EditTimePresenter::LoadResource(void)
464 result r = E_SUCCESS;
466 Color buttonNormalBgColor;
467 Color buttonDisabledBgColor;
468 Color buttonPressedColor;
469 Color buttonHighlightedColor;
470 Color contentNormalBgColor;
471 Color contentDisabledBgColor;
472 Color contentPressedColor;
473 Color contentHighlightedColor;
474 Color colonTextColor;
475 Color colonTextDisabledColor;
476 Bitmap* pTempBitmap = null;
478 GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_NORMAL, buttonNormalBgColor);
479 GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_PRESSED, buttonPressedColor);
480 GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_DISABLED, buttonDisabledBgColor);
481 GET_COLOR_CONFIG(EDITTIME::BUTTON_BG_HIGHLIGHTED, buttonHighlightedColor);
483 GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_NORMAL, contentNormalBgColor);
484 GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_DISABLED, contentDisabledBgColor);
485 GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_PRESSED, contentPressedColor);
486 GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_HIGHLIGHTED, contentHighlightedColor);
488 GET_COLOR_CONFIG(EDITTIME::TEXT_NORMAL, colonTextColor);
489 GET_COLOR_CONFIG(EDITTIME::TEXT_DISABLED, colonTextDisabledColor);
491 GET_SHAPE_CONFIG(EDITTIME::AMPM_FONT_SIZE, __pEditTime->GetOrientation(), __amPmTextSize);
493 r = GET_BITMAP_CONFIG_N(EDITTIME::COLON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
494 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[%s] Propagating.", GetErrorMessage(r));
496 __pColonColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA),
498 SysTryCatch(NID_UI_CTRL, (__pColonColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
499 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
501 __pColonDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA),
502 colonTextDisabledColor);
503 SysTryCatch(NID_UI_CTRL, (__pColonDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
504 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
509 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
510 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
512 __pAmPmBgNormalColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonNormalBgColor);
513 SysTryCatch(NID_UI_CTRL, (__pAmPmBgNormalColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
514 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
519 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
520 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
522 __pAmPmBgDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonDisabledBgColor);
523 SysTryCatch(NID_UI_CTRL, (__pAmPmBgDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
524 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
529 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
530 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
532 __pAmPmBgPressedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonPressedColor);
533 SysTryCatch(NID_UI_CTRL, (__pAmPmBgPressedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
534 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
539 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
540 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
542 __pAmPmBgHighlightedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonHighlightedColor);
543 SysTryCatch(NID_UI_CTRL, (__pAmPmBgHighlightedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
544 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
549 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
550 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
552 __pContentBgNormalColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentNormalBgColor);
553 SysTryCatch(NID_UI_CTRL, (__pContentBgNormalColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
554 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
559 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
560 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
562 __pContentBgPressedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentPressedColor);
563 SysTryCatch(NID_UI_CTRL, (__pContentBgPressedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
564 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
569 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
570 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
572 __pContentBgDisabledColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentDisabledBgColor);
573 SysTryCatch(NID_UI_CTRL, (__pContentBgDisabledColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
574 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
579 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pTempBitmap);
580 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
582 __pContentBgHighlightedColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pTempBitmap, Color::GetColor(COLOR_ID_MAGENTA), contentHighlightedColor);
583 SysTryCatch(NID_UI_CTRL, (__pContentBgHighlightedColorReplacementBitmap != null), r = GetLastResult(), GetLastResult(),
584 "[%s] Propagating.", GetErrorMessage(GetLastResult()));
586 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pAmPmBgEffectNomralBitmap);
587 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
589 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pAmPmBgEffectPressedBitmap);
590 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
592 r = GET_BITMAP_CONFIG_N(EDITTIME::BUTTON_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, __pAmPmBgEffectDisabledBitmap);
593 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
595 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectNormalBitmap);
596 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
598 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectPressedBitmap);
599 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
601 r = GET_BITMAP_CONFIG_N(EDITTIME::CONTENT_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, __pContentBgEffectDisabledBitmap);
602 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
614 delete __pAmPmBgNormalColorReplacementBitmap;
615 __pAmPmBgNormalColorReplacementBitmap = null;
617 delete __pAmPmBgPressedColorReplacementBitmap;
618 __pAmPmBgPressedColorReplacementBitmap = null;
620 delete __pAmPmBgDisabledColorReplacementBitmap;
621 __pAmPmBgDisabledColorReplacementBitmap = null;
623 delete __pAmPmBgHighlightedColorReplacementBitmap;
624 __pAmPmBgHighlightedColorReplacementBitmap = null;
626 delete __pContentBgNormalColorReplacementBitmap;
627 __pContentBgNormalColorReplacementBitmap = null;
629 delete __pContentBgPressedColorReplacementBitmap;
630 __pContentBgPressedColorReplacementBitmap = null;
632 delete __pContentBgDisabledColorReplacementBitmap;
633 __pContentBgDisabledColorReplacementBitmap = null;
635 delete __pContentBgHighlightedColorReplacementBitmap;
636 __pContentBgHighlightedColorReplacementBitmap = null;
638 delete __pAmPmBgEffectNomralBitmap;
639 __pAmPmBgEffectNomralBitmap = null;
641 delete __pAmPmBgEffectPressedBitmap;
642 __pAmPmBgEffectPressedBitmap = null;
644 delete __pAmPmBgEffectDisabledBitmap;
645 __pAmPmBgEffectDisabledBitmap = null;
647 delete __pContentBgEffectNormalBitmap;
648 __pContentBgEffectNormalBitmap = null;
650 delete __pContentBgEffectPressedBitmap;
651 __pContentBgEffectPressedBitmap = null;
653 delete __pContentBgEffectDisabledBitmap;
654 __pContentBgEffectDisabledBitmap = null;
656 delete __pColonColorReplacementBitmap;
657 __pColonColorReplacementBitmap = null;
659 delete __pColonDisabledColorReplacementBitmap;
660 __pColonDisabledColorReplacementBitmap = null;
666 _EditTimePresenter::DrawResourceBitmap(Canvas& canvas, const FloatRectangle& bounds, Bitmap* pBitmap)
668 result r = E_SUCCESS;
675 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
677 r = canvas.DrawNinePatchedBitmap(bounds, *pBitmap);
678 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
682 r = canvas.DrawBitmap(bounds, *pBitmap);
683 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
690 _EditTimePresenter::GetTimeElementWidth(void) const
692 FloatRectangle bounds;
693 FloatDimension minSize;
694 bounds = __pEditTime->GetBoundsF();
696 float timeElementWidth = 0.0f;
697 float timeElementMinWidth = 0.0f;
698 float editTimeWidth = 0.0f;
700 GET_SHAPE_CONFIG(EDITTIME::HOUR_MINUTE_WIDTH, __pEditTime->GetOrientation(), timeElementWidth);
701 GET_SHAPE_CONFIG(EDITTIME::HOUR_MINUTE_MIN_WIDTH, __pEditTime->GetOrientation(), timeElementMinWidth);
702 GET_SHAPE_CONFIG(EDITTIME::WIDTH, __pEditTime->GetOrientation(), editTimeWidth);
704 GET_DIMENSION_CONFIG(EDITTIME::MIN_SIZE, __pEditTime->GetOrientation(), minSize);
706 if (bounds.width >= editTimeWidth)
708 return timeElementWidth;
711 if (bounds.width <= minSize.width)
713 timeElementWidth = timeElementMinWidth;
715 else if (bounds.width < editTimeWidth && bounds.width > minSize.width)
717 timeElementWidth = timeElementWidth -
718 ((timeElementWidth - timeElementMinWidth) / (editTimeWidth - minSize.width)) * (editTimeWidth - bounds.width);
721 return timeElementWidth;
725 _EditTimePresenter::InitializeTitleObject(void)
727 result r = E_SUCCESS;
729 Color titleNormalColor;
731 GET_COLOR_CONFIG(EDITTIME::TITLE_TEXT_NORMAL, titleNormalColor);
733 r = __titleObject.Construct();
734 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
736 TextSimple* pSimpleText = null;
738 pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(__title.GetPointer())), __title.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
739 SysTryReturn(NID_UI_CTRL, (pSimpleText != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
741 __titleObject.AppendElement(*pSimpleText);
743 __titleObject.SetForegroundColor(titleNormalColor, 0, __titleObject.GetTextLength());
744 __titleObject.SetFont(__pFont, 0, __titleObject.GetTextLength());
745 __titleObject.SetAlignment(TEXT_OBJECT_ALIGNMENT_LEFT | TEXT_OBJECT_ALIGNMENT_MIDDLE);
746 __titleObject.SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
747 __titleObject.SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
748 __titleObject.SetTextObjectEllipsisType(TEXT_OBJECT_ELLIPSIS_TYPE_TAIL);
754 _EditTimePresenter::InitializeTextObject(void)
756 result r = E_SUCCESS;
758 r = __textObject.Construct();
759 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
761 TextSimple* pSimpleText = new (std::nothrow)TextSimple(null, 0, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
762 SysTryReturn(NID_UI_CTRL, (pSimpleText != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
763 "[E_OUT_OF_MEMORY] Memory allocation failed.");
765 __textObject.AppendElement(*pSimpleText);
767 __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
768 __textObject.SetAlignment(TEXT_OBJECT_ALIGNMENT_CENTER | TEXT_OBJECT_ALIGNMENT_MIDDLE);
769 __textObject.SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
770 __textObject.SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
776 _EditTimePresenter::Draw(void)
778 result r = E_SUCCESS;
785 Canvas* pCanvas = __pEditTime->GetCanvasN();
787 SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), r, "Failed to get canvas.");
789 FloatRectangle colonBounds(0.0f, 0.0f, 0.0f, 0.0f);
791 float colonMargin = 0.0f;
795 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
798 FloatRectangle hourBounds(0.0f, 0.0f, 0.0f, 0.0f);
799 FloatRectangle minuteBounds(0.0f, 0.0f, 0.0f, 0.0f);
800 FloatRectangle ampmBounds(0.0f, 0.0f, 0.0f, 0.0f);
801 bool isCustomBitmap = false;
802 Bitmap* pReplacementBitmap = null;
803 Bitmap* pEffectBitmap = null;
805 hourBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
806 minuteBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
810 ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
812 if (!__pEditTime->IsEnabled())
814 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::BUTTON_BG_DISABLED);
815 pReplacementBitmap = __pAmPmBgDisabledColorReplacementBitmap;
816 pEffectBitmap = __pAmPmBgEffectDisabledBitmap;
818 else if (__selectedId != DATETIME_ID_AMPM)
820 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::BUTTON_BG_NORMAL);
821 pReplacementBitmap = __pAmPmBgNormalColorReplacementBitmap;
822 pEffectBitmap = __pAmPmBgEffectNomralBitmap;
826 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::BUTTON_BG_PRESSED);
827 pReplacementBitmap = __pAmPmBgPressedColorReplacementBitmap;
828 pEffectBitmap = __pAmPmBgEffectPressedBitmap;
832 if (GetHour() >= DATETIME_HOUR_MAX_FOR_24NOTATION)
843 GET_SHAPE_CONFIG(EDITTIME::COLON_WIDTH, __pEditTime->GetOrientation(), colonBounds.width);
844 GET_SHAPE_CONFIG(EDITTIME::COLON_MARGIN, __pEditTime->GetOrientation(), colonMargin);
845 GET_SHAPE_CONFIG(EDITTIME::AMPM_HEIGHT, __pEditTime->GetOrientation(), colonBounds.height);
847 colonBounds.x = hourBounds.x + hourBounds.width + colonMargin;
848 colonBounds.y = hourBounds.y + (hourBounds.height - colonBounds.height) / 2.0f;
850 if (!__title.IsEmpty())
852 r = DrawTitle(*pCanvas);
853 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
856 r = DrawText(*pCanvas, hourBounds, __hourString, DATETIME_ID_HOUR);
857 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
859 r = DrawText(*pCanvas, minuteBounds, __minuteString, DATETIME_ID_MINUTE);
860 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
862 r = DrawColon(*pCanvas, colonBounds);
863 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
867 r = DrawResourceBitmap(*pCanvas, ampmBounds, pReplacementBitmap);
868 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
872 r = DrawResourceBitmap(*pCanvas, ampmBounds, pEffectBitmap);
873 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
876 r = DrawText(*pCanvas, ampmBounds, __ampmString, DATETIME_ID_AMPM, __amPmTextSize);
877 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
886 _EditTimePresenter::DrawFocus(void)
888 FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
890 Canvas* pCanvas = __pEditTime->GetCanvasN();
891 SysTryReturnResult(NID_UI_CTRL, (pCanvas != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create canvas.");
893 if (__focusId == DATETIME_ID_HOUR)
895 bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
897 else if (__focusId == DATETIME_ID_MINUTE)
899 bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
901 else if (__focusId == DATETIME_ID_AMPM)
903 bounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
905 result r = E_SUCCESS;
907 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*__pContentBgHighlightedColorReplacementBitmap))
909 r = pCanvas->DrawNinePatchedBitmap(bounds, *__pContentBgHighlightedColorReplacementBitmap);
910 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
914 r = pCanvas->DrawBitmap(bounds, *__pContentBgHighlightedColorReplacementBitmap);
915 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
927 _EditTimePresenter::DrawColon(Canvas& canvas, const FloatRectangle& bounds)
929 result r = E_SUCCESS;
931 if (!__pEditTime->IsEnabled())
933 r = DrawResourceBitmap(canvas, bounds, __pColonDisabledColorReplacementBitmap);
937 r = DrawResourceBitmap(canvas, bounds, __pColonColorReplacementBitmap);
944 _EditTimePresenter::DrawTitle(Canvas& canvas)
946 if (!__pEditTime->IsEnabled())
948 Color titleDisabledColor;
949 GET_COLOR_CONFIG(EDITTIME::TITLE_TEXT_DISABLED, titleDisabledColor);
950 __titleObject.SetForegroundColor(titleDisabledColor, 0, __titleObject.GetTextLength());
953 (_FontImpl::GetInstance(*__pFont))->SetSize(__titleFontSize);
954 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
955 __titleObject.SetFont(__pFont, 0, __titleObject.GetTextLength());
957 __titleObject.Draw(*_CanvasImpl::GetInstance(canvas));
963 _EditTimePresenter::DrawContentBitmap(Canvas& canvas, const FloatRectangle& bounds, _DateTimeId boxId)
965 result r = E_SUCCESS;
967 bool isCustomBitmap = false;
968 Bitmap* pReplacementBitmap = null;
969 Bitmap* pEffectBitmap = null;
971 if (!__pEditTime->IsEnabled())
973 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_DISABLED);
974 pReplacementBitmap = __pContentBgDisabledColorReplacementBitmap;
975 pEffectBitmap = __pContentBgEffectDisabledBitmap;
977 else if (__selectedId != boxId)
979 if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated() &&
980 (GetLastSelectedId() == boxId))
982 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
983 pReplacementBitmap = __pContentBgPressedColorReplacementBitmap;
984 pEffectBitmap = __pContentBgEffectPressedBitmap;
988 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_NORMAL);
989 pReplacementBitmap = __pContentBgNormalColorReplacementBitmap;
990 pEffectBitmap = __pContentBgEffectNormalBitmap;
995 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
996 pReplacementBitmap = __pContentBgPressedColorReplacementBitmap;
997 pEffectBitmap = __pContentBgEffectPressedBitmap;
1000 r = DrawResourceBitmap(canvas, bounds, pReplacementBitmap);
1001 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1003 if (!isCustomBitmap)
1005 r = DrawResourceBitmap(canvas, bounds, pEffectBitmap);
1006 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1013 _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const String& text, _DateTimeId boxId, float textSize)
1015 result r = E_SUCCESS;
1018 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
1020 if (!__pEditTime->IsEnabled())
1022 if (boxId == DATETIME_ID_AMPM)
1024 GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_DISABLED, textColor);
1028 GET_COLOR_CONFIG(EDITTIME::TEXT_DISABLED, textColor);
1033 GET_COLOR_CONFIG(EDITTIME::TEXT_NORMAL, textColor);
1035 if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated() &&
1036 (GetLastSelectedId() == boxId))
1038 GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
1039 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
1042 if (boxId == DATETIME_ID_AMPM)
1044 GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_NORMAL, textColor);
1047 if (boxId > -1 && boxId == __selectedId)
1049 if (boxId == DATETIME_ID_AMPM)
1051 GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_PRESSED, textColor);
1055 GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textColor);
1056 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_BOLD);
1061 if (boxId != DATETIME_ID_AMPM)
1063 DrawContentBitmap(canvas, bounds, boxId);
1066 FloatRectangle drawAreaBounds(0.0f, 0.0f, 0.0f, 0.0f);
1067 drawAreaBounds = bounds;
1069 TextSimple* pSimpleText = null;
1070 pSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(text.GetPointer())), text.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
1071 SysTryReturn(NID_UI_CTRL, (pSimpleText != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1073 __textObject.RemoveAll();
1075 (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
1076 __textObject.AppendElement(*pSimpleText);
1078 if (boxId == DATETIME_ID_AMPM)
1080 (_FontImpl::GetInstance(*__pFont))->SetSize(textSize);
1082 if (__isFocused && __focusId == boxId)
1084 if (boxId == DATETIME_ID_AMPM)
1086 GET_COLOR_CONFIG(EDITTIME::BUTTON_TEXT_HIGHLIGHTED, textColor);
1090 GET_COLOR_CONFIG(EDITTIME::TEXT_HIGHLIGHTED, textColor);
1096 __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
1098 __textObject.SetForegroundColor(textColor, 0, __textObject.GetTextLength());
1099 __textObject.SetBounds(drawAreaBounds);
1100 __textObject.Draw(*_CanvasImpl::GetInstance(canvas));
1106 _EditTimePresenter::GetBoxIdFromPosition(const FloatPoint& point) const
1108 _DateTimeId displayBoxId = DATETIME_ID_NONE;
1110 FloatRectangle ampmBounds(0.0f, 0.0f, 0.0f, 0.0f);
1111 FloatRectangle hoursBounds(0.0f, 0.0f, 0.0f, 0.0f);
1112 FloatRectangle minutesBounds(0.0f, 0.0f, 0.0f, 0.0f);
1116 ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
1119 hoursBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
1120 minutesBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
1122 if (point.y < hoursBounds.y || point.y > hoursBounds.y + hoursBounds.height)
1124 return displayBoxId;
1127 if (hoursBounds.Contains(point))
1129 displayBoxId = DATETIME_ID_HOUR;
1131 else if (minutesBounds.Contains(point))
1133 displayBoxId = DATETIME_ID_MINUTE;
1135 else if (ampmBounds.Contains(point))
1137 displayBoxId = DATETIME_ID_AMPM;
1140 return displayBoxId;
1144 _EditTimePresenter::SetLastSelectedId(_DateTimeId boxId)
1146 __lastSelectedId = boxId;
1151 _EditTimePresenter::GetLastSelectedId(void) const
1153 return __lastSelectedId;
1157 _EditTimePresenter::SetFocusedElement()
1159 if (__isEnterKeyPressed)
1161 __isEnterKeyPressed = false;
1164 if (__focusId == DATETIME_ID_NONE || __focusId == DATETIME_ID_AMPM)
1166 __focusId = DATETIME_ID_HOUR;
1173 _EditTimePresenter::SetFocusState(bool isFocused)
1175 __isFocused = isFocused;
1180 _EditTimePresenter::OnFocusLost(const _Control &source)
1182 if (!__isEnterKeyPressed || __focusId == DATETIME_ID_AMPM)
1184 __focusId = DATETIME_ID_NONE;
1186 __isFocused = false;
1187 __pEditTime->Invalidate();
1192 _EditTimePresenter::OnFocusModeStateChanged(void)
1194 __isFocused = false;
1195 __focusId = DATETIME_ID_NONE;
1196 __pEditTime->Invalidate();
1201 _EditTimePresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
1207 _KeyCode keyCode = keyInfo.GetKeyCode();
1213 __isEnterKeyPressed = false;
1214 if (__focusId == DATETIME_ID_HOUR)
1216 __focusId = DATETIME_ID_MINUTE;
1218 else if (__focusId == DATETIME_ID_MINUTE)
1220 if (!Is24HourNotationEnabled())
1222 __focusId = DATETIME_ID_AMPM;
1225 else if (__focusId == DATETIME_ID_AMPM)
1230 __pEditTime->Invalidate();
1235 __isEnterKeyPressed = false;
1236 if (__focusId == DATETIME_ID_MINUTE)
1238 __focusId = DATETIME_ID_HOUR;
1240 else if (__focusId == DATETIME_ID_AMPM)
1242 __focusId = DATETIME_ID_MINUTE;
1244 else if (__focusId == DATETIME_ID_HOUR)
1248 __pEditTime->Invalidate();
1261 _EditTimePresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
1267 _KeyCode keyCode = keyInfo.GetKeyCode();
1271 VisualElement *pEditTimeElement = __pEditTime->GetVisualElement();
1272 result r = GetLastResult();
1273 SysTryReturn(NID_UI_CTRL, (pEditTimeElement != null), false, r, "[%s] Propagating.", GetErrorMessage(r));
1274 pEditTimeElement->RemoveAllAnimations();
1279 int displayValue = -1;
1281 _DateTimeId boxId = DATETIME_ID_HOUR;
1287 __isEnterKeyPressed = true;
1288 if (__focusId == DATETIME_ID_HOUR)
1290 boxId = DATETIME_ID_HOUR;
1291 if (__pEditTime->GetDateTimeBar() != null)
1293 if (!Is24HourNotationEnabled())
1297 minValue = DATETIME_HOUR_MIN + 1;
1298 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1299 displayValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1301 else if (GetHour() > DATETIME_HOUR_MAX_FOR_24NOTATION)
1303 minValue = DATETIME_HOUR_MIN + 1;
1304 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1305 displayValue = __pEditTime->GetHour() - DATETIME_HOUR_MAX_FOR_24NOTATION;
1309 minValue = DATETIME_HOUR_MIN + 1;
1310 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1311 displayValue = __pEditTime->GetHour();
1316 minValue = DATETIME_HOUR_MIN;
1317 maxValue = DATETIME_HOUR_MAX;
1318 displayValue = __pEditTime->GetHour();
1321 if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
1323 __pEditTime->GetDateTimeBar()->RemoveAllItems();
1327 else if (__focusId == DATETIME_ID_MINUTE)
1329 if (__pEditTime->GetDateTimeBar() != null)
1331 minValue = DATETIME_MINUTE_MIN;
1332 maxValue = DATETIME_MINUTE_MAX;
1333 displayValue = __pEditTime->GetMinute();
1335 if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
1337 __pEditTime->GetDateTimeBar()->RemoveAllItems();
1340 boxId = DATETIME_ID_MINUTE;
1342 else if (__focusId == DATETIME_ID_AMPM)
1344 SetAmEnabled(!GetAmEnabled());
1345 __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
1346 boxId = DATETIME_ID_AMPM;
1348 __pEditTime->Invalidate();
1351 if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM))
1353 FloatRectangle absoluteBounds = __pEditTime->GetAbsoluteBoundsF();
1355 FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
1356 bounds = GetDisplayAreaBoundsFromHoursStyle(boxId);
1357 bounds.x += absoluteBounds.x;
1359 __pEditTime->GetDateTimeBar()->SetInitialValue(minValue, maxValue, displayValue, boxId);
1360 __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds);
1361 __pEditTime->GetDateTimeBar()->SetVisibleState(true);
1362 __pEditTime->GetDateTimeBar()->Open();
1363 UpdateLastSelectedValue(boxId, false);
1377 _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1379 SysTryReturn(NID_UI_CTRL, IsTimePickerEnabled() == true, true, E_SYSTEM, "[E_SYSTEM] A system error has occurred. EditTime instance is disabled.");
1381 if (&source != __pEditTime)
1386 __touchMoveHandled = false;
1388 FloatRectangle hourBounds(0.0f, 0.0f, 0.0f, 0.0f);
1389 FloatRectangle minuteBounds(0.0f, 0.0f, 0.0f, 0.0f);
1390 FloatRectangle ampmBounds(0.0f, 0.0f, 0.0f, 0.0f);
1392 hourBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
1393 minuteBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
1397 ampmBounds = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
1400 FloatPoint point = touchinfo.GetCurrentPosition();
1402 _DateTimeId boxId = GetBoxIdFromPosition(point);
1406 int displayValue = -1;
1408 if (boxId == DATETIME_ID_HOUR)
1410 if (__pEditTime->GetDateTimeBar() != null)
1416 minValue = DATETIME_HOUR_MIN + 1;
1417 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1418 displayValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1420 else if (GetHour() > DATETIME_HOUR_MAX_FOR_24NOTATION)
1422 minValue = DATETIME_HOUR_MIN + 1;
1423 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1424 displayValue = GetHour() - DATETIME_HOUR_MAX_FOR_24NOTATION;
1428 minValue = DATETIME_HOUR_MIN + 1;
1429 maxValue = DATETIME_HOUR_MAX_FOR_24NOTATION;
1430 displayValue = GetHour();
1435 minValue = DATETIME_HOUR_MIN;
1436 maxValue = DATETIME_HOUR_MAX;
1437 displayValue = GetHour();
1440 if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
1442 __pEditTime->GetDateTimeBar()->RemoveAllItems();
1445 __pEditTime->GetDateTimeBar()->SetInitialValue(minValue, maxValue, displayValue, boxId);
1448 __bounds = hourBounds;
1450 else if (boxId == DATETIME_ID_MINUTE)
1452 if (__pEditTime->GetDateTimeBar() != null)
1454 minValue = DATETIME_MINUTE_MIN;
1455 maxValue = DATETIME_MINUTE_MAX;
1456 displayValue = GetMinute();
1458 if (__pEditTime->GetDateTimeBar()->GetItemCount() > 0)
1460 __pEditTime->GetDateTimeBar()->RemoveAllItems();
1463 __pEditTime->GetDateTimeBar()->SetInitialValue(minValue, maxValue, displayValue, boxId);
1466 __bounds = minuteBounds;
1468 else if (boxId == DATETIME_ID_AMPM)
1470 __selectedId = boxId;
1471 __bounds = ampmBounds;
1476 __selectedId = DATETIME_ID_NONE;
1480 __selectedId = boxId;
1486 _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1488 SysTryReturn(NID_UI_CTRL, IsTimePickerEnabled() == true, true, E_SYSTEM, "[E_SYSTEM] A system error has occurred. EditTime instance is disabled.");
1490 if (&source != __pEditTime)
1495 FloatRectangle bounds = __pEditTime->GetBoundsF();
1497 FloatPoint startPoint(0.0f, 0.0f);
1499 float titleHeight = 0;
1500 GET_SHAPE_CONFIG(EDITTIME::TITLE_HEIGHT, __pEditTime->GetOrientation(), titleHeight);
1502 __bounds = FloatRectangle(0.0f, titleHeight, bounds.width, bounds.height);
1504 FloatPoint point = touchinfo.GetCurrentPosition();
1506 _DateTimeId boxId = GetBoxIdFromPosition(point);
1508 if ((boxId == GetLastSelectedId() && boxId != DATETIME_ID_AMPM) || boxId != __selectedId || boxId == DATETIME_ID_NONE)
1510 if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated())
1512 __pEditTime->GetDateTimeBar()->CloseDateTimeBar();
1515 __selectedId = DATETIME_ID_NONE;
1516 SetLastSelectedId(__selectedId);
1522 UpdateLastSelectedValue(__selectedId, true);
1523 if (GetLastSelectedId() == DATETIME_ID_AMPM)
1530 if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM) && (GetLastSelectedId() != DATETIME_ID_NONE))
1532 __pEditTime->SetFocused(true);
1534 FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
1535 bounds = GetDisplayAreaBoundsFromHoursStyle(GetLastSelectedId());
1536 FloatRectangle absoluteBounds(0.0f, 0.0f, 0.0f, 0.0f);
1537 absoluteBounds = __pEditTime->GetAbsoluteBoundsF();
1538 bounds.x += absoluteBounds.x;
1540 __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds);
1542 if (__pEditTime->GetDateTimeBar()->IsActivated())
1544 __pEditTime->GetDateTimeBar()->RemoveAllAnimations();
1545 __pEditTime->GetDateTimeBar()->Close();
1546 __pEditTime->GetDateTimeBar()->SetVisibleState(true);
1547 __pEditTime->GetDateTimeBar()->Open();
1551 __pEditTime->GetDateTimeBar()->SetVisibleState(true);
1552 __pEditTime->GetDateTimeBar()->Open();
1556 __selectedId = DATETIME_ID_NONE;
1561 _EditTimePresenter::UpdateLastSelectedValue(_DateTimeId boxId, bool isTouchPressed)
1563 __selectedId = boxId;
1564 SetLastSelectedId(boxId);
1566 __lastSelectedValue = "";
1568 if (GetLastSelectedId() == DATETIME_ID_HOUR)
1570 int hours = GetHour();
1572 if (!Is24HourNotationEnabled())
1576 if (hours == DATETIME_HOUR_MIN)
1578 hours = hours + DATETIME_HOUR_MAX_FOR_24NOTATION;
1581 __lastSelectedValue.Format(10, L"%02d", hours);
1584 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pEditTime);
1587 else if (GetLastSelectedId() == DATETIME_ID_MINUTE)
1589 __lastSelectedValue.Format(10, L"%02d", GetMinute());
1592 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pEditTime);
1595 else if (GetLastSelectedId() == DATETIME_ID_AMPM)
1597 SetAmEnabled(!GetAmEnabled());
1598 __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
1601 __pEditTime->UpdateAccessibilityElement();
1602 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pEditTime);
1604 __selectedId = DATETIME_ID_NONE;
1606 if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated())
1608 __pEditTime->GetDateTimeBar()->SetVisibleState(false);
1609 __pEditTime->GetDateTimeBar()->Close();
1613 __selectedId = DATETIME_ID_NONE;
1614 __pEditTime->Invalidate();
1619 _EditTimePresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1621 if (&source != __pEditTime)
1626 __selectedId = DATETIME_ID_NONE;
1632 _EditTimePresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1634 if (&source != __pEditTime)
1639 if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated())
1648 _EditTimePresenter::OnTouchMoveHandled(const _Control& control)
1650 __touchMoveHandled = true;
1651 __selectedId = DATETIME_ID_NONE;
1657 _EditTimePresenter::OnFontChanged(Font* pFont)
1661 if (__pEditTime->GetDateTimeBar() != null)
1663 __pEditTime->GetDateTimeBar()->SetFont(*pFont);
1670 _EditTimePresenter::OnFontInfoRequested(unsigned long& style, float& size)
1672 style = FONT_STYLE_PLAIN;
1673 size = __timeFontSize;
1679 _EditTimePresenter::Initialize(void)
1681 result r = E_SUCCESS;
1683 float titleTimeMargin = 0;
1684 float timeHeight = 0;
1685 float editTimeHeight = 0;
1687 GET_SHAPE_CONFIG(EDITTIME::TEXT_FONT_SIZE, __pEditTime->GetOrientation(), __titleFontSize);
1688 GET_SHAPE_CONFIG(EDITTIME::TIME_FONT_SIZE, __pEditTime->GetOrientation(), __timeFontSize);
1689 GET_SHAPE_CONFIG(EDITTIME::TITLE_TIME_MARGIN, __pEditTime->GetOrientation(), titleTimeMargin);
1690 GET_SHAPE_CONFIG(EDITTIME::TIME_HEIGHT, __pEditTime->GetOrientation(), timeHeight);
1691 GET_SHAPE_CONFIG(EDITTIME::HEIGHT, __pEditTime->GetOrientation(), editTimeHeight);
1693 if (__pEditTime->GetBoundsF().height > editTimeHeight)
1695 editTimeHeight = __pEditTime->GetBoundsF().height;
1698 if (!__title.IsEmpty())
1701 if (!__isEditTimeInitialized)
1703 r = InitializeTitleObject();
1704 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1707 __titleBounds.y = (editTimeHeight - (__titleBounds.height + titleTimeMargin + timeHeight)) / 2.0f;
1708 __titleObject.SetBounds(__titleBounds);
1711 __pFont = __pEditTime->GetFallbackFont();
1712 r = GetLastResult();
1713 SysTryReturn(NID_UI_CTRL, __pFont != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
1715 if (!__isEditTimeInitialized)
1718 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1720 r = InitializeTextObject();
1721 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1724 __isEditTimeInitialized = true;
1731 _EditTimePresenter::UpdateTimeFormat(void)
1733 if (!__is24hoursSet)
1735 String key(L"http://tizen.org/setting/locale.time.format.24hour");
1736 SettingInfo::GetValue(key , __24hours);
1743 _EditTimePresenter::Animate(void)
1745 SysTryReturnVoidResult(NID_UI_CTRL, !__isAnimating, E_SUCCESS, "Rolling animation is in progress.");
1746 SysAssertf((__pFont != null), "Font instance must not be null.");
1748 (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
1750 result r = E_SUCCESS;
1751 FloatRectangle rect;
1753 String minuteString;
1755 TextSimple* pOldSimpleText = null;
1756 TextSimple* pNewSimpleText = null;
1757 bool isCustomBitmap = false;
1759 _DateTimeUtils dateTimeUtils;
1760 int hours = GetHour();
1761 if (!Is24HourNotationEnabled())
1765 if (hours == DATETIME_HOUR_MIN)
1767 hours = hours + DATETIME_HOUR_MAX_FOR_24NOTATION;
1770 hourString.Format(10, L"%02d", hours);
1771 minuteString.Format(10, L"%02d", GetMinute());
1773 if (GetLastSelectedId() == DATETIME_ID_HOUR)
1775 SysTryReturnVoidResult(NID_UI_CTRL, (__lastSelectedValue.Equals(hourString) == false), E_SUCCESS, "[E_SUCCESS] Hour string matched.");
1777 newValue = hourString;
1778 rect = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
1780 else if (GetLastSelectedId() == DATETIME_ID_MINUTE)
1782 SysTryReturnVoidResult(NID_UI_CTRL, (__lastSelectedValue.Equals(minuteString) == false), E_SUCCESS, "[E_SUCCESS] Minute string matched.");
1784 newValue = minuteString;
1785 rect = GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
1788 FloatDimension newTextDim;
1789 FloatDimension oldTextDim;
1790 FloatPoint textPoint;
1791 VisualElement* pNewVisualElement = null;
1792 VisualElement* pOldVisualElement = null;
1793 VisualElement* pEditTimeElement = null;
1794 VisualElementPropertyAnimation* pNewBoundsAnimation = null;
1795 VisualElementPropertyAnimation* pOldBoundsAnimation = null;
1796 Canvas *pCanvas = null;
1797 Canvas *pContentCanvas = null;
1798 Color contentBgColor;
1799 Color textNormalColor;
1800 Color textPressedColor;
1801 float contentTextMargin;
1803 GET_COLOR_CONFIG(EDITTIME::CONTENT_BG_PRESSED, contentBgColor);
1804 GET_COLOR_CONFIG(EDITTIME::TEXT_PRESSED, textPressedColor);
1805 GET_SHAPE_CONFIG(EDITDATE::CONTENT_TEXT_MARGIN, __pEditTime->GetOrientation(), contentTextMargin);
1807 __pFont->GetTextExtent(newValue, newValue.GetLength(), newTextDim);
1808 __pFont->GetTextExtent(__lastSelectedValue, __lastSelectedValue.GetLength(), oldTextDim);
1810 if (newTextDim.width > oldTextDim.width)
1812 textPoint.x = (rect.width - newTextDim.width) / 2.0f;
1816 textPoint.x = (rect.width - oldTextDim.width) / 2.0f;
1819 SysTryReturnVoidResult(NID_UI_CTRL, (rect.x + textPoint.x < __pEditTime->GetBounds().width), E_SUCCESS, "Rolling animation cann't be played.");
1821 __isAnimating = true;
1823 __pContentProvider = new (std::nothrow) VisualElement();
1824 SysTryReturnVoidResult(NID_UI_CTRL, (__pContentProvider != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1826 r = __pContentProvider->Construct();
1827 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
1829 __pContentProvider->SetShowState(true);
1830 __pContentProvider->SetClipChildrenEnabled(true);
1831 __pContentProvider->SetImplicitAnimationEnabled(false);
1833 pEditTimeElement = __pEditTime->GetVisualElement();
1834 r = GetLastResult();
1835 SysTryCatch(NID_UI_CTRL, (pEditTimeElement != null), , r, "[%s] Propagating.", GetErrorMessage(r));
1837 pNewVisualElement = new (std::nothrow) VisualElement();
1838 SysTryCatch(NID_UI_CTRL, (pNewVisualElement != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1840 r = pNewVisualElement->Construct();
1843 pNewVisualElement->Destroy();
1844 pNewVisualElement = null;
1846 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
1848 pNewVisualElement->SetShowState(true);
1850 pOldVisualElement = new (std::nothrow) VisualElement();
1851 if (pOldVisualElement == null)
1853 pNewVisualElement->Destroy();
1854 pNewVisualElement = null;
1856 SysTryCatch(NID_UI_CTRL, (pOldVisualElement != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1858 r = pOldVisualElement->Construct();
1861 pNewVisualElement->Destroy();
1862 pOldVisualElement->Destroy();
1863 pNewVisualElement = null;
1864 pOldVisualElement = null;
1866 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
1868 pOldVisualElement->SetShowState(true);
1870 __pContentProvider->SetBounds(FloatRectangle((rect.x + contentTextMargin), (rect.y + (contentTextMargin * 2.0f)), (rect.width - (contentTextMargin * 2.0f)), (rect.height - (contentTextMargin * 4.0f))));
1872 pNewVisualElement->SetBounds(FloatRectangle(0, 0, __pContentProvider->GetBounds().width, __pContentProvider->GetBounds().height));
1873 pOldVisualElement->SetBounds(FloatRectangle(0, 0, __pContentProvider->GetBounds().width, __pContentProvider->GetBounds().height));
1875 pContentCanvas = pEditTimeElement->GetCanvasN(__pContentProvider->GetBounds());
1876 r = GetLastResult();
1877 SysTryCatch(NID_UI_CTRL, (pContentCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
1878 pContentCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
1879 pContentCanvas->Clear();
1881 pCanvas = pEditTimeElement->GetCanvasN(rect);
1882 r = GetLastResult();
1883 SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
1884 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
1888 r = DrawResourceBitmap(*pCanvas, rect, __pContentBgPressedColorReplacementBitmap);
1889 isCustomBitmap = IS_CUSTOM_BITMAP(EDITTIME::CONTENT_BG_PRESSED);
1891 if (!isCustomBitmap)
1893 result res = DrawResourceBitmap(*pCanvas, rect, __pContentBgEffectPressedBitmap);
1895 if (res != E_SUCCESS)
1897 SysLog(NID_UI_CTRL, "[%s] Propagating.", GetErrorMessage(res));
1906 pContentCanvas->SetBackgroundColor(contentBgColor);
1907 pContentCanvas->Clear();
1910 delete pContentCanvas;
1911 pContentCanvas = null;
1913 pEditTimeElement->AttachChild(*__pContentProvider);
1915 __pContentProvider->AttachChild(*pOldVisualElement);
1916 __pContentProvider->AttachChild(*pNewVisualElement);
1918 pNewBoundsAnimation = new (std::nothrow) VisualElementPropertyAnimation();
1919 SysTryCatch(NID_UI_CTRL, (pNewBoundsAnimation != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1921 pNewBoundsAnimation->SetDuration(300);
1922 pNewBoundsAnimation->SetPropertyName("bounds.position");
1923 pNewBoundsAnimation->SetStartValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, oldTextDim.height)));
1924 pNewBoundsAnimation->SetEndValue(Variant(FloatPoint(pNewVisualElement->GetBounds().x, 0.0f)));
1926 pOldBoundsAnimation = new (std::nothrow) VisualElementPropertyAnimation();
1927 SysTryCatch(NID_UI_CTRL, (pOldBoundsAnimation != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1929 pOldBoundsAnimation->SetDuration(300);
1930 pOldBoundsAnimation->SetPropertyName("bounds.position");
1931 pOldBoundsAnimation->SetStartValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, 0.0f)));
1932 pOldBoundsAnimation->SetEndValue(Variant(FloatPoint(pOldVisualElement->GetBounds().x, oldTextDim.height * -1.0f)));
1934 pOldSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(__lastSelectedValue.GetPointer())), __lastSelectedValue.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
1935 SysTryCatch(NID_UI_CTRL, (pOldSimpleText != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1937 pCanvas = pOldVisualElement->GetCanvasN();
1938 r = GetLastResult();
1939 SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
1941 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
1943 pCanvas->SetForegroundColor(textPressedColor);
1945 (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
1946 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
1947 __textObject.RemoveAll();
1948 __textObject.AppendElement(*pOldSimpleText);
1950 __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
1951 __textObject.SetForegroundColor(textPressedColor, 0, __textObject.GetTextLength());
1952 __textObject.SetBounds(FloatRectangle(0, 0, pCanvas->GetBounds().width, pCanvas->GetBounds().height));
1953 __textObject.Draw(*_CanvasImpl::GetInstance(*pCanvas));
1958 pNewSimpleText = new (std::nothrow)TextSimple((const_cast <wchar_t*>(newValue.GetPointer())), newValue.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL);
1959 SysTryCatch(NID_UI_CTRL, (pNewSimpleText != null), , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
1961 pCanvas = pNewVisualElement->GetCanvasN();
1962 r = GetLastResult();
1963 SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
1965 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
1967 pCanvas->SetForegroundColor(textPressedColor);
1969 (_FontImpl::GetInstance(*__pFont))->SetSize(__timeFontSize);
1970 (_FontImpl::GetInstance(*__pFont))->SetStyle(FONT_STYLE_PLAIN);
1971 __textObject.RemoveAll();
1972 __textObject.AppendElement(*pNewSimpleText);
1974 __textObject.SetFont(__pFont, 0, __textObject.GetTextLength());
1975 __textObject.SetForegroundColor(textPressedColor, 0, __textObject.GetTextLength());
1976 __textObject.SetBounds(FloatRectangle(0, 0, pCanvas->GetBounds().width, pCanvas->GetBounds().height));
1977 __textObject.Draw(*_CanvasImpl::GetInstance(*pCanvas));
1982 pOldVisualElement->SetImplicitAnimationEnabled(false);
1983 pNewVisualElement->SetImplicitAnimationEnabled(false);
1985 AnimationTransaction::Begin(__transactionId);
1986 pOldVisualElement->AddAnimation(*pOldBoundsAnimation);
1987 pNewVisualElement->AddAnimation(*pNewBoundsAnimation);
1988 AnimationTransaction::SetCurrentTransactionEventListener(__pEditTime);
1989 AnimationTransaction::Commit();
1991 delete pOldBoundsAnimation;
1992 delete pNewBoundsAnimation;
1997 __isAnimating = false;
1998 __pContentProvider->Destroy();
1999 __pContentProvider = null;
2001 delete pNewBoundsAnimation;
2002 pNewBoundsAnimation = null;
2004 delete pOldBoundsAnimation;
2005 pOldBoundsAnimation = null;
2007 delete pOldSimpleText;
2008 pOldSimpleText = null;
2010 delete pNewSimpleText;
2011 pNewSimpleText = null;
2013 delete pContentCanvas;
2014 pContentCanvas = null;
2020 _EditTimePresenter::EndTransaction(void)
2022 result r = E_SUCCESS;
2024 __isAnimating = false;
2025 VisualElement* pEditTimeElement = __pEditTime->GetVisualElement();
2026 r = GetLastResult();
2027 SysTryReturnVoidResult(NID_UI_CTRL, (pEditTimeElement != null), r, "[%s] Propagating.", GetErrorMessage(r));
2029 if (__pContentProvider != null)
2031 pEditTimeElement->DetachChild(*__pContentProvider);
2032 __pContentProvider->Destroy();
2033 __pContentProvider = null;
2038 __transactionId = 0;
2041 }}} // Tizen::Ui::Controls