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_TimePickerImpl.cpp
20 * @brief This is the implementation file for the _TimePickerImpl class.
23 #include <FBaseSysLog.h>
24 #include "FUiCtrl_DateTimePicker.h"
25 #include "FUiCtrl_TimePickerImpl.h"
26 #include "FUiCtrl_FrameImpl.h"
27 #include "FUi_ControlImplManager.h"
28 #include "FUi_ResourceSizeInfo.h"
29 #include "FUi_ResourceManager.h"
30 #include "FUiCtrl_Form.h"
32 using namespace Tizen::Base;
33 using namespace Tizen::Graphics;
35 namespace Tizen { namespace Ui { namespace Controls
39 _TimePickerImpl::TimePickerSizeInfo::GetDefaultMinimumSizeF(_ControlOrientation orientation) const
41 FloatDimension pickerSize(0.0f, 0.0f);
42 FloatDimension screenSize(0.0f, 0.0f);
44 screenSize = _ControlManager::GetInstance()->GetScreenSizeF();
45 pickerSize = screenSize;
46 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
48 pickerSize.width = screenSize.height;
49 pickerSize.height = screenSize.width;
56 _TimePickerImpl::TimePickerSizeInfo::GetDefaultMaximumSizeF(_ControlOrientation orientation) const
58 FloatDimension pickerSize(0.0f, 0.0f);
59 FloatDimension screenSize(0.0f, 0.0f);
61 screenSize = _ControlManager::GetInstance()->GetScreenSizeF();
62 pickerSize = screenSize;
63 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
65 pickerSize.width = screenSize.height;
66 pickerSize.height = screenSize.width;
72 _TimePickerImpl::_TimePickerImpl(TimePicker* pPublic, _DateTimePicker* pCore)
73 : _WindowImpl(pPublic, pCore)
74 , __pPublicDateTimeChangeEvent(null)
78 _TimePickerImpl::~_TimePickerImpl(void)
80 if (__pPublicDateTimeChangeEvent != null)
82 delete __pPublicDateTimeChangeEvent;
83 __pPublicDateTimeChangeEvent = null;
88 _TimePickerImpl::CreateTimePickerImplN(TimePicker* pControl, const String& title)
94 _DateTimePicker* pCore = _DateTimePicker::CreateDateTimePickerN(DATETIME_OUTPUT_STYLE_TIME, title);
95 SysTryReturn(NID_UI_CTRL, (pCore != null), null, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
97 _TimePickerImpl* pPickerImpl = new (std::nothrow) _TimePickerImpl(pControl, pCore);
98 r = CheckConstruction(pCore, pPickerImpl);
99 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), null, r, "[%s] Propagating.", GetErrorMessage(r));
101 pPickerImpl->__pPublicDateTimeChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(*pControl);
102 SysTryCatch(NID_UI_CTRL, (pPickerImpl->__pPublicDateTimeChangeEvent != null), , E_OUT_OF_MEMORY,
103 "[E_OUT_OF_MEMORY] Memory allocation failed.");
105 r = pPickerImpl->InitializeBoundsProperties(GET_SIZE_INFO(TimePicker), pCore->GetOrientation());
106 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
108 r = pCore->AddDateTimeChangeEventListener(*pPickerImpl);
109 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
120 _TimePickerImpl::GetPublicClassName(void) const
122 return "Tizen::Ui::Controls::TimePicker";
126 _TimePickerImpl::GetPublic(void) const
128 return static_cast <const TimePicker&>(_ControlImpl::GetPublic());
132 _TimePickerImpl::GetPublic(void)
134 return static_cast <TimePicker&>(_ControlImpl::GetPublic());
137 const _DateTimePicker&
138 _TimePickerImpl::GetCore(void) const
140 return static_cast <const _DateTimePicker&>(_ControlImpl::GetCore());
144 _TimePickerImpl::GetCore(void)
146 return static_cast <_DateTimePicker&>(_ControlImpl::GetCore());
150 _TimePickerImpl::GetInstance(TimePicker& timePicker)
152 return static_cast<_TimePickerImpl*> (_ControlImpl::GetInstance(timePicker));
155 const _TimePickerImpl*
156 _TimePickerImpl::GetInstance(const TimePicker& timePicker)
158 return static_cast<const _TimePickerImpl*> (_ControlImpl::GetInstance(timePicker));
162 _TimePickerImpl::AddTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener)
166 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
167 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
169 result r = __pPublicDateTimeChangeEvent->AddListener(listener);
170 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
176 _TimePickerImpl::RemoveTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener)
180 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
181 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
183 result r = __pPublicDateTimeChangeEvent->RemoveListener(listener);
184 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
190 _TimePickerImpl::GetHour(void) const
194 Variant hourValue = GetCore().GetPropertyHour();
196 return hourValue.ToInt();
200 _TimePickerImpl::GetMinute(void) const
204 Variant minuteValue = GetCore().GetPropertyMinute();
206 return minuteValue.ToInt();
210 _TimePickerImpl::GetTime(void) const
214 Variant dateTimeValue = GetCore().GetPropertyDateTime();
216 return dateTimeValue.ToDateTime();
220 _TimePickerImpl::Set24HourNotationEnabled(bool enable)
224 Variant envaluedValue(enable);
226 GetCore().SetProperty24HourNotation(envaluedValue);
230 _TimePickerImpl::SetHour(int hour)
234 Variant hourValue(hour);
236 return GetCore().SetPropertyHour(hourValue);
241 _TimePickerImpl::SetMinute(int minute)
245 Variant minuteValue(minute);
247 return GetCore().SetPropertyMinute(minuteValue);
251 _TimePickerImpl::SetTime(const DateTime& time)
255 Variant dateTimeValue(time);
257 GetCore().SetPropertyDateTime(dateTimeValue);
265 _TimePickerImpl::SetCurrentTime(void)
269 GetCore().SetCurrentDateTime();
277 _TimePickerImpl::SetYear(int year)
279 Variant yearValue(year);
281 return GetCore().SetPropertyYear(yearValue);
285 _TimePickerImpl::SetMonth(int month)
287 Variant monthValue(month);
289 return GetCore().SetPropertyMonth(monthValue);
293 _TimePickerImpl::SetDay(int day)
295 Variant dayValue(day);
297 return GetCore().SetPropertyDay(dayValue);
301 _TimePickerImpl::OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute)
305 if (__pPublicDateTimeChangeEvent == null)
310 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_SAVED);
311 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
313 pEventArg->SetDate(year, month, day);
314 pEventArg->SetTime(hour, minute);
316 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
320 _TimePickerImpl::OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source)
324 if (__pPublicDateTimeChangeEvent == null)
329 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_CANCELED);
330 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
332 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
336 _TimePickerImpl::OnChangeLayout(Tizen::Ui::_ControlOrientation orientation)
340 InitializeBoundsProperties(GET_SIZE_INFO(TimePicker), orientation);
341 _ControlImpl::OnChangeLayout(orientation);
345 _TimePickerImpl::OnAttachedToMainTree(void)
347 result r = E_SUCCESS;
349 if (GetOwner() == null)
351 _FrameImpl* pFrameImpl = dynamic_cast <_FrameImpl*>(_ControlImplManager::GetInstance()->GetCurrentFrame());
352 SysTryReturn(NID_UI_CTRL, (pFrameImpl != null), E_SYSTEM, E_SYSTEM,
353 "[E_SYSTEM] A system error has occurred. Failed to get frame instance.");
355 _Form* pForm = pFrameImpl->GetCore().GetCurrentForm();
358 GetCore().SetOwner(pForm);
362 GetCore().SetOwner(&pFrameImpl->GetCore());
365 SetVisibleState(true);
367 _WindowImpl::OnAttachedToMainTree();
371 }}} // Tizen::Ui::Controls