Fork for IVI: mesa fixing
[profile/ivi/uifw.git] / src / ui / inc / FUiCtrl_DateTimePicker.h
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_DateTimePicker.h
19  * @brief               This is the header file for the _DateTimePicker class.
20  */
21
22 #ifndef _FUI_CTRL_INTERNAL_DATETIMEPICKER_H_
23 #define _FUI_CTRL_INTERNAL_DATETIMEPICKER_H_
24
25 #include <FBaseDateTime.h>
26 #include <FBaseString.h>
27 #include <FBaseColLinkedListT.h>
28
29 #include "FUi_Window.h"
30 #include "FUiCtrl_IActionEventListener.h"
31 #include "FUiCtrl_DateTimeDefine.h"
32 #include "FUiAnim_VisualElement.h"
33 #include "FUi_IAccessibilityListener.h"
34
35 namespace Tizen { namespace Ui
36 {
37 class _AccessibilityElement;
38 //class _IAccessibilityListener;
39 }} // Tizen::Ui
40
41 namespace Tizen { namespace Ui { namespace Controls
42 {
43
44 class _DateTimePresenter;
45 class _DateTimeChangeEvent;
46 class _IDateTimeChangeEventListener;
47 class _Toolbar;
48
49 class _DateTimePicker
50         : public Tizen::Ui::_Window
51         , public _IActionEventListener
52         , virtual public Tizen::Base::Runtime::IEventListener
53         , virtual public Tizen::Ui::_IUiEventListener
54         , virtual public Tizen::Ui::_IUiEventPreviewer
55         , virtual public Tizen::Ui::_IAccessibilityListener
56 {
57         DECLARE_CLASS_BEGIN(_DateTimePicker, _Control);
58         DECLARE_PROPERTY("year", GetPropertyYear, SetPropertyYear);
59         DECLARE_PROPERTY("month", GetPropertyMonth, SetPropertyMonth);
60         DECLARE_PROPERTY("day", GetPropertyDay, SetPropertyDay);
61         DECLARE_PROPERTY("hour", GetPropertyHour, SetPropertyHour);
62         DECLARE_PROPERTY("minute", GetPropertyMinute, SetPropertyMinute);
63         DECLARE_PROPERTY("24hourNotation", GetProperty24HourNotation, SetProperty24HourNotation);
64         DECLARE_PROPERTY("minYearRange", GetPropertyMinYearRange, SetPropertyMinYearRange);
65         DECLARE_PROPERTY("maxYearRange", GetPropertyMaxYearRange, SetPropertyMaxYearRange);
66         DECLARE_PROPERTY("dateTime", GetPropertyDateTime, SetPropertyDateTime);
67         DECLARE_CLASS_END();
68
69         result SetPropertyYear(const Tizen::Ui::Variant& year);
70         Tizen::Ui::Variant GetPropertyYear(void) const;
71
72         result SetPropertyMonth(const Tizen::Ui::Variant& month);
73         Tizen::Ui::Variant GetPropertyMonth(void) const;
74
75         result SetPropertyDay(const Tizen::Ui::Variant& day);
76         Tizen::Ui::Variant GetPropertyDay(void) const;
77
78         result SetPropertyHour(const Tizen::Ui::Variant& hour);
79         Tizen::Ui::Variant GetPropertyHour(void) const;
80
81         result SetPropertyMinute(const Tizen::Ui::Variant& minute);
82         Tizen::Ui::Variant GetPropertyMinute(void) const;
83
84         result SetProperty24HourNotation(const Tizen::Ui::Variant& enable);
85         Tizen::Ui::Variant GetProperty24HourNotation(void) const;
86
87         result SetPropertyMinYearRange(const Tizen::Ui::Variant& minYear);
88         Tizen::Ui::Variant GetPropertyMinYearRange(void) const;
89
90         result SetPropertyMaxYearRange(const Tizen::Ui::Variant& maxYear);
91         Tizen::Ui::Variant GetPropertyMaxYearRange(void) const;
92
93         result SetPropertyDateTime(const Tizen::Ui::Variant& dateTime);
94         Tizen::Ui::Variant GetPropertyDateTime(void) const;
95
96 public:
97         virtual ~_DateTimePicker(void);
98
99         static _DateTimePicker* CreateDateTimePickerN(int style, const Tizen::Base::String& title = L"");
100
101 public:
102         result AddDateTimeChangeEventListener(const _IDateTimeChangeEventListener& listener);
103         result RemoveDateTimeChangeEventListener(const _IDateTimeChangeEventListener& listener);
104         result FireDateTimeChangeEvent(_DateTimeChangeStatus status, Tizen::Base::DateTime& dateTime);
105
106         result SetYear(int year);
107         int GetYear(void) const;
108
109         result SetMonth(int month);
110         int GetMonth(void) const;
111
112         result SetDay(int day);
113         int GetDay(void) const;
114
115         result SetHour(int hour);
116         int GetHour(void) const;
117
118         result SetMinute(int minute);
119         int GetMinute(void) const;
120
121         void Set24HourNotationEnabled(bool enable);
122         bool Is24HourNotationEnabled(void) const;
123
124         result SetYearRange(int minYear, int maxYear);
125         result GetYearRange(int& minYear, int& maxYear) const;
126
127         void SetDateTime(const Tizen::Base::DateTime& dateTime);
128         Tizen::Base::DateTime GetDateTime(void) const;
129
130         void SetCurrentDateTime(void);
131
132         void SetFocusBoxId(int boxId);
133
134         void SetAccessibilityElementText(int index, const Tizen::Base::String& text, bool isAmPm);
135
136         virtual result OnAttachedToMainTree(void);
137         virtual void OnDraw(void);
138         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
139
140         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
141         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
142         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
143         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
144
145         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
146
147         virtual bool OnAccessibilityFocusMovedNext(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
148         virtual bool OnAccessibilityFocusMovedPrevious(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
149         virtual bool OnAccessibilityReadElement(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
150         virtual bool OnAccessibilityFocusIn(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
151         virtual bool OnAccessibilityFocusOut(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
152         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
153         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
154         virtual bool OnAccessibilityActionPerformed(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
155
156         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
157         virtual void OnFontInfoRequested(unsigned long& style, int& size);
158         Tizen::Graphics::Font* GetDateTimeFont(void);
159         result InitializeFont(void);
160
161         result CreateHeader(void);
162         result DestroyHeader(void);
163         result CreateFooter(void);
164         result DestroyFooter(void);
165
166         Tizen::Graphics::Rectangle GetHeaderBounds(void);
167
168         result CreateDisplayVisualElement(void);
169         void SetDisplayVisualElementBounds(Tizen::Graphics::Rectangle bounds);
170         Tizen::Ui::Animations::_VisualElement* GetDisplayVisualElement(void);
171
172 private:
173         _DateTimePicker(_DateTimePresenter* pPresenter, const Tizen::Base::String& title = L"");
174
175         _DateTimePicker(const _DateTimePicker&);
176         _DateTimePicker& operator =(const _DateTimePicker&);
177
178 private:
179         _DateTimePresenter* __pPresenter;
180
181         _Toolbar* __pHeader;
182         _Toolbar* __pFooter;
183         Tizen::Base::String __title;
184
185         _DateTimeChangeEvent* __pDateTimeChangeEvent;
186
187         Tizen::Graphics::Font* __pFont;
188
189         Tizen::Ui::Animations::_VisualElement* __pDisplayVisualElement;
190
191         Tizen::Base::Collection::LinkedListT<Tizen::Ui::_AccessibilityElement*> __accessibilityElements;
192 }; // _DateTimePicker
193
194 }}} // Tizen::Ui::Controls
195
196 #endif //_FUI_CTRL_INTERNAL_DATETIMEPICKER_H_