add patch
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_EditDate.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_EditDate.h
20  * @brief               This is the header file for the _EditDate class.
21  *
22  * This header file contains the declarations of the %_EditDate class.
23  */
24
25 #ifndef _FUI_CTRL_INTERNAL_EDITDATE_H_
26 #define _FUI_CTRL_INTERNAL_EDITDATE_H_
27
28 #include <FSysISettingEventListener.h>
29 #include "FUi_Control.h"
30 #include "FUi_UiTouchEvent.h"
31 #include "FUiCtrl_IDateTimeChangeEventListener.h"
32 #include "FUiCtrl_DateTimeChangeEvent.h"
33 #include "FUiCtrl_IActionEventListener.h"
34 #include "FUiCtrl_DateTimeBar.h"
35
36 namespace Tizen { namespace Ui
37 {
38 class _AccessibilityElement;
39 }} // Tizen::Ui
40
41 namespace Tizen { namespace Ui { namespace Controls
42 {
43 class _EditDatePresenter;
44
45 class _OSP_EXPORT_ _EditDate
46         : public _Control
47         , public _IDateTimeChangeEventListener
48         , public _IActionEventListener
49         , virtual public Tizen::Base::Runtime::IEventListener
50         , virtual public _IUiEventListener
51         , virtual public _IUiEventPreviewer
52         , virtual public Tizen::System::ISettingEventListener
53 {
54         DECLARE_CLASS_BEGIN(_EditDate, _Control);
55         DECLARE_PROPERTY("date", GetPropertyDate, SetPropertyDate);
56         DECLARE_PROPERTY("minYearRange", GetPropertyMinYearRange, SetPropertyMinYearRange);
57         DECLARE_PROPERTY("maxYearRange", GetPropertyMaxYearRange, SetPropertyMaxYearRange);
58         DECLARE_PROPERTY("day", GetPropertyDay, SetPropertyDay);
59         DECLARE_PROPERTY("month", GetPropertyMonth, SetPropertyMonth);
60         DECLARE_PROPERTY("year", GetPropertyYear, SetPropertyYear);
61         DECLARE_PROPERTY("datePickerEnabled", GetPropertyDatePickerEnabled, SetPropertyDatePickerEnabled);
62         DECLARE_CLASS_END();
63
64         result SetPropertyDate(const Tizen::Ui::Variant& date);
65         Tizen::Ui::Variant GetPropertyDate(void) const;
66
67         result SetPropertyMinYearRange(const Tizen::Ui::Variant& minYear);
68         result SetPropertyMaxYearRange(const Tizen::Ui::Variant& maxYear);
69         Tizen::Ui::Variant GetPropertyMinYearRange(void) const;
70         Tizen::Ui::Variant GetPropertyMaxYearRange(void) const;
71
72         result SetPropertyDay(const Tizen::Ui::Variant& day);
73         Tizen::Ui::Variant GetPropertyDay(void) const;
74
75         result SetPropertyMonth(const Tizen::Ui::Variant& month);
76         Tizen::Ui::Variant GetPropertyMonth(void) const;
77
78         result SetPropertyYear(const Tizen::Ui::Variant& year);
79         Tizen::Ui::Variant GetPropertyYear(void) const;
80
81         result SetPropertyDatePickerEnabled(const Tizen::Ui::Variant& enable);
82         Tizen::Ui::Variant GetPropertyDatePickerEnabled(void) const;
83
84 public:
85         virtual ~_EditDate(void);
86         static _EditDate* CreateEditDateN(const Tizen::Base::String& title);
87
88         result AddDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
89         result RemoveDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
90
91         void SetDate(const Tizen::Base::DateTime& date);
92         Tizen::Base::DateTime GetDate(void) const;
93
94         result SetDay(int day);
95         int GetDay(void) const;
96
97         result SetMonth(int month);
98         int GetMonth(void) const;
99
100         result SetYear(int year);
101         int GetYear(void) const;
102
103         void SetCurrentDate(void);
104
105         void SetDatePickerEnabled(bool enable);
106         bool IsDatePickerEnabled(void) const;
107
108         result SetYearRange(int minYear, int maxYear);
109         result GetYearRange(int& minYear, int& maxYear) const;
110
111         result SetMinYearRange(int minYear);
112         result SetMaxYearRange(int maxYear);
113
114         int GetMinYearRange(void) const;
115         int GetMaxYearRange(void) const;
116
117         _DateTimeBar* GetDateTimeBar(void) const;
118
119         virtual void OnDraw(void);
120         virtual void OnBoundsChanged(void);
121         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
122         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
123         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
124         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
125         virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control);
126
127         virtual void OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute);
128         virtual void OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source);
129         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
130         virtual void OnChangeLayout(Tizen::Ui::_ControlRotation rotation);
131         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
132         virtual void OnFontInfoRequested(unsigned long& style, float& size);
133         virtual void OnSettingChanged(Tizen::Base::String& key);
134
135         virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
136         virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
137
138         virtual bool OnFocusGained(const _Control& source);
139         virtual bool OnFocusLost(const _Control& source);
140         virtual void OnFocusModeStateChanged(void);
141         virtual void OnDrawFocus(void);
142
143         Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const;
144         void SetXmlBoundsExist(bool isXmlBoundsExist);
145
146         void OnVisibleStateChanged(void);
147         void OnAncestorEnableStateChanged(const _Control& control);
148         void OnAncestorVisibleStateChanged(const _Control& control);
149
150 private:
151         _EditDate(void);
152
153         _EditDate(const _EditDate&);
154         _EditDate& operator =(const _EditDate&);
155
156         result CreateDateTimeBar(void);
157         result CalculateDateTimeBarPosition(void);
158         result FireDateChangeEvent(_DateTimeChangeStatus status);
159         void AdjustDay(int year, int month);
160         void CreateAccessibilityElement(void);
161         void UpdateAccessibilityElement(void);
162
163 private:
164         _EditDatePresenter* __pEditDatePresenter;
165         _DateTimeChangeEvent* __pDateChangeEvent;
166         _DateTimeBar* __pDateTimeBar;
167         Tizen::Graphics::FloatRectangle __absoluteBounds;
168         Tizen::Graphics::FloatDimension __previousSize;
169         Tizen::Base::String __title;
170         Tizen::Ui::_AccessibilityElement* __pAccessibilityEditDateElement;
171         Tizen::Ui::_AccessibilityElement* __pAccessibilityYearElement;
172         Tizen::Ui::_AccessibilityElement* __pAccessibilityMonthElement;
173         Tizen::Ui::_AccessibilityElement* __pAccessibilityDayElement;
174         bool __isCalledBoundsChanged;
175         bool __isXmlBoundsExist;
176         static const float _TOUCH_PRESS_THRESHOLD_INSENSITIVE = 0.08f;
177 }; // _EditDate
178
179 }}} // Tizen::Ui::Controls
180
181 #endif  // _FUI_CTRL_INTERNAL_EDITDATE_H_