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.
18 * @file FUiCtrl_TimePickerImpl.cpp
19 * @brief This is the implementation file for the _TimePickerImpl class.
22 #include <FBaseSysLog.h>
23 #include "FUiCtrl_DateTimePicker.h"
24 #include "FUiCtrl_TimePickerImpl.h"
25 #include "FUiCtrl_FrameImpl.h"
26 #include "FUi_ControlImplManager.h"
27 #include "FUi_ResourceSizeInfo.h"
28 #include "FUi_ResourceManager.h"
29 #include "FUiCtrl_Form.h"
31 using namespace Tizen::Base;
32 using namespace Tizen::Graphics;
34 namespace Tizen { namespace Ui { namespace Controls
38 _TimePickerImpl::TimePickerSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
40 Dimension pickerSize(0, 0);
41 Dimension screenSize(0, 0);
43 screenSize = _ControlManager::GetInstance()->GetScreenSize();
44 pickerSize = screenSize;
45 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
47 pickerSize.width = screenSize.height;
48 pickerSize.height = screenSize.width;
55 _TimePickerImpl::TimePickerSizeInfo::GetDefaultMaximumSize(_ControlOrientation orientation) const
57 Dimension pickerSize(0, 0);
58 Dimension screenSize(0, 0);
60 screenSize = _ControlManager::GetInstance()->GetScreenSize();
61 pickerSize = screenSize;
62 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
64 pickerSize.width = screenSize.height;
65 pickerSize.height = screenSize.width;
71 _TimePickerImpl::_TimePickerImpl(TimePicker* pPublic, _DateTimePicker* pCore)
72 : _WindowImpl(pPublic, pCore)
73 , __pPublicDateTimeChangeEvent(null)
77 _TimePickerImpl::~_TimePickerImpl(void)
79 if (__pPublicDateTimeChangeEvent != null)
81 delete __pPublicDateTimeChangeEvent;
82 __pPublicDateTimeChangeEvent = null;
87 _TimePickerImpl::CreateTimePickerImplN(TimePicker* pControl, const String& title)
93 _DateTimePicker* pCore = _DateTimePicker::CreateDateTimePickerN(DATETIME_OUTPUT_STYLE_TIME, title);
94 SysTryReturn(NID_UI_CTRL, (pCore != null), null, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
96 _TimePickerImpl* pPickerImpl = new (std::nothrow) _TimePickerImpl(pControl, pCore);
97 r = CheckConstruction(pCore, pPickerImpl);
98 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), null, r, "[%s] Propagating.", GetErrorMessage(r));
100 pPickerImpl->__pPublicDateTimeChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(*pControl);
101 SysTryCatch(NID_UI_CTRL, (pPickerImpl->__pPublicDateTimeChangeEvent != null), , E_OUT_OF_MEMORY,
102 "[E_OUT_OF_MEMORY] Memory allocation failed.");
104 r = pPickerImpl->InitializeBoundsProperties(GET_SIZE_INFO(TimePicker), pCore->GetOrientation());
105 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
107 r = pCore->AddDateTimeChangeEventListener(*pPickerImpl);
108 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
119 _TimePickerImpl::GetPublicClassName(void) const
121 return "Tizen::Ui::Controls::TimePicker";
125 _TimePickerImpl::GetPublic(void) const
127 return static_cast <const TimePicker&>(_ControlImpl::GetPublic());
131 _TimePickerImpl::GetPublic(void)
133 return static_cast <TimePicker&>(_ControlImpl::GetPublic());
136 const _DateTimePicker&
137 _TimePickerImpl::GetCore(void) const
139 return static_cast <const _DateTimePicker&>(_ControlImpl::GetCore());
143 _TimePickerImpl::GetCore(void)
145 return static_cast <_DateTimePicker&>(_ControlImpl::GetCore());
149 _TimePickerImpl::GetInstance(TimePicker& timePicker)
151 return static_cast<_TimePickerImpl*> (_ControlImpl::GetInstance(timePicker));
154 const _TimePickerImpl*
155 _TimePickerImpl::GetInstance(const TimePicker& timePicker)
157 return static_cast<const _TimePickerImpl*> (_ControlImpl::GetInstance(timePicker));
161 _TimePickerImpl::AddTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener)
165 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
166 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
168 result r = __pPublicDateTimeChangeEvent->AddListener(listener);
169 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
175 _TimePickerImpl::RemoveTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener)
179 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
180 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
182 result r = __pPublicDateTimeChangeEvent->RemoveListener(listener);
183 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
189 _TimePickerImpl::GetHour(void) const
193 Variant hourValue = GetCore().GetPropertyHour();
195 return hourValue.ToInt();
199 _TimePickerImpl::GetMinute(void) const
203 Variant minuteValue = GetCore().GetPropertyMinute();
205 return minuteValue.ToInt();
209 _TimePickerImpl::GetTime(void) const
213 Variant dateTimeValue = GetCore().GetPropertyDateTime();
215 return dateTimeValue.ToDateTime();
219 _TimePickerImpl::Set24HourNotationEnabled(bool enable)
223 Variant envaluedValue(enable);
225 GetCore().SetProperty24HourNotation(envaluedValue);
229 _TimePickerImpl::SetHour(int hour)
233 Variant hourValue(hour);
235 return GetCore().SetPropertyHour(hourValue);
240 _TimePickerImpl::SetMinute(int minute)
244 Variant minuteValue(minute);
246 return GetCore().SetPropertyMinute(minuteValue);
250 _TimePickerImpl::SetTime(const DateTime& time)
254 Variant dateTimeValue(time);
256 GetCore().SetPropertyDateTime(dateTimeValue);
264 _TimePickerImpl::SetCurrentTime(void)
268 GetCore().SetCurrentDateTime();
276 _TimePickerImpl::SetYear(int year)
278 Variant yearValue(year);
280 return GetCore().SetPropertyYear(yearValue);
284 _TimePickerImpl::SetMonth(int month)
286 Variant monthValue(month);
288 return GetCore().SetPropertyMonth(monthValue);
292 _TimePickerImpl::SetDay(int day)
294 Variant dayValue(day);
296 return GetCore().SetPropertyDay(dayValue);
300 _TimePickerImpl::OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute)
304 if (__pPublicDateTimeChangeEvent == null)
309 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_SAVED);
310 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
312 pEventArg->SetDate(year, month, day);
313 pEventArg->SetTime(hour, minute);
315 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
319 _TimePickerImpl::OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source)
323 if (__pPublicDateTimeChangeEvent == null)
328 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_CANCELED);
329 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
331 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
335 _TimePickerImpl::OnChangeLayout(Tizen::Ui::_ControlOrientation orientation)
339 InitializeBoundsProperties(GET_SIZE_INFO(TimePicker), orientation);
340 _ControlImpl::OnChangeLayout(orientation);
344 _TimePickerImpl::OnAttachedToMainTree(void)
346 result r = E_SUCCESS;
348 if (GetOwner() == null)
350 _FrameImpl* pFrameImpl = dynamic_cast <_FrameImpl*>(_ControlImplManager::GetInstance()->GetCurrentFrame());
351 SysTryReturn(NID_UI_CTRL, (pFrameImpl != null), E_SYSTEM, E_SYSTEM,
352 "[E_SYSTEM] A system error has occurred. Failed to get frame instance.");
354 _Form* pForm = pFrameImpl->GetCore().GetCurrentForm();
357 GetCore().SetOwner(pForm);
361 GetCore().SetOwner(&pFrameImpl->GetCore());
364 SetVisibleState(true);
366 _WindowImpl::OnAttachedToMainTree();
370 }}} // Tizen::Ui::Controls