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_EditDateImpl.cpp
20 * @brief This is the implementation file for the _EditDateImpl class.
23 #include <FBaseSysLog.h>
24 #include "FUi_UiBuilder.h"
25 #include "FUi_ResourceManager.h"
26 #include "FUi_ResourceSizeInfo.h"
27 #include "FUiCtrl_EditDateImpl.h"
28 #include "FUiCtrl_DateTimeDefine.h"
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Runtime;
33 using namespace Tizen::Ui;
35 namespace Tizen { namespace Ui { namespace Controls
37 _EditDateImpl::EditDateSizeInfo::EditDateSizeInfo(void)
43 _EditDateImpl::EditDateSizeInfo::SetTitleStyle(bool titleStyle)
45 __isTitle = titleStyle;
50 _EditDateImpl::EditDateSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
53 Tizen::Graphics::Dimension dimension(0, 0);
55 r = GET_DIMENSION_CONFIG(EDITDATE::DEFAULT_SIZE, orientation, dimension);
57 SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] Propagating.", GetErrorMessage(r));
62 _EditDateImpl::EditDateSizeInfo::GetDefaultMaximumSize(_ControlOrientation orientation) const
65 Tizen::Graphics::Dimension dimension(0, 0);
67 r = GET_DIMENSION_CONFIG(EDITDATE::DEFAULT_SIZE, orientation, dimension);
69 SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] Propagating.", GetErrorMessage(r));
73 _EditDateImpl::_EditDateImpl(EditDate* pPublic, _EditDate* pCore)
74 : _ControlImpl(pPublic, pCore)
75 , __pPublicDateChangeEvent(null)
80 _EditDateImpl::~_EditDateImpl(void)
82 if (__pPublicDateChangeEvent)
84 delete __pPublicDateChangeEvent;
85 __pPublicDateChangeEvent = null;
92 _EditDateImpl::GetInstance(EditDate& editDate)
94 return static_cast<_EditDateImpl*>(editDate._pControlImpl);
98 _EditDateImpl::GetInstance(const EditDate& editDate)
100 return static_cast<const _EditDateImpl*>(editDate._pControlImpl);
104 _EditDateImpl::CreateEditDateImplN(EditDate* pControl, const Point& point, const String& title)
106 result r = E_SUCCESS;
107 Rectangle defaultSize;
108 bool isTitle = false;
110 _EditDate* pCore = _EditDate::CreateEditDateN(title);
111 SysTryReturn(NID_UI_CTRL, pCore, null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
113 _EditDateImpl* pImpl = new (std::nothrow) _EditDateImpl(pControl, pCore);
115 r = CheckConstruction(pCore, pImpl);
116 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
118 r = pCore->AddDateChangeEventListener(*pImpl);
119 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
121 GET_SHAPE_CONFIG(EDITDATE::WIDTH, pCore->GetOrientation(), defaultSize.width);
123 GET_SHAPE_CONFIG(EDITDATE::HEIGHT, pCore->GetOrientation(), defaultSize.height);
125 defaultSize.x = point.x;
126 defaultSize.y = point.y;
128 r = pImpl->InitializeBoundsProperties(FUNC_SIZE_INFO(EditDate)(isTitle), defaultSize, pCore->GetOrientation());
129 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
141 _EditDateImpl::GetPublicClassName(void) const
143 return "Tizen::Ui::Controls::EditDate";
147 _EditDateImpl::GetPublic(void) const
149 return static_cast <const EditDate&>(_ControlImpl::GetPublic());
153 _EditDateImpl::GetPublic(void)
155 return static_cast <EditDate&>(_ControlImpl::GetPublic());
159 _EditDateImpl::GetCore(void) const
161 return static_cast <const _EditDate&>(_ControlImpl::GetCore());
165 _EditDateImpl::GetCore(void)
167 return static_cast <_EditDate&>(_ControlImpl::GetCore());
171 _EditDateImpl::AddDateChangeEventListener(IDateChangeEventListener& listener)
175 if (__pPublicDateChangeEvent == null)
177 __pPublicDateChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(GetPublic());
179 SysTryReturn(NID_UI_CTRL, __pPublicDateChangeEvent,
180 E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
183 result r = __pPublicDateChangeEvent->AddListener(listener);
184 SysTryReturnResult(NID_UI_CTRL, r != E_OBJ_ALREADY_EXIST, E_SYSTEM, "The IDateChangeEventListener instance already exists.");
190 _EditDateImpl::RemoveDateChangeEventListener(IDateChangeEventListener& listener)
194 result r = E_OBJ_NOT_FOUND;
196 if (__pPublicDateChangeEvent)
198 r = __pPublicDateChangeEvent->RemoveListener(listener);
201 SysTryReturnResult(NID_UI_CTRL, r != E_OBJ_NOT_FOUND, E_SYSTEM, "IDateChangeEventListener instance is not found.");
207 _EditDateImpl::GetDate(void) const
211 Variant date = GetCore().GetPropertyDate();
213 return date.ToDateTime();
217 _EditDateImpl::GetDay(void) const
221 Variant day = GetCore().GetPropertyDay();
227 _EditDateImpl::GetMonth(void) const
231 Variant month = GetCore().GetPropertyMonth();
233 return month.ToInt();
237 _EditDateImpl::GetYear(void) const
241 Variant year = GetCore().GetPropertyYear();
247 _EditDateImpl::SetDate(const DateTime& date)
251 GetCore().SetPropertyDate(Variant(date));
256 _EditDateImpl::SetCurrentDate(void)
260 GetCore().SetCurrentDate();
265 _EditDateImpl::SetYear(int year)
268 SysTryReturn(NID_UI_CTRL, (year >= DATETIME_YEAR_MIN && year <= DATETIME_YEAR_MAX), E_INVALID_ARG, E_INVALID_ARG,
269 "[E_INVALID_ARG] Invalid argument is used. year (%d).", year);
271 result r = GetCore().SetPropertyYear(Variant(year));
273 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
279 _EditDateImpl::SetMonth(int month)
282 SysTryReturn(NID_UI_CTRL, (month >= DATETIME_MONTH_MIN && month <= DATETIME_MONTH_MAX), E_INVALID_ARG, E_INVALID_ARG,
283 "[E_INVALID_ARG] Invalid argument is used. month (%d).", month);
285 result r = GetCore().SetPropertyMonth(Variant(month));
287 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
293 _EditDateImpl::SetDay(int day)
296 SysTryReturn(NID_UI_CTRL, (day >= DATETIME_DAY_MIN && day <= DATETIME_DAY_MAX), E_INVALID_ARG, E_INVALID_ARG,
297 "[E_INVALID_ARG] Invalid argument is used. day (%d).", day);
299 result r = GetCore().SetPropertyDay(Variant(day));
301 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
307 _EditDateImpl::SetDatePickerEnabled(bool enable)
311 GetCore().SetPropertyDatePickerEnabled(Variant(enable));
316 _EditDateImpl::IsDatePickerEnabled(void) const
320 Variant enable = GetCore().GetPropertyDatePickerEnabled();
322 return enable.ToBool();
326 _EditDateImpl::SetYearRange(int minYear, int maxYear)
330 result r = E_SUCCESS;
332 SysTryReturn(NID_UI_CTRL, (maxYear >= DATETIME_YEAR_MIN && maxYear <= DATETIME_YEAR_MAX), E_INVALID_ARG, E_INVALID_ARG,
333 "[E_INVALID_ARG] maxYear (%d) must be greater than or equal to %d and less than or equal to %d.",
334 maxYear, DATETIME_YEAR_MIN, DATETIME_YEAR_MAX);
336 SysTryReturn(NID_UI_CTRL, (minYear >= DATETIME_YEAR_MIN && minYear <= DATETIME_YEAR_MAX), E_INVALID_ARG, E_INVALID_ARG,
337 "[E_INVALID_ARG] minYear (%d) must be greater than or equal to %d and less than or equal to %d.",
338 minYear, DATETIME_YEAR_MIN, DATETIME_YEAR_MAX);
340 SysTryReturn(NID_UI_CTRL, (maxYear >= minYear), E_INVALID_ARG, E_INVALID_ARG,
341 "[E_INVALID_ARG] maxYear (%d) must be greater than or equal to minYear (%d).", maxYear, minYear);
343 Variant oldMinYear = GetCore().GetPropertyMinYearRange();
345 r = GetCore().SetPropertyMinYearRange(Variant(minYear));
346 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
348 r = GetCore().SetPropertyMaxYearRange(Variant(maxYear));
351 GetCore().SetPropertyMinYearRange(oldMinYear);
352 SysLogException(NID_UI_CTRL, r, "[%s] Propagating", GetErrorMessage(r));
359 _EditDateImpl::GetYearRange(int& minYear, int& maxYear) const
363 Variant tempMinYear = GetCore().GetPropertyMinYearRange();
364 Variant tempMaxYear = GetCore().GetPropertyMaxYearRange();
366 minYear = tempMinYear.ToInt();
367 maxYear = tempMaxYear.ToInt();
369 return GetLastResult();
373 _EditDateImpl::OnDateTimeChanged(const _Control& source, int year, int month, int day, int hour, int minute)
377 if (__pPublicDateChangeEvent == null)
382 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATE_PUBLIC_CHANGE_SAVED);
383 SysTryReturnVoidResult(NID_UI_CTRL, pEventArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
385 pEventArg->SetDate(year, month, day);
386 pEventArg->SetTime(hour, minute);
387 __pPublicDateChangeEvent->Fire(*pEventArg);
393 _EditDateImpl::OnDateTimeChangeCanceled(const _Control& source)
397 if (__pPublicDateChangeEvent == null)
402 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(DATE_PUBLIC_CHANGE_CANCELED);
403 SysTryReturnVoidResult(NID_UI_CTRL, pEventArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
405 __pPublicDateChangeEvent->Fire(*pEventArg);
411 : public _UiBuilderControlMaker
414 _EditDateMaker(_UiBuilder* uibuilder)
415 : _UiBuilderControlMaker(uibuilder){}
416 virtual ~_EditDateMaker(void){}
417 static _UiBuilderControlMaker* GetInstance(_UiBuilder* pUiBuilder)
419 _EditDateMaker* pEditDateMaker = new (std::nothrow) _EditDateMaker(pUiBuilder);
420 return pEditDateMaker;
424 virtual Control* Make(_UiBuilderControl* pControl)
426 result r = E_SUCCESS;
429 Tizen::Base::String elementStringOne;
430 Tizen::Base::String elementStringTwo;
431 bool titleEnable = false;
433 _UiBuilderControlLayout* pControlProperty = null;
434 EditDate* pEditDate = null;
440 GetProperty(pControl, &pControlProperty);
441 if (pControlProperty == null)
446 rect = pControlProperty->GetRect();
449 if (pControl->GetElement(L"titleText", elementStringOne))
453 pEditDate = new (std::nothrow) EditDate;
454 if (pEditDate == null)
461 r = pEditDate->Construct(point, elementStringOne);
465 r = pEditDate->Construct(point);
475 if (pControl->GetElement(L"minYearRange", elementStringOne) && pControl->GetElement(L"maxYearRange", elementStringTwo))
477 Base::Integer::Parse(elementStringOne, tempMin);
478 Base::Integer::Parse(elementStringTwo, tempMax);
480 if (tempMin > tempMax)
487 r = pEditDate->SetYearRange(tempMin, tempMax);
494 _EditDateRegister::_EditDateRegister(void)
496 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
497 pUiBuilderControlTableManager->RegisterControl(L"EditDate", _EditDateMaker::GetInstance);
500 _EditDateRegister::~_EditDateRegister(void)
502 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
503 pUiBuilderControlTableManager->UnregisterControl(L"EditDate");
505 static _EditDateRegister EditDateRegisterToUiBuilder;
506 }}} // Tizen::Ui::Controls