Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / controls / FUiCtrl_DateTimeChangeEvent.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17 /**
18  * @file                FUiCtrl_DateTimeChangeEvent.cpp
19  * @brief               This is the implementation file for the _DateTimeChangeEvent and _DateTimeChangeEventArg classes.
20  */
21
22 #include <FBaseErrors.h>
23 #include <FSysSystemTime.h>
24 #include <FBaseSysLog.h>
25 #include "FUiCtrl_DateTimeChangeEvent.h"
26 #include "FUiCtrl_IDateTimeChangeEventListener.h"
27
28 using namespace Tizen::Base;
29 using namespace Tizen::Base::Runtime;
30 using namespace Tizen::System;
31
32 namespace Tizen { namespace Ui { namespace Controls
33 {
34
35 _DateTimeChangeEventArg::_DateTimeChangeEventArg(_DateTimeChangeStatus status)
36         : __status(status)
37         , __year(1)
38         , __month(1)
39         , __day(1)
40         , __hour(0)
41         , __minute(0)
42 {
43         SystemTime::GetCurrentTime(WALL_TIME, __dateTime);
44 }
45
46 _DateTimeChangeEventArg::~_DateTimeChangeEventArg(void)
47 {
48         // Nothing.
49 }
50
51 void
52 _DateTimeChangeEventArg::SetDateTime(const DateTime& dateTime)
53 {
54         __dateTime = dateTime;
55
56         return;
57 }
58
59 int
60 _DateTimeChangeEventArg::GetYear(void) const
61 {
62         return __year;
63 }
64
65 int
66 _DateTimeChangeEventArg::GetMonth(void) const
67 {
68         return __month;
69 }
70
71 int
72 _DateTimeChangeEventArg::GetDay(void) const
73 {
74         return __day;
75 }
76
77 int
78 _DateTimeChangeEventArg::GetHour(void) const
79 {
80         return __hour;
81 }
82
83 int
84 _DateTimeChangeEventArg::GetMinute(void) const
85 {
86         return __minute;
87 }
88
89 DateTime
90 _DateTimeChangeEventArg::GetDateTime(void) const
91 {
92         return __dateTime;
93 }
94
95 _DateTimeChangeStatus
96 _DateTimeChangeEventArg::GetStatus(void) const
97 {
98         return __status;
99 }
100
101 void
102 _DateTimeChangeEventArg::SetTime(int hour, int minute)
103 {
104         __hour = hour;
105         __minute = minute;
106
107         return;
108 }
109
110 void
111 _DateTimeChangeEventArg::SetDate(int year, int month, int day)
112 {
113         __year = year;
114         __month = month;
115         __day = day;
116
117         return;
118 }
119
120 _DateTimeChangeEvent::_DateTimeChangeEvent(const Tizen::Ui::_Control& source)
121         : __pSource(null)
122 {
123         result r = _Event::Initialize();
124         if (r == E_SUCCESS)
125         {
126                 __pSource = const_cast<_Control*>(&source);
127         }
128 }
129
130 _DateTimeChangeEvent::~_DateTimeChangeEvent(void)
131 {
132         // Nothing.
133 }
134
135 void
136 _DateTimeChangeEvent::FireImpl(IEventListener& listener, const IEventArg& arg)
137 {
138         // DateTimePicker
139         _IDateTimeChangeEventListener* pDateTimeChangeEventListener = dynamic_cast <_IDateTimeChangeEventListener*>(&listener);
140         SysTryReturnVoidResult(NID_UI_CTRL, (pDateTimeChangeEventListener != null), E_INVALID_ARG,
141                                                    "[E_INVALID_ARG] Invalid argument(s) is used. The instance of _IDateTimeChangeEventListener is null.");
142
143         // cast Argument
144         const _DateTimeChangeEventArg* pArg = dynamic_cast <const _DateTimeChangeEventArg*>(&arg);
145         SysTryReturnVoidResult(NID_UI_CTRL, (pArg != null), E_INVALID_ARG,
146                                                    "[E_INVALID_ARG] Invalid argument(s) is used. The instance of _DateTimeChangeEventArg is null.");
147
148         switch (pArg->GetStatus())
149         {
150         case DATE_INTERNAL_CHANGE_SAVED:
151         // fall through
152         case DATETIME_INTERNAL_CHANGE_SAVED:
153         // fall through
154         case TIME_INTERNAL_CHANGE_SAVED:
155                 pDateTimeChangeEventListener->OnDateTimeChanged(*__pSource, pArg->GetYear(), pArg->GetMonth(),
156                                                                                                                 pArg->GetDay(), pArg->GetHour(), pArg->GetMinute());
157                 break;
158
159         case DATE_INTERNAL_CHANGE_CANCELED:
160         // fall through
161         case DATETIME_INTERNAL_CHANGE_CANCELED:
162         // fall through
163         case TIME_INTERNAL_CHANGE_CANCELED:
164                 pDateTimeChangeEventListener->OnDateTimeChangeCanceled(*__pSource);
165                 break;
166
167         default:
168                 break;
169         }
170
171         SetLastResult(E_SUCCESS);
172         return;
173 }
174
175 }}} // Tizen::Ui::Controls