98910444428c426d24a0cbf3d4b0860a8738133b
[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         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
98
99         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
100         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
101         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
102         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
103
104         virtual void OnInputPadValueChanged(const Tizen::Ui::_Control& source, int inputPadReturnValue);
105
106         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
107
108 private:
109         void UpdateDateTimeOutputConfig(void);
110
111         void LoadResource(void);
112
113         void DrawColon(Tizen::Graphics::Canvas& canvas);
114
115         void DrawDateTimeDisplayBox(Tizen::Graphics::Canvas& canvas, int index);
116
117         void DrawPm(Tizen::Graphics::Canvas& canvas);
118
119         void DrawBackground(Tizen::Graphics::Canvas& canvas);
120
121         void DrawTitle(Tizen::Graphics::Canvas& canvas);
122
123         void DrawDividers(Tizen::Graphics::Canvas& canvas);
124
125         void ChangeInputPadStyle(int boxId);
126
127         Tizen::Graphics::FloatRectangle GetOutputArea(void);
128
129         int CalculateTouchArea(float posX, float posY);
130
131         int CalculateTouchOutputArea(float posX, float posY);
132
133         int CalculateTwoDigit(int originalNumber, int number);
134
135         int CalculateFourDigit(int originalNumber, int number);
136
137         int SetTwoDigit(int originalNumber, int number);
138
139         int SetFourDigit(int originalNumber, int number);
140
141         void SetNumberInBox(int boxId, int number);
142
143         int GetNumberInBox(int boxId) const;
144
145         void SetFocusBox(int index);
146
147         void LoadPickerData(void);
148
149         void SavePickerData(void);
150
151         void UpdateDisplayData(int boxId);
152
153         void AdjustDisplayValue(int index);
154
155         void AdjustValue(int& value, int minValue, int maxValue);
156
157         void ChangeFocusBox(void);
158
159         int GetLocaleDateFormat(void) const;
160
161         void SetAccessibilityElementText(void);
162
163 private:
164         _DateTimePresenter(const _DateTimePresenter&);
165
166         _DateTimePresenter& operator =(const _DateTimePresenter&);
167
168         void Dispose(void);
169
170 private:
171         _DateTimePicker* __pView;
172
173         _DateTimeModel* __pModel;
174
175         int __selectedBoxIndex;
176
177         int __focusedBoxIndex;
178
179         _InputPad* __pInputPad;
180
181         _InputPadStyle __inputPadType;
182
183         int __pickerStyle;
184
185         bool __inputPadEnabled;
186
187         int __outputBoxMaxCount;
188
189         int __year;
190
191         int __month;
192
193         int __day;
194
195         int __hour;
196
197         int __minute;
198
199         bool __is24HourNotation;
200
201         bool __isPm;
202
203         bool __isPmButtonPressed;
204
205         bool __isFocusBoxChanged;
206
207         int __inputComposing;
208
209         int __changeFocusCounter;
210
211         Tizen::Base::String __title;
212
213         Tizen::Graphics::Bitmap* __pDisplayBoxNormalBitmap[DATETIME_STATUS_MAX];
214         Tizen::Graphics::Bitmap* __pDisplayBoxEffectBitmap[DATETIME_STATUS_MAX];
215
216         Tizen::Graphics::Bitmap* __pAmPmNormalBitmap[DATETIME_STATUS_MAX];
217         Tizen::Graphics::Bitmap* __pAmPmEffectBitmap[DATETIME_STATUS_MAX];
218
219         Tizen::Graphics::Bitmap* __pColonBitmap;
220         Tizen::Graphics::Bitmap* __pColonDisabledBitmap;
221         Tizen::Graphics::Bitmap* __pBgNormalBitmap;
222         Tizen::Graphics::Bitmap* __pBgEffectBitmap;
223
224         Tizen::Graphics::Font* __pFont;
225
226         _DateTimeDisplayBox* __pDisplayBox[DATETIME_ID_MAX];
227
228         _DateTimeDisplayBox* __pPmBox;
229 }; // _DateTimePresenter
230
231 }}} // Tizen::Ui::Controls
232
233 #endif  // _FUI_CTRL_INTERNAL_DATETIME_PRESENTER_H_