2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
19 * @file FUiCtrl_EditDate.h
20 * @brief This is the header file for the _EditDate class.
22 * This header file contains the declarations of the %_EditDate class.
25 #ifndef _FUI_CTRL_INTERNAL_EDITDATE_H_
26 #define _FUI_CTRL_INTERNAL_EDITDATE_H_
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"
36 namespace Tizen { namespace Ui
38 class _AccessibilityElement;
41 namespace Tizen { namespace Ui { namespace Controls
43 class _EditDatePresenter;
45 class _OSP_EXPORT_ _EditDate
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
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);
64 result SetPropertyDate(const Tizen::Ui::Variant& date);
65 Tizen::Ui::Variant GetPropertyDate(void) const;
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;
72 result SetPropertyDay(const Tizen::Ui::Variant& day);
73 Tizen::Ui::Variant GetPropertyDay(void) const;
75 result SetPropertyMonth(const Tizen::Ui::Variant& month);
76 Tizen::Ui::Variant GetPropertyMonth(void) const;
78 result SetPropertyYear(const Tizen::Ui::Variant& year);
79 Tizen::Ui::Variant GetPropertyYear(void) const;
81 result SetPropertyDatePickerEnabled(const Tizen::Ui::Variant& enable);
82 Tizen::Ui::Variant GetPropertyDatePickerEnabled(void) const;
85 virtual ~_EditDate(void);
86 static _EditDate* CreateEditDateN(const Tizen::Base::String& title);
88 result AddDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
89 result RemoveDateChangeEventListener(const _IDateTimeChangeEventListener& listener);
91 void SetDate(const Tizen::Base::DateTime& date);
92 Tizen::Base::DateTime GetDate(void) const;
94 result SetDay(int day);
95 int GetDay(void) const;
97 result SetMonth(int month);
98 int GetMonth(void) const;
100 result SetYear(int year);
101 int GetYear(void) const;
103 void SetCurrentDate(void);
105 void SetDatePickerEnabled(bool enable);
106 bool IsDatePickerEnabled(void) const;
108 result SetYearRange(int minYear, int maxYear);
109 result GetYearRange(int& minYear, int& maxYear) const;
111 result SetMinYearRange(int minYear);
112 result SetMaxYearRange(int maxYear);
114 int GetMinYearRange(void) const;
115 int GetMaxYearRange(void) const;
117 _DateTimeBar* GetDateTimeBar(void) const;
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);
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);
135 virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
136 virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
138 virtual bool OnFocusGained(const _Control& source);
139 virtual bool OnFocusLost(const _Control& source);
140 virtual void OnFocusModeStateChanged(void);
141 virtual void OnDrawFocus(void);
143 Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const;
144 void SetXmlBoundsExist(bool isXmlBoundsExist);
146 void OnVisibleStateChanged(void);
147 void OnAncestorEnableStateChanged(const _Control& control);
148 void OnAncestorVisibleStateChanged(const _Control& control);
153 _EditDate(const _EditDate&);
154 _EditDate& operator =(const _EditDate&);
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);
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;
179 }}} // Tizen::Ui::Controls
181 #endif // _FUI_CTRL_INTERNAL_EDITDATE_H_