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_EditTimeImpl.cpp
20 * @brief This is the implementation file for the _EditTimeImpl class.
23 #include <FBaseInternalTypes.h>
24 #include <FBaseSysLog.h>
25 #include <FApp_AppInfo.h>
26 #include "FUi_UiBuilder.h"
27 #include "FUi_ResourceManager.h"
28 #include "FUi_ResourceSizeInfo.h"
29 #include "FUiCtrl_EditTimeImpl.h"
30 #include "FUiCtrl_DateTimeDefine.h"
32 using namespace Tizen::Graphics;
33 using namespace Tizen::Base::Runtime;
34 using namespace Tizen::Base;
35 using namespace Tizen::App;
37 namespace Tizen { namespace Ui { namespace Controls
39 _EditTimeImpl::EditTimeSizeInfo::EditTimeSizeInfo(void)
45 _EditTimeImpl::EditTimeSizeInfo::SetTitleStyle(bool titleStyle)
47 __isTitle = titleStyle;
52 _EditTimeImpl::EditTimeSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
55 Tizen::Graphics::Dimension dimension(0, 0);
57 r = GET_DIMENSION_CONFIG(EDITTIME::DEFAULT_SIZE, orientation, dimension);
59 SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] Propagating.", GetErrorMessage(r));
64 _EditTimeImpl::EditTimeSizeInfo::GetDefaultMaximumSize(_ControlOrientation orientation) const
67 Tizen::Graphics::Dimension dimension(0, 0);
69 r = GET_DIMENSION_CONFIG(EDITTIME::DEFAULT_SIZE, orientation, dimension);
71 SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] Propagating.", GetErrorMessage(r));
75 _EditTimeImpl::_EditTimeImpl(EditTime* pPublic, _EditTime* pCore)
76 : _ControlImpl(pPublic, pCore)
77 , __pPublicTimeChangeEvent(null)
82 _EditTimeImpl::~_EditTimeImpl(void)
84 if (__pPublicTimeChangeEvent)
86 delete __pPublicTimeChangeEvent;
87 __pPublicTimeChangeEvent = null;
94 _EditTimeImpl::GetInstance(EditTime& editTime)
96 return static_cast<_EditTimeImpl*> (editTime._pControlImpl);
100 _EditTimeImpl::GetInstance(const EditTime& editTime)
102 return static_cast<const _EditTimeImpl*> (editTime._pControlImpl);
107 _EditTimeImpl::CreateEditTimeImplN(EditTime* pControl, const Point& point, const String& title)
109 result r = E_SUCCESS;
110 Rectangle defaultSize;
111 bool isTitle = false;
113 _EditTime* pCore = _EditTime::CreateEditTimeN(title);
114 SysTryReturn(NID_UI_CTRL, pCore, null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
116 _EditTimeImpl* pImpl = new (std::nothrow) _EditTimeImpl(pControl, pCore);
118 r = CheckConstruction(pCore, pImpl);
119 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
121 r = pCore->AddTimeChangeEventListener(*pImpl);
122 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
124 GET_SHAPE_CONFIG(EDITTIME::WIDTH, pCore->GetOrientation(), defaultSize.width);
126 GET_SHAPE_CONFIG(EDITTIME::HEIGHT, pCore->GetOrientation(), defaultSize.height);
129 defaultSize.x = point.x;
130 defaultSize.y = point.y;
132 r = pImpl->InitializeBoundsProperties(FUNC_SIZE_INFO(EditTime)(isTitle), defaultSize, pCore->GetOrientation());
133 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
145 _EditTimeImpl::GetPublicClassName(void) const
147 return "Tizen::Ui::Controls::EditTime";
151 _EditTimeImpl::GetPublic(void) const
153 return static_cast <const EditTime&>(_ControlImpl::GetPublic());
157 _EditTimeImpl::GetPublic(void)
159 return static_cast <EditTime&>(_ControlImpl::GetPublic());
163 _EditTimeImpl::GetCore(void) const
165 return static_cast <const _EditTime&>(_ControlImpl::GetCore());
169 _EditTimeImpl::GetCore(void)
171 return static_cast <_EditTime&>(_ControlImpl::GetCore());
175 _EditTimeImpl::AddTimeChangeEventListener(ITimeChangeEventListener& listener)
179 if (__pPublicTimeChangeEvent == null)
181 __pPublicTimeChangeEvent = new (std::nothrow) _PublicDateTimeChangeEvent(GetPublic());
183 SysTryReturn(NID_UI_CTRL, __pPublicTimeChangeEvent,
184 E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
187 result r = __pPublicTimeChangeEvent->AddListener(listener);
188 SysTryReturnResult(NID_UI_CTRL, r != E_OBJ_ALREADY_EXIST, E_SYSTEM, "The ITimeChangeEventListener instance already exists.");
194 _EditTimeImpl::RemoveTimeChangeEventListener(ITimeChangeEventListener& listener)
198 result r = E_OBJ_NOT_FOUND;
200 if (__pPublicTimeChangeEvent)
202 r = __pPublicTimeChangeEvent->RemoveListener(listener);
205 SysTryReturnResult(NID_UI_CTRL, r != E_OBJ_NOT_FOUND, E_SYSTEM, "ITimeChangeEventListener instance is not found.");
211 _EditTimeImpl::GetTime(void) const
215 Variant time = GetCore().GetPropertyTime();
217 return time.ToDateTime();
221 _EditTimeImpl::GetHour(void) const
225 Variant hour = GetCore().GetPropertyHour();
231 _EditTimeImpl::GetMinute(void) const
235 Variant minute = GetCore().GetPropertyMinute();
237 return minute.ToInt();
241 _EditTimeImpl::SetTime(const DateTime& time)
245 GetCore().SetPropertyTime(Variant(time));
250 _EditTimeImpl::SetCurrentTime(void)
254 GetCore().SetCurrentTime();
259 _EditTimeImpl::SetHour(int hour)
262 SysTryReturn(NID_UI_CTRL, (hour >= DATETIME_HOUR_MIN && hour <= DATETIME_HOUR_MAX), E_INVALID_ARG, E_INVALID_ARG,
263 "[E_INVALID_ARG] Invalid argument is used. hour (%d).", hour);
265 result r = GetCore().SetPropertyHour(Variant(hour));
266 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
272 _EditTimeImpl::SetMinute(int minute)
275 SysTryReturn(NID_UI_CTRL, (minute >= DATETIME_MINUTE_MIN && minute <= DATETIME_MINUTE_MAX), E_INVALID_ARG, E_INVALID_ARG,
276 "[E_INVALID_ARG] Invalid argument is used. minute (%d).", minute);
278 result r = GetCore().SetPropertyMinute(Variant(minute));
279 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
285 _EditTimeImpl::SetTimePickerEnabled(bool enable)
289 GetCore().SetPropertyTimePickerEnabled(Variant(enable));
294 _EditTimeImpl::IsTimePickerEnabled(void) const
298 Variant enable = GetCore().GetPropertyTimePickerEnabled();
300 return enable.ToBool();
304 _EditTimeImpl::Set24HourNotationEnabled(bool enable)
308 GetCore().Set24HourNotationEnabled(enable);
313 _EditTimeImpl::OnDateTimeChanged(const _Control& source, int year, int month, int day, int hour, int minute)
317 if (__pPublicTimeChangeEvent == null)
322 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_SAVED);
323 SysTryReturnVoidResult(NID_UI_CTRL, pEventArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
325 pEventArg->SetDate(year, month, day);
326 pEventArg->SetTime(hour, minute);
327 __pPublicTimeChangeEvent->Fire(*pEventArg);
333 _EditTimeImpl::OnDateTimeChangeCanceled(const _Control& source)
337 if (__pPublicTimeChangeEvent == null)
342 _PublicDateTimeChangeEventArg* pEventArg = new (std::nothrow) _PublicDateTimeChangeEventArg(TIME_PUBLIC_CHANGE_CANCELED);
343 SysTryReturnVoidResult(NID_UI_CTRL, pEventArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
345 __pPublicTimeChangeEvent->Fire(*pEventArg);
351 : public _UiBuilderControlMaker
354 _EditTimeMaker(_UiBuilder* uibuilder)
355 : _UiBuilderControlMaker(uibuilder){}
356 virtual ~_EditTimeMaker(void){}
357 static _UiBuilderControlMaker* GetInstance(_UiBuilder* pUiBuilder)
359 _EditTimeMaker* pEditTimeMaker = new (std::nothrow) _EditTimeMaker(pUiBuilder);
360 return pEditTimeMaker;
364 virtual Control* Make(_UiBuilderControl* pControl)
366 result r = E_SUCCESS;
368 _UiBuilderControlLayout* pControlProperty = null;
369 EditTime* pEditTime = null;
372 Tizen::Base::String elementString;
373 bool titleEnable = false;
374 bool hourNotationEnable = false;
377 GetProperty(pControl, &pControlProperty);
378 if (pControlProperty == null)
383 rect = pControlProperty->GetRect();
387 if (pControl->GetElement(L"titleText", elementString))
392 pEditTime = new (std::nothrow) EditTime;
393 if (pEditTime == null)
400 r = pEditTime->Construct(point, elementString);
404 r = pEditTime->Construct(point);
414 if (pControl->GetElement(L"b24HourNotationEnabled", elementString))
416 if (elementString.Equals(L"true", false))
418 hourNotationEnable = true;
419 pEditTime->Set24HourNotationEnabled(hourNotationEnable);
428 _EditTimeRegister::_EditTimeRegister(void)
430 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
431 pUiBuilderControlTableManager->RegisterControl(L"EditTime", _EditTimeMaker::GetInstance);
434 _EditTimeRegister::~_EditTimeRegister(void)
436 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
437 pUiBuilderControlTableManager->UnregisterControl(L"EditTime");
439 static _EditTimeRegister EditTimeRegisterToUiBuilder;
440 }}} // Tizen::Ui::Controls