2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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_EditTime.cpp
20 * @brief This is the implementation file for the _EditTime class.
23 #include "FUi_AccessibilityContainer.h"
24 #include "FUi_AccessibilityElement.h"
25 #include "FUi_ResourceManager.h"
26 #include "FUiAnim_VisualElement.h"
27 #include "FUiCtrl_EditTime.h"
28 #include "FUiCtrl_EditTimePresenter.h"
29 #include "FUiCtrl_Form.h"
30 #include "FUiCtrl_Frame.h"
31 #include "FUiCtrl_DateTimeDefine.h"
33 using namespace Tizen::Graphics;
34 using namespace Tizen::Base::Runtime;
35 using namespace Tizen::Base;
37 namespace Tizen { namespace Ui { namespace Controls
40 IMPLEMENT_PROPERTY(_EditTime);
42 _EditTime::_EditTime(void)
43 : __pEditTimePresenter(null)
44 , __pTimeChangeEvent(null)
45 , __pDateTimeBar(null)
46 , __absoluteBounds(Rectangle())
48 , __pAccessibilityTitleElement(null)
49 , __pAccessibilityHourElement(null)
50 , __pAccessibilityMinuteElement(null)
51 , __pAccessibilityAmPmElement(null)
55 _EditTime::~_EditTime(void)
57 delete __pDateTimeBar;
58 __pDateTimeBar = null;
60 delete __pEditTimePresenter;
61 __pEditTimePresenter = null;
63 if (__pTimeChangeEvent != null)
65 delete __pTimeChangeEvent;
66 __pTimeChangeEvent = null;
69 if (__pAccessibilityTitleElement)
71 __pAccessibilityTitleElement->Activate(false);
72 __pAccessibilityTitleElement = null;
74 if (__pAccessibilityHourElement)
76 __pAccessibilityHourElement->Activate(false);
77 __pAccessibilityHourElement = null;
79 if (__pAccessibilityMinuteElement)
81 __pAccessibilityMinuteElement->Activate(false);
82 __pAccessibilityMinuteElement = null;
84 if (__pAccessibilityAmPmElement)
86 __pAccessibilityAmPmElement->Activate(false);
87 __pAccessibilityAmPmElement = null;
92 _EditTime::CreateEditTimeN(const String& title)
96 _AccessibilityContainer* pContainer = null;
98 _EditTime* pEditTime = new (std::nothrow) _EditTime;
99 SysTryReturn(NID_UI_CTRL, pEditTime, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
101 pEditTime->GetVisualElement()->SetSurfaceOpaque(false);
103 pEditTime->__pEditTimePresenter = _EditTimePresenter::CreateInstanceN(*pEditTime, title);
105 SysTryCatch(NID_UI_CTRL, pEditTime->__pEditTimePresenter, , r, "[%s] Propagating.", GetErrorMessage(r));
107 r = pEditTime->CreateDateTimeBar();
108 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
110 pEditTime->__pEditTimePresenter->Initialize();
112 SysTryCatch(NID_UI_CTRL, pEditTime->__pEditTimePresenter, , r, "[%s] Propagating.", GetErrorMessage(r));
114 pEditTime->__pEditTimePresenter->SetCurrentTime();
116 if (title.IsEmpty() != true)
118 pEditTime->__title = title;
121 pEditTime->SetResizable(false);
123 pContainer = pEditTime->GetAccessibilityContainer();
126 pContainer->Activate(true);
129 pEditTime->AcquireHandle();
139 _EditTime::CreateDateTimeBar(void)
141 result r = E_SUCCESS;
143 __pDateTimeBar = _DateTimeBar::CreateDateTimeBarN();
145 SysTryReturn(NID_UI_CTRL, (__pDateTimeBar != null), r, r, "[%s] Propagating.", GetErrorMessage(r));
147 r = __pDateTimeBar->AddActionEventListener(*this);
148 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
150 r = __pDateTimeBar->AddDateTimeChangeEventListener(*this);
151 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
156 delete __pDateTimeBar;
161 _EditTime::AddTimeChangeEventListener(const _IDateTimeChangeEventListener& listener)
163 if (__pTimeChangeEvent == null)
165 __pTimeChangeEvent = new (std::nothrow) _DateTimeChangeEvent(*this);
166 SysTryReturn(NID_UI_CTRL, (__pTimeChangeEvent != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
167 "[E_OUT_OF_MEMORY] Memory allocation failed.");
170 result r = __pTimeChangeEvent->AddListener(listener);
171 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
177 _EditTime::RemoveTimeChangeEventListener(const _IDateTimeChangeEventListener& listener)
179 result r = E_OBJ_NOT_FOUND;
181 if (__pTimeChangeEvent)
183 r = __pTimeChangeEvent->RemoveListener(listener);
186 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
192 _EditTime::SetTime(const DateTime& time)
194 SetProperty("time", Variant(time));
199 _EditTime::SetPropertyTime(const Variant& time)
201 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM, E_SYSTEM,
202 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
204 __pEditTimePresenter->SetTime(time.ToDateTime());
206 UpdateAccessibilityElement();
211 _EditTime::GetTime(void) const
213 Variant time = GetProperty("time");
215 return time.ToDateTime();
219 _EditTime::GetPropertyTime(void) const
223 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), Variant(), E_SYSTEM,
224 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
226 time = __pEditTimePresenter->GetTime();
228 return Variant(time);
232 _EditTime::SetHour(int hour)
234 result r = E_SUCCESS;
236 SetProperty("hour", Variant(hour));
244 _EditTime::SetPropertyHour(const Variant& hour)
246 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM, E_SYSTEM,
247 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
249 result r = E_SUCCESS;
251 r = __pEditTimePresenter->SetHour(hour.ToInt());
252 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
254 UpdateAccessibilityElement();
260 _EditTime::GetHour(void) const
262 Variant hour = GetProperty("hour");
268 _EditTime::GetPropertyHour(void) const
272 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), Variant(), E_SYSTEM,
273 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
275 hour = __pEditTimePresenter->GetHour();
277 return Variant(hour);
281 _EditTime::SetMinute(int minute)
283 result r = E_SUCCESS;
285 SetProperty("minute", Variant(minute));
293 _EditTime::SetPropertyMinute(const Variant& minute)
295 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM, E_SYSTEM,
296 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
298 result r = E_SUCCESS;
300 r = __pEditTimePresenter->SetMinute(minute.ToInt());
301 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
303 UpdateAccessibilityElement();
309 _EditTime::GetMinute(void) const
311 Variant minute = GetProperty("minute");
313 return minute.ToInt();
317 _EditTime::GetPropertyMinute(void) const
321 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), Variant(), E_SYSTEM,
322 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
324 minute = __pEditTimePresenter->GetMinute();
326 return Variant(minute);
330 _EditTime::SetCurrentTime(void)
332 SysTryReturnVoidResult(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM,
333 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
335 __pEditTimePresenter->SetCurrentTime();
337 UpdateAccessibilityElement();
343 _EditTime::SetTimePickerEnabled(bool enable)
345 SetProperty("timePickerEnabled", Variant(enable));
350 _EditTime::SetPropertyTimePickerEnabled(const Variant& enable)
352 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM, E_SYSTEM,
353 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
355 __pEditTimePresenter->SetTimePickerEnabled(enable.ToBool());
361 _EditTime::IsTimePickerEnabled(void) const
363 Variant enable = GetProperty("timePickerEnabled");
365 return enable.ToBool();
369 _EditTime::GetPropertyTimePickerEnabled(void) const
373 SysTryReturn(NID_UI_CTRL, (__pEditTimePresenter != null), Variant(), E_SYSTEM,
374 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
376 enable = __pEditTimePresenter->IsTimePickerEnabled();
378 return Variant(enable);
382 _EditTime::Set24HourNotationEnabled(bool enable)
384 SysTryReturnVoidResult(NID_UI_CTRL, (__pEditTimePresenter != null), E_SYSTEM,
385 "[E_SYSTEM] A system error has occurred. The _EditDatePresenter instance is null.");
387 __pEditTimePresenter->Set24HourNotationEnabled(enable);
392 _EditTime::Is24HourNotationEnabled(void) const
394 SysAssertf((__pEditTimePresenter != null), "The _EditDatePresenter instance is null.");
396 return __pEditTimePresenter->Is24HourNotationEnabled();
400 _EditTime::CalculateDateTimeBarPosition(void)
402 result r = E_SUCCESS;
403 Rectangle absoluteBounds;
404 Rectangle parentBounds;
405 Rectangle frameBounds;
407 absoluteBounds = GetAbsoluteBounds();
409 _Frame* pFrame = dynamic_cast<_Frame*>(_ControlManager::GetInstance()->GetCurrentFrame());
410 SysTryReturn(NID_UI_CTRL, (pFrame != null), E_SYSTEM, E_SYSTEM,
411 "[E_SYSTEM] A system error has occurred. Failed to get frame instance.");
413 _Form* pForm = pFrame->GetCurrentForm();
414 SysTryReturn(NID_UI_CTRL, (pForm != null), E_SYSTEM, E_SYSTEM,
415 "[E_SYSTEM] A system error has occurred. Failed to get form instance.");
417 parentBounds = pForm->GetClientBounds();
418 frameBounds = pFrame->GetAbsoluteBounds();
420 int dateTimeBarHeight = 0;
421 GET_SHAPE_CONFIG(DATETIMEBAR::ITEM_HEIGHT, GetOrientation(), dateTimeBarHeight);
423 Rectangle parentWindowBounds = GetParentWindowBounds();
424 int bottomMargin = 0;
425 // DateTimeBar top margin can be used as EditTime's bottom margin.
426 GET_SHAPE_CONFIG(DATETIMEBAR::TOP_MARGIN, GetOrientation(), bottomMargin);
428 int bottomPosition = 0;
429 bottomPosition = absoluteBounds.y + absoluteBounds.height + bottomMargin + dateTimeBarHeight;
431 GetDateTimeBar()->SetParentWindowBounds(parentWindowBounds);
433 if (bottomPosition > frameBounds.y + parentBounds.y + parentBounds.height)
435 r = GetDateTimeBar()->SetPositionAndAlignment(Point(parentWindowBounds.x, absoluteBounds.y), DATETIME_BAR_ALIGN_UP);
436 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
440 r = GetDateTimeBar()->SetPositionAndAlignment(Point(parentWindowBounds.x, absoluteBounds.y + absoluteBounds.height + bottomMargin), DATETIME_BAR_ALIGN_DOWN);
441 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
444 __absoluteBounds = absoluteBounds;
450 _EditTime::OnDraw(void)
452 if (GetDateTimeBar() != null)
454 CalculateDateTimeBarPosition();
457 __pEditTimePresenter->Draw();
459 UpdateAccessibilityElement();
464 _EditTime::OnAttachedToMainTree(void)
466 if (likely(!(_AccessibilityManager::IsActivated())))
471 Rectangle hourBounds = __pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR);
472 Rectangle minuteBounds = __pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE);
473 Rectangle ampmBounds = __pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM);
475 _AccessibilityContainer* pContainer = GetAccessibilityContainer();
478 pContainer->AddListener(*this);
479 if (__pAccessibilityTitleElement == null)
481 __pAccessibilityTitleElement = new _AccessibilityElement(true);
482 __pAccessibilityTitleElement->SetBounds(GetBounds());
483 __pAccessibilityTitleElement->SetTrait(ACCESSIBILITY_TRAITS_NONE);
484 pContainer->AddElement(*__pAccessibilityTitleElement);
487 if (__pAccessibilityHourElement == null && __pAccessibilityMinuteElement == null)
489 String hintText(L"Double tap to edit");
491 __pAccessibilityHourElement = new _AccessibilityElement(true);
492 __pAccessibilityHourElement->SetBounds(hourBounds);
493 __pAccessibilityHourElement->SetTrait(ACCESSIBILITY_TRAITS_HOUR);
494 __pAccessibilityHourElement->SetHint(hintText);
495 pContainer->AddElement(*__pAccessibilityHourElement);
497 __pAccessibilityMinuteElement = new _AccessibilityElement(true);
498 __pAccessibilityMinuteElement->SetBounds(minuteBounds);
499 __pAccessibilityMinuteElement->SetTrait(ACCESSIBILITY_TRAITS_MINUTE);
500 __pAccessibilityMinuteElement->SetHint(hintText);
501 pContainer->AddElement(*__pAccessibilityMinuteElement);
503 if (Is24HourNotationEnabled() == false)
505 __pAccessibilityAmPmElement = new _AccessibilityElement(true);
506 __pAccessibilityAmPmElement->SetBounds(ampmBounds);
507 __pAccessibilityAmPmElement->SetTrait(ACCESSIBILITY_TRAITS_BUTTON);
508 pContainer->AddElement(*__pAccessibilityAmPmElement);
517 _EditTime::OnBoundsChanged(void)
519 __pEditTimePresenter->Initialize();
521 if (__pAccessibilityTitleElement)
523 __pAccessibilityTitleElement->SetBounds(__pEditTimePresenter->GetTitleBounds());
525 if (__pAccessibilityHourElement)
527 __pAccessibilityHourElement->SetBounds(__pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_HOUR));
529 if (__pAccessibilityMinuteElement)
531 __pAccessibilityMinuteElement->SetBounds(__pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_MINUTE));
533 if (__pAccessibilityAmPmElement)
535 __pAccessibilityAmPmElement->SetBounds(__pEditTimePresenter->GetDisplayAreaBoundsFromHoursStyle(DATETIME_ID_AMPM));
542 _EditTime::OnChangeLayout(_ControlOrientation orientation)
544 __pEditTimePresenter->OnChangeLayout(orientation);
546 if (GetDateTimeBar() != null)
548 CalculateDateTimeBarPosition();
549 GetDateTimeBar()->Close();
556 _EditTime::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
558 Rectangle absoluteBounds = GetAbsoluteBounds();
560 if (absoluteBounds.y != __absoluteBounds.y || absoluteBounds.height != __absoluteBounds.height)
562 CalculateDateTimeBarPosition();
565 return __pEditTimePresenter->OnTouchPressed(source, touchinfo);
569 _EditTime::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
571 return __pEditTimePresenter->OnTouchReleased(source, touchinfo);
575 _EditTime::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
577 return __pEditTimePresenter->OnTouchCanceled(source, touchinfo);
581 _EditTime::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
583 return __pEditTimePresenter->OnTouchMoved(source, touchinfo);
587 _EditTime::OnTouchMoveHandled(const _Control& control)
589 __pEditTimePresenter->OnTouchMoveHandled(control);
594 _EditTime::FireTimeChangeEvent(_DateTimeChangeStatus status)
596 SysTryReturn(NID_UI_CTRL, (__pTimeChangeEvent != null), E_SYSTEM, E_SYSTEM,
597 "[E_SYSTEM] A system error has occurred. The _DateTimeChangeEvent instance is null.");
599 _DateTimeChangeEventArg* pDateTimeEventArg = new (std::nothrow) _DateTimeChangeEventArg(status);
600 SysTryReturn(NID_UI_CTRL, pDateTimeEventArg, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY,
601 "[E_OUT_OF_MEMORY] Memory allocation failed.");
603 pDateTimeEventArg->SetTime(GetHour(), GetMinute());
605 __pTimeChangeEvent->Fire(*pDateTimeEventArg);
611 _EditTime::OnDateTimeChanged(const _Control& source, int year, int month, int day, int hour, int minute)
613 __pEditTimePresenter->Animate();
615 FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED);
620 _EditTime::OnDateTimeChangeCanceled(const _Control& source)
624 FireTimeChangeEvent(TIME_INTERNAL_CHANGE_CANCELED);
629 _EditTime::OnActionPerformed(const Ui::_Control& source, int actionId)
631 _DateTimeId boxId = __pEditTimePresenter->GetLastSelectedId();
633 if (boxId == DATETIME_ID_HOUR)
635 bool amEnable = true;
636 amEnable = __pEditTimePresenter->GetAmEnabled();
640 if (amEnable == false && Is24HourNotationEnabled() == false)
642 if (hour < DATETIME_HOUR_MAX_FOR_24NOTATION)
644 hour += DATETIME_HOUR_MAX_FOR_24NOTATION;
647 else if (amEnable == true && Is24HourNotationEnabled() == false)
649 if (hour == DATETIME_HOUR_MAX_FOR_24NOTATION)
651 hour = DATETIME_HOUR_MIN;
656 else if (boxId == DATETIME_ID_MINUTE)
666 _EditTime::GetDateTimeBar(void) const
668 return __pDateTimeBar;
672 _EditTime::OnFontChanged(Font* pFont)
674 __pEditTimePresenter->OnFontChanged(pFont);
680 _EditTime::OnFontInfoRequested(unsigned long& style, int& size)
682 __pEditTimePresenter->OnFontInfoRequested(style, size);
688 _EditTime::GetParentWindowBounds(void) const
691 _Window* pwindow = null;
692 _Control* pControlCore = GetParent();
694 Dimension dateTimeBarSize(0, 0);
695 GET_DIMENSION_CONFIG(DATETIMEBAR::DEFAULT_SIZE, GetOrientation(), dateTimeBarSize);
696 Rectangle parentWindowBounds(0, 0, dateTimeBarSize.width, dateTimeBarSize.height);
700 if (pControlCore == null)
702 SysLog(NID_UI_CTRL,"[E_SYSTEM] Parent window not found.");
704 return parentWindowBounds;
707 // If the parent is a Frame, then return the Form's bounds.
708 pForm = dynamic_cast<_Form*>(pControlCore);
711 parentWindowBounds = pForm->GetBounds();
715 pwindow = dynamic_cast<_Window*>(pControlCore);
719 parentWindowBounds = pwindow->GetBounds();
723 pControlCore = pControlCore->GetParent();
726 return parentWindowBounds;
730 _EditTime::UpdateAccessibilityElement(void)
734 if (likely(!(_AccessibilityManager::IsActivated())))
739 if (__pAccessibilityTitleElement == null && __pAccessibilityHourElement == null
740 && __pAccessibilityMinuteElement == null && __pAccessibilityAmPmElement == null)
745 if (__title.IsEmpty() == false)
747 string.Append(__title);
748 string.Append(L", ");
752 int hour = GetHour();
753 int maxHour = DATETIME_HOUR_MAX_FOR_24NOTATION;
755 if (Is24HourNotationEnabled() == false && (hour > maxHour))
757 hourString.Format(10, L"%02d", hour - DATETIME_HOUR_MAX_FOR_24NOTATION);
761 hourString.Format(10, L"%02d", hour);
764 string.Append(hourString.GetPointer());
766 string.Append(GetMinute());
769 if (Is24HourNotationEnabled() == false)
771 String hintAmPmText(L"Double tap to change to ");
774 GET_STRING_CONFIG(IDS_COM_BODY_AM, amString);
775 GET_STRING_CONFIG(IDS_COM_POP_PM, pmString);
777 if (__pEditTimePresenter->GetAmEnabled() == true)
779 __pAccessibilityAmPmElement->SetLabel(amString);
780 hintAmPmText.Append(pmString.GetPointer());
781 string.Append(amString.GetPointer());
785 __pAccessibilityAmPmElement->SetLabel(pmString);
786 hintAmPmText.Append(amString.GetPointer());
787 string.Append(pmString.GetPointer());
790 __pAccessibilityAmPmElement->SetHint(hintAmPmText);
793 __pAccessibilityTitleElement->SetLabel(string);
795 __pAccessibilityHourElement->SetLabel(hourString);
798 string.Format(10, L"%02d", GetMinute());
799 __pAccessibilityMinuteElement->SetLabel(string);
805 _EditTime::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
811 _EditTime::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
817 _EditTime::OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
823 _EditTime::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
829 _EditTime::OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element)
835 _EditTime::OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
841 labelText = element.GetLabel();
843 GET_STRING_CONFIG(IDS_COM_BODY_AM, amString);
844 GET_STRING_CONFIG(IDS_COM_POP_PM, pmString);
846 if (labelText == amString || labelText == pmString)
848 labelText.Append(L" Selected");
849 _AccessibilityManager::GetInstance()->ReadContent(labelText);
856 _EditTime::OnAccessibilityValueIncreased(const _AccessibilityContainer&, const _AccessibilityElement&)
862 _EditTime::OnAccessibilityValueDecreased(const _AccessibilityContainer&, const _AccessibilityElement&)