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_DateTimePickerImpl.cpp
20 * @brief This is the implementation file for the _DateTimePickerImpl class.
23 #include <FBaseErrorDefine.h>
24 #include <FBaseSysLog.h>
25 #include "FUiCtrl_DateTimePickerImpl.h"
26 #include "FUiCtrl_DateTimePicker.h"
27 #include "FUiCtrl_FrameImpl.h"
28 #include "FUi_ControlImplManager.h"
29 #include "FUi_ResourceSizeInfo.h"
30 #include "FUi_ResourceManager.h"
31 #include "FUiCtrl_Form.h"
33 using namespace Tizen::Ui::Animations;
35 using namespace Tizen::Base;
36 using namespace Tizen::Graphics;
39 namespace Tizen { namespace Ui { namespace Controls
43 _DateTimePickerImpl::DateTimePickerSizeInfo::GetDefaultMinimumSizeF(_ControlOrientation orientation) const
45 FloatDimension pickerSize(0.0f, 0.0f);
46 FloatDimension screenSize(0.0f, 0.0f);
48 screenSize = _ControlManager::GetInstance()->GetScreenSizeF();
49 pickerSize = screenSize;
50 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
52 pickerSize.width = screenSize.height;
53 pickerSize.height = screenSize.width;
60 _DateTimePickerImpl::DateTimePickerSizeInfo::GetDefaultMaximumSizeF(_ControlOrientation orientation) const
62 FloatDimension pickerSize(0, 0);
63 FloatDimension screenSize(0, 0);
65 screenSize = _ControlManager::GetInstance()->GetScreenSizeF();
66 pickerSize = screenSize;
67 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
69 pickerSize.width = screenSize.height;
70 pickerSize.height = screenSize.width;
76 _DateTimePickerImpl::_DateTimePickerImpl(DateTimePicker* pPublic, _DateTimePicker* pCore)
77 : _WindowImpl(pPublic, pCore)
78 , __pPublicDateTimeChangeEvent(null)
82 _DateTimePickerImpl::~_DateTimePickerImpl(void)
84 if (__pPublicDateTimeChangeEvent != null)
86 delete __pPublicDateTimeChangeEvent;
87 __pPublicDateTimeChangeEvent = null;
92 _DateTimePickerImpl::CreateDateTimePickerImplN(DateTimePicker* pControl, const String& title)
98 _DateTimePicker* pCore = _DateTimePicker::CreateDateTimePickerN(DATETIME_OUTPUT_STYLE_DATE | DATETIME_OUTPUT_STYLE_TIME, title);
99 SysTryReturn(NID_UI_CTRL, (pCore != null), null, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
101 _DateTimePickerImpl* pDateTimePickerImpl = new (std::nothrow) _DateTimePickerImpl(pControl, pCore);
102 r = CheckConstruction(pCore, pDateTimePickerImpl);
103 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), null, r, "[%s] Propagating.", GetErrorMessage(r));
105 pDateTimePickerImpl->__pPublicDateTimeChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(*pControl);
106 SysTryCatch(NID_UI_CTRL, (pDateTimePickerImpl->__pPublicDateTimeChangeEvent != null), , E_OUT_OF_MEMORY,
107 "[E_OUT_OF_MEMORY] Memory allocation failed.");
109 r = pDateTimePickerImpl->InitializeBoundsProperties(GET_SIZE_INFO(DateTimePicker), pCore->GetOrientation());
110 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
112 r = pCore->AddDateTimeChangeEventListener(*pDateTimePickerImpl);
113 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
115 return pDateTimePickerImpl;
118 delete pDateTimePickerImpl;
124 _DateTimePickerImpl::GetPublicClassName(void) const
126 return "Tizen::Ui::Controls::DateTimePicker";
129 const DateTimePicker&
130 _DateTimePickerImpl::GetPublic(void) const
132 return static_cast <const DateTimePicker&>(_ControlImpl::GetPublic());
136 _DateTimePickerImpl::GetPublic(void)
138 return static_cast <DateTimePicker&>(_ControlImpl::GetPublic());
141 const _DateTimePicker&
142 _DateTimePickerImpl::GetCore(void) const
144 return static_cast <const _DateTimePicker&>(_ControlImpl::GetCore());
148 _DateTimePickerImpl::GetCore(void)
150 return static_cast <_DateTimePicker&>(_ControlImpl::GetCore());
154 _DateTimePickerImpl::GetInstance(DateTimePicker& dateTimePicker)
156 return static_cast<_DateTimePickerImpl*> (_ControlImpl::GetInstance(dateTimePicker));
159 const _DateTimePickerImpl*
160 _DateTimePickerImpl::GetInstance(const DateTimePicker& dateTimePicker)
162 return static_cast<const _DateTimePickerImpl*> (_ControlImpl::GetInstance(dateTimePicker));
166 _DateTimePickerImpl::AddDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener)
170 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
171 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
173 result r = __pPublicDateTimeChangeEvent->AddListener(listener);
174 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
180 _DateTimePickerImpl::RemoveDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener)
184 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
185 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
187 result r = __pPublicDateTimeChangeEvent->RemoveListener(listener);
188 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
194 _DateTimePickerImpl::SetDateTime(const DateTime& dateTime)
198 Variant dateTimeValue(dateTime);
200 GetCore().SetPropertyDateTime(dateTimeValue);
204 _DateTimePickerImpl::SetCurrentDateTime(void)
208 GetCore().SetCurrentDateTime();
212 _DateTimePickerImpl::SetYear(int year)
216 Variant yearValue(year);
218 return GetCore().SetPropertyYear(yearValue);
222 _DateTimePickerImpl::SetMonth(int month)
226 Variant monthValue(month);
228 return GetCore().SetPropertyMonth(monthValue);
232 _DateTimePickerImpl::SetDay(int day)
236 Variant dayValue(day);
238 return GetCore().SetPropertyDay(dayValue);
242 _DateTimePickerImpl::SetHour(int hour)
246 Variant hourValue(hour);
248 return GetCore().SetPropertyHour(hourValue);
252 _DateTimePickerImpl::SetMinute(int minute)
256 Variant minuteValue(minute);
258 return GetCore().SetPropertyMinute(minuteValue);
262 _DateTimePickerImpl::GetDateTime(void) const
266 Variant dateTimeValue = GetCore().GetPropertyDateTime();
268 return dateTimeValue.ToDateTime();
272 _DateTimePickerImpl::GetYear(void) const
276 Variant yearValue = GetCore().GetPropertyYear();
278 return yearValue.ToInt();
282 _DateTimePickerImpl::GetMonth(void) const
286 Variant monthValue = GetCore().GetPropertyMonth();
288 return monthValue.ToInt();
292 _DateTimePickerImpl::GetDay(void) const
296 Variant dayValue = GetCore().GetPropertyDay();
298 return dayValue.ToInt();
302 _DateTimePickerImpl::GetHour(void) const
306 Variant hourValue = GetCore().GetPropertyHour();
308 return hourValue.ToInt();
312 _DateTimePickerImpl::GetMinute(void) const
316 Variant minuteValue = GetCore().GetPropertyMinute();
318 return minuteValue.ToInt();
322 _DateTimePickerImpl::Set24HourNotationEnabled(bool enable)
326 Variant enabledValue(enable);
328 GetCore().SetProperty24HourNotation(enabledValue);
332 _DateTimePickerImpl::Is24HourNotationEnabled(void) const
336 Variant enabledValue = GetCore().GetProperty24HourNotation();
338 return enabledValue.ToBool();
342 _DateTimePickerImpl::SetYearRange(int minYear, int maxYear)
346 result r = E_SUCCESS;
348 Variant currentMinYearValue = GetCore().GetPropertyMinYearRange();
349 Variant minYearValue(minYear);
350 Variant maxYearValue(maxYear);
352 r = GetCore().SetPropertyMinYearRange(minYearValue);
353 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
355 r = GetCore().SetPropertyMaxYearRange(maxYearValue);
358 // rollback minYearValue
359 GetCore().SetPropertyMinYearRange(minYearValue);
360 SysLogException(NID_UI_CTRL, r, "[%s] Propagating.", GetErrorMessage(r));
367 _DateTimePickerImpl::GetYearRange(int& minYear, int& maxYear) const
371 Variant minYearValue = GetCore().GetPropertyMinYearRange();
372 Variant maxYearValue = GetCore().GetPropertyMaxYearRange();
374 minYear = minYearValue.ToInt();
375 maxYear = maxYearValue.ToInt();
381 _DateTimePickerImpl::OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute)
385 if (__pPublicDateTimeChangeEvent == null)
390 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATETIME_PUBLIC_CHANGE_SAVED);
391 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
393 pEventArg->SetDate(year, month, day);
394 pEventArg->SetTime(hour, minute);
396 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
400 _DateTimePickerImpl::OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source)
404 if (__pPublicDateTimeChangeEvent == null)
409 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATETIME_PUBLIC_CHANGE_CANCELED);
410 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
412 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
416 _DateTimePickerImpl::OnChangeLayout(Tizen::Ui::_ControlOrientation orientation)
420 InitializeBoundsProperties(GET_SIZE_INFO(DateTimePicker), orientation);
421 _ControlImpl::OnChangeLayout(orientation);
425 _DateTimePickerImpl::OnAttachedToMainTree(void)
427 result r = E_SUCCESS;
429 if (GetOwner() == null)
431 _FrameImpl* pFrameImpl = dynamic_cast <_FrameImpl*>(_ControlImplManager::GetInstance()->GetCurrentFrame());
432 SysTryReturn(NID_UI_CTRL, pFrameImpl != null, E_SYSTEM,
433 E_SYSTEM, "[E_SYSTEM] This instance is not constructed.");
435 _Form* pForm = pFrameImpl->GetCore().GetCurrentForm();
439 GetCore().SetOwner(pForm);
443 GetCore().SetOwner(&pFrameImpl->GetCore());
446 SetVisibleState(true);
447 _WindowImpl::OnAttachedToMainTree();
451 }}} // Tizen::Ui::Controls