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_DateTimePickerImpl.cpp
19 * @brief This is the implementation file for the _DateTimePickerImpl class.
22 #include <FBaseErrorDefine.h>
23 #include <FBaseSysLog.h>
24 #include "FUiCtrl_DateTimePickerImpl.h"
25 #include "FUiCtrl_DateTimePicker.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::Ui::Animations;
34 using namespace Tizen::Base;
35 using namespace Tizen::Graphics;
38 namespace Tizen { namespace Ui { namespace Controls
42 _DateTimePickerImpl::DateTimePickerSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
44 Dimension pickerSize(0, 0);
45 Dimension screenSize(0, 0);
47 screenSize = _ControlManager::GetInstance()->GetScreenSize();
48 pickerSize = screenSize;
49 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
51 pickerSize.width = screenSize.height;
52 pickerSize.height = screenSize.width;
59 _DateTimePickerImpl::DateTimePickerSizeInfo::GetDefaultMaximumSize(_ControlOrientation orientation) const
61 Dimension pickerSize(0, 0);
62 Dimension screenSize(0, 0);
64 screenSize = _ControlManager::GetInstance()->GetScreenSize();
65 pickerSize = screenSize;
66 if (orientation == _CONTROL_ORIENTATION_LANDSCAPE)
68 pickerSize.width = screenSize.height;
69 pickerSize.height = screenSize.width;
75 _DateTimePickerImpl::_DateTimePickerImpl(DateTimePicker* pPublic, _DateTimePicker* pCore)
76 : _WindowImpl(pPublic, pCore)
77 , __pPublicDateTimeChangeEvent(null)
81 _DateTimePickerImpl::~_DateTimePickerImpl(void)
83 if (__pPublicDateTimeChangeEvent != null)
85 delete __pPublicDateTimeChangeEvent;
86 __pPublicDateTimeChangeEvent = null;
91 _DateTimePickerImpl::CreateDateTimePickerImplN(DateTimePicker* pControl, const String& title)
97 _DateTimePicker* pCore = _DateTimePicker::CreateDateTimePickerN(DATETIME_OUTPUT_STYLE_DATE | DATETIME_OUTPUT_STYLE_TIME, title);
98 SysTryReturn(NID_UI_CTRL, (pCore != null), null, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
100 _DateTimePickerImpl* pDateTimePickerImpl = new (std::nothrow) _DateTimePickerImpl(pControl, pCore);
101 r = CheckConstruction(pCore, pDateTimePickerImpl);
102 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), null, r, "[%s] Propagating.", GetErrorMessage(r));
104 pDateTimePickerImpl->__pPublicDateTimeChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(*pControl);
105 SysTryCatch(NID_UI_CTRL, (pDateTimePickerImpl->__pPublicDateTimeChangeEvent != null), , E_OUT_OF_MEMORY,
106 "[E_OUT_OF_MEMORY] Memory allocation failed.");
108 r = pDateTimePickerImpl->InitializeBoundsProperties(GET_SIZE_INFO(DateTimePicker), pCore->GetOrientation());
109 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
111 r = pCore->AddDateTimeChangeEventListener(*pDateTimePickerImpl);
112 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
114 return pDateTimePickerImpl;
117 delete pDateTimePickerImpl;
123 _DateTimePickerImpl::GetPublicClassName(void) const
125 return "Tizen::Ui::Controls::DateTimePicker";
128 const DateTimePicker&
129 _DateTimePickerImpl::GetPublic(void) const
131 return static_cast <const DateTimePicker&>(_ControlImpl::GetPublic());
135 _DateTimePickerImpl::GetPublic(void)
137 return static_cast <DateTimePicker&>(_ControlImpl::GetPublic());
140 const _DateTimePicker&
141 _DateTimePickerImpl::GetCore(void) const
143 return static_cast <const _DateTimePicker&>(_ControlImpl::GetCore());
147 _DateTimePickerImpl::GetCore(void)
149 return static_cast <_DateTimePicker&>(_ControlImpl::GetCore());
153 _DateTimePickerImpl::GetInstance(DateTimePicker& dateTimePicker)
155 return static_cast<_DateTimePickerImpl*> (_ControlImpl::GetInstance(dateTimePicker));
158 const _DateTimePickerImpl*
159 _DateTimePickerImpl::GetInstance(const DateTimePicker& dateTimePicker)
161 return static_cast<const _DateTimePickerImpl*> (_ControlImpl::GetInstance(dateTimePicker));
165 _DateTimePickerImpl::AddDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener)
169 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
170 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
172 result r = __pPublicDateTimeChangeEvent->AddListener(listener);
173 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
179 _DateTimePickerImpl::RemoveDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener)
183 SysTryReturnResult(NID_UI_CTRL, (__pPublicDateTimeChangeEvent != null), E_SYSTEM,
184 "A system error has occurred. The _PublicDateTimeChangeEvent instance is null.");
186 result r = __pPublicDateTimeChangeEvent->RemoveListener(listener);
187 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
193 _DateTimePickerImpl::SetDateTime(const DateTime& dateTime)
197 Variant dateTimeValue(dateTime);
199 GetCore().SetPropertyDateTime(dateTimeValue);
203 _DateTimePickerImpl::SetCurrentDateTime(void)
207 GetCore().SetCurrentDateTime();
211 _DateTimePickerImpl::SetYear(int year)
215 Variant yearValue(year);
217 return GetCore().SetPropertyYear(yearValue);
221 _DateTimePickerImpl::SetMonth(int month)
225 Variant monthValue(month);
227 return GetCore().SetPropertyMonth(monthValue);
231 _DateTimePickerImpl::SetDay(int day)
235 Variant dayValue(day);
237 return GetCore().SetPropertyDay(dayValue);
241 _DateTimePickerImpl::SetHour(int hour)
245 Variant hourValue(hour);
247 return GetCore().SetPropertyHour(hourValue);
251 _DateTimePickerImpl::SetMinute(int minute)
255 Variant minuteValue(minute);
257 return GetCore().SetPropertyMinute(minuteValue);
261 _DateTimePickerImpl::GetDateTime(void) const
265 Variant dateTimeValue = GetCore().GetPropertyDateTime();
267 return dateTimeValue.ToDateTime();
271 _DateTimePickerImpl::GetYear(void) const
275 Variant yearValue = GetCore().GetPropertyYear();
277 return yearValue.ToInt();
281 _DateTimePickerImpl::GetMonth(void) const
285 Variant monthValue = GetCore().GetPropertyMonth();
287 return monthValue.ToInt();
291 _DateTimePickerImpl::GetDay(void) const
295 Variant dayValue = GetCore().GetPropertyDay();
297 return dayValue.ToInt();
301 _DateTimePickerImpl::GetHour(void) const
305 Variant hourValue = GetCore().GetPropertyHour();
307 return hourValue.ToInt();
311 _DateTimePickerImpl::GetMinute(void) const
315 Variant minuteValue = GetCore().GetPropertyMinute();
317 return minuteValue.ToInt();
321 _DateTimePickerImpl::Set24HourNotationEnabled(bool enable)
325 Variant enabledValue(enable);
327 GetCore().SetProperty24HourNotation(enabledValue);
331 _DateTimePickerImpl::Is24HourNotationEnabled(void) const
335 Variant enabledValue = GetCore().GetProperty24HourNotation();
337 return enabledValue.ToBool();
341 _DateTimePickerImpl::SetYearRange(int minYear, int maxYear)
345 result r = E_SUCCESS;
347 Variant currentMinYearValue = GetCore().GetPropertyMinYearRange();
348 Variant minYearValue(minYear);
349 Variant maxYearValue(maxYear);
351 r = GetCore().SetPropertyMinYearRange(minYearValue);
352 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
354 r = GetCore().SetPropertyMaxYearRange(maxYearValue);
357 // rollback minYearValue
358 GetCore().SetPropertyMinYearRange(minYearValue);
359 SysLogException(NID_UI_CTRL, r, "[%s] Propagating.", GetErrorMessage(r));
366 _DateTimePickerImpl::GetYearRange(int& minYear, int& maxYear) const
370 Variant minYearValue = GetCore().GetPropertyMinYearRange();
371 Variant maxYearValue = GetCore().GetPropertyMaxYearRange();
373 minYear = minYearValue.ToInt();
374 maxYear = maxYearValue.ToInt();
380 _DateTimePickerImpl::OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute)
384 if (__pPublicDateTimeChangeEvent == null)
389 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATETIME_PUBLIC_CHANGE_SAVED);
390 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
392 pEventArg->SetDate(year, month, day);
393 pEventArg->SetTime(hour, minute);
395 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
399 _DateTimePickerImpl::OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source)
403 if (__pPublicDateTimeChangeEvent == null)
408 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATETIME_PUBLIC_CHANGE_CANCELED);
409 SysTryReturnVoidResult(NID_UI_CTRL, (pEventArg != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
411 __pPublicDateTimeChangeEvent->Fire(*pEventArg);
415 _DateTimePickerImpl::OnChangeLayout(Tizen::Ui::_ControlOrientation orientation)
419 InitializeBoundsProperties(GET_SIZE_INFO(DateTimePicker), orientation);
420 _ControlImpl::OnChangeLayout(orientation);
424 _DateTimePickerImpl::OnAttachedToMainTree(void)
426 result r = E_SUCCESS;
428 if (GetOwner() == null)
430 _FrameImpl* pFrameImpl = dynamic_cast <_FrameImpl*>(_ControlImplManager::GetInstance()->GetCurrentFrame());
431 SysTryReturn(NID_UI_CTRL, pFrameImpl != null, E_SYSTEM,
432 E_SYSTEM, "[E_SYSTEM] This instance is not constructed.");
434 _Form* pForm = pFrameImpl->GetCore().GetCurrentForm();
438 GetCore().SetOwner(pForm);
442 GetCore().SetOwner(&pFrameImpl->GetCore());
445 SetVisibleState(true);
446 _WindowImpl::OnAttachedToMainTree();
450 }}} // Tizen::Ui::Controls