Merging EditDateTime & DateTimePicker Changes from RSA-master to RSA-tizen2.1
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_DateTimePresenter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
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 /**
19  * @file                FUiCtrl_DateTimePresenter.h
20  * @brief               This is the header file for the _DateTimePresenter class.
21  */
22
23 #ifndef _FUI_CTRL_INTERNAL_DATETIME_PRESENTER_H_
24 #define _FUI_CTRL_INTERNAL_DATETIME_PRESENTER_H_
25
26 #include <FBaseObject.h>
27 #include "FUi_Control.h"
28 #include "FUiCtrl_DateTimeDefine.h"
29 #include "FUiCtrl_IInputPadEventListener.h"
30
31 namespace Tizen { namespace Ui { namespace Controls
32 {
33 class _DateTimePicker;
34 class _DateTimeDisplayBox;
35 class _DateTimeModel;
36 class _InputPad;
37 }}} // Tizen::Ui::Controls
38
39 namespace Tizen { namespace Ui { namespace Controls
40 {
41
42 class _DateTimePresenter
43         : public _IInputPadEventListener
44         , virtual public Tizen::Base::Runtime::IEventListener
45 {
46 public:
47         _DateTimePresenter(int pickerStyle, const Tizen::Base::String& title = L"");
48
49         virtual ~_DateTimePresenter(void);
50
51         result Construct(_DateTimePicker& view);
52
53         result SetYear(int year);
54
55         result SetMonth(int month);
56
57         result SetDay(int day);
58
59         result SetHour(int hour);
60
61         result SetMinute(int minute);
62
63         result SetYearRange(int minYear, int maxYear);
64
65         int GetYear(void) const;
66
67         int GetMonth(void) const;
68
69         int GetDay(void) const;
70
71         int GetHour(void) const;
72
73         int GetMinute(void) const;
74
75         result GetYearRange(int& minYear, int& maxYear) const;
76
77         void Set24HourNotationEnabled(bool enable);
78
79         bool Is24HourNotationEnabled(void) const;
80
81         void SetCurrentDateTime(void);
82
83         void SetDateTime(const Tizen::Base::DateTime& dateTime);
84
85         Tizen::Base::DateTime GetDateTime(void) const;
86
87         void SetFocusBoxId(int boxId);
88
89         const _DateTimeDisplayBox* GetDisplayBox(int index) const;
90
91         const _DateTimeDisplayBox* GetAmPmBox(void) const;
92
93         bool Draw(void);
94
95         result SetFont(Tizen::Graphics::Font* pFont);
96
97         void UpdateLocaleDateTimeFormat(void);
98
99         void UpdateTimeFormat(void);
100
101         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
102
103         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
104         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
105         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
106         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
107
108         virtual void OnInputPadValueChanged(const Tizen::Ui::_Control& source, int inputPadReturnValue);
109
110         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
111
112         virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
113         virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
114         result DrawFocus(void);
115         result ReleaseFocus(void);
116
117 private:
118         void UpdateDateTimeOutputConfig(void);
119
120         void LoadResource(void);
121
122         void DrawColon(Tizen::Graphics::Canvas& canvas);
123
124         void DrawDateTimeDisplayBox(Tizen::Graphics::Canvas& canvas, int index);
125
126         void DrawPm(Tizen::Graphics::Canvas& canvas);
127
128         void DrawBackground(Tizen::Graphics::Canvas& canvas);
129
130         void DrawTitle(Tizen::Graphics::Canvas& canvas);
131
132         void DrawDividers(Tizen::Graphics::Canvas& canvas);
133
134         void ChangeInputPadStyle(int boxId);
135
136         Tizen::Graphics::FloatRectangle GetOutputArea(void);
137
138         int CalculateTouchArea(float posX, float posY);
139
140         int CalculateTouchOutputArea(float posX, float posY);
141
142         int CalculateTwoDigit(int originalNumber, int number);
143
144         int CalculateFourDigit(int originalNumber, int number);
145
146         int SetTwoDigit(int originalNumber, int number);
147
148         int SetFourDigit(int originalNumber, int number);
149
150         void SetNumberInBox(int boxId, int number);
151
152         int GetNumberInBox(int boxId) const;
153
154         void SetFocusBox(int index);
155
156         void LoadPickerData(void);
157
158         void SavePickerData(void);
159
160         void UpdateDisplayData(int boxId);
161
162         void AdjustDisplayValue(int index);
163
164         void AdjustValue(int& value, int minValue, int maxValue);
165
166         void ChangeFocusBox(void);
167
168         void SetAccessibilityElementText(void);
169
170         void HandleInputPadValueChange(int inputPadReturnValue);
171
172         void HandleSaveCancelAction(int actionId);
173
174 private:
175         _DateTimePresenter(const _DateTimePresenter&);
176
177         _DateTimePresenter& operator =(const _DateTimePresenter&);
178
179         void Dispose(void);
180
181 private:
182         _DateTimePicker* __pView;
183
184         _DateTimeModel* __pModel;
185
186         int __selectedBoxIndex;
187
188         int __focusedBoxIndex;
189
190         _InputPad* __pInputPad;
191
192         _InputPadStyle __inputPadType;
193
194         int __pickerStyle;
195
196         bool __inputPadEnabled;
197
198         int __outputBoxMaxCount;
199
200         int __year;
201
202         int __month;
203
204         int __day;
205
206         int __hour;
207
208         int __minute;
209
210         bool __is24HourNotation;
211
212         bool __dtp24HourSet;
213
214         bool __isPm;
215
216         bool __isPmButtonPressed;
217
218         bool __isFocusBoxChanged;
219
220         int __inputComposing;
221
222         int __changeFocusCounter;
223
224         Tizen::Base::String __title;
225
226         Tizen::Graphics::Bitmap* __pDisplayBoxNormalBitmap[DATETIME_STATUS_MAX];
227         Tizen::Graphics::Bitmap* __pDisplayBoxEffectBitmap[DATETIME_STATUS_MAX];
228
229         Tizen::Graphics::Bitmap* __pAmPmNormalBitmap[DATETIME_STATUS_MAX];
230         Tizen::Graphics::Bitmap* __pAmPmEffectBitmap[DATETIME_STATUS_MAX];
231
232         Tizen::Graphics::Bitmap* __pColonBitmap;
233         Tizen::Graphics::Bitmap* __pColonDisabledBitmap;
234         Tizen::Graphics::Bitmap* __pBgNormalBitmap;
235         Tizen::Graphics::Bitmap* __pBgEffectBitmap;
236
237         Tizen::Graphics::Font* __pFont;
238
239         _DateTimeDisplayBox* __pDisplayBox[DATETIME_ID_MAX];
240
241         _DateTimeDisplayBox* __pPmBox;
242
243         bool __keypadEnabled;
244 }; // _DateTimePresenter
245
246 }}} // Tizen::Ui::Controls
247
248 #endif  // _FUI_CTRL_INTERNAL_DATETIME_PRESENTER_H_