Tizen 2.1 base
[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 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 /**
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 "FUi_Control.h"
29 #include "FUi_UiTouchEvent.h"
30 #include "FUiCtrl_IDateTimeChangeEventListener.h"
31 #include "FUiCtrl_DateTimeChangeEvent.h"
32 #include "FUiCtrl_IActionEventListener.h"
33 #include "FUiCtrl_DateTimeBar.h"
34
35 namespace Tizen { namespace Ui
36 {
37 class _AccessibilityElement;
38 }} // Tizen::Ui
39
40 namespace Tizen { namespace Ui { namespace Controls
41 {
42 class _EditDatePresenter;
43
44 class _OSP_EXPORT_ _EditDate
45         : public _Control
46         , public _IDateTimeChangeEventListener
47         , public _IActionEventListener
48         , virtual public Tizen::Base::Runtime::IEventListener
49         , virtual public _IUiEventListener
50         , virtual public _IUiEventPreviewer
51 {
52         DECLARE_CLASS_BEGIN(_EditDate, _Control);
53         DECLARE_PROPERTY("date", GetPropertyDate, SetPropertyDate);
54         DECLARE_PROPERTY("minYearRange", GetPropertyMinYearRange, SetPropertyMinYearRange);
55         DECLARE_PROPERTY("maxYearRange", GetPropertyMaxYearRange, SetPropertyMaxYearRange);
56         DECLARE_PROPERTY("day", GetPropertyDay, SetPropertyDay);
57         DECLARE_PROPERTY("month", GetPropertyMonth, SetPropertyMonth);
58         DECLARE_PROPERTY("year", GetPropertyYear, SetPropertyYear);
59         DECLARE_PROPERTY("datePickerEnabled", GetPropertyDatePickerEnabled, SetPropertyDatePickerEnabled);
60         DECLARE_CLASS_END();
61
62         result SetPropertyDate(const Tizen::Ui::Variant& date);
63         Tizen::Ui::Variant GetPropertyDate(void) const;
64
65         result SetPropertyMinYearRange(const Tizen::Ui::Variant& minYear);
66         result SetPropertyMaxYearRange(const Tizen::Ui::Variant& maxYear);
67         Tizen::Ui::Variant GetPropertyMinYearRange(void) const;
68         Tizen::Ui::Variant GetPropertyMaxYearRange(void) const;
69
70         result SetPropertyDay(const Tizen::Ui::Variant& day);
71         Tizen::Ui::Variant GetPropertyDay(void) const;
72
73         result SetPropertyMonth(const Tizen::Ui::Variant& month);
74         Tizen::Ui::Variant GetPropertyMonth(void) const;
75
76         result SetPropertyYear(const Tizen::Ui::Variant& year);
77         Tizen::Ui::Variant GetPropertyYear(void) const;
78
79         result SetPropertyDatePickerEnabled(const Tizen::Ui::Variant& enable);
80         Tizen::Ui::Variant GetPropertyDatePickerEnabled(void) const;
81
82 public:
83         virtual ~_EditDate(void);
84         static _EditDate* CreateEditDateN(const Tizen::Base::String& title);
85
86         result AddDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
87         result RemoveDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
88
89         void SetDate(const Tizen::Base::DateTime& date);
90         Tizen::Base::DateTime GetDate(void) const;
91
92         result SetDay(int day);
93         int GetDay(void) const;
94
95         result SetMonth(int month);
96         int GetMonth(void) const;
97
98         result SetYear(int year);
99         int GetYear(void) const;
100
101         void SetCurrentDate(void);
102
103         void SetDatePickerEnabled(bool enable);
104         bool IsDatePickerEnabled(void) const;
105
106         result SetYearRange(int minYear, int maxYear);
107         result GetYearRange(int& minYear, int& maxYear) const;
108
109         result SetMinYearRange(int minYear);
110         result SetMaxYearRange(int maxYear);
111
112         int GetMinYearRange(void) const;
113         int GetMaxYearRange(void) const;
114
115         _DateTimeBar* GetDateTimeBar(void) const;
116
117         virtual void OnDraw(void);
118         virtual result OnAttachedToMainTree(void);
119         virtual void OnBoundsChanged(void);
120         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
121         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
122         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
123         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
124         virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control);
125
126         virtual void OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute);
127         virtual void OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source);
128         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
129         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
130         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
131         virtual void OnFontInfoRequested(unsigned long& style, int& size);
132         Tizen::Graphics::Rectangle GetParentWindowBounds(void) const;
133
134 private:
135         _EditDate(void);
136
137         _EditDate(const _EditDate&);
138         _EditDate& operator =(const _EditDate&);
139
140         result CreateDateTimeBar(void);
141         result CalculateDateTimeBarPosition(void);
142         result FireDateChangeEvent(_DateTimeChangeStatus status);
143         void AdjustDay(int year, int month);
144         void UpdateAccessibilityElement(void);
145
146 private:
147         _EditDatePresenter* __pEditDatePresenter;
148         _DateTimeChangeEvent* __pDateChangeEvent;
149         _DateTimeBar* __pDateTimeBar;
150         Tizen::Graphics::Rectangle __absoluteBounds;
151         Tizen::Base::String __title;
152         Tizen::Ui::_AccessibilityElement* __pAccessibilityTitleElement;
153         Tizen::Ui::_AccessibilityElement* __pAccessibilityYearElement;
154         Tizen::Ui::_AccessibilityElement* __pAccessibilityMonthElement;
155         Tizen::Ui::_AccessibilityElement* __pAccessibilityDayElement;
156
157 }; // _EditDate
158
159 }}} // Tizen::Ui::Controls
160
161 #endif  // _FUI_CTRL_INTERNAL_EDITDATE_H_