Merging EditDateTime & DateTimePicker Changes from RSA-master to RSA-tizen2.1
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_DateTimeBar.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_DateTimeBar.h
20  * @brief               This is the header file for the _DateTimeBar class.
21  *
22  * This header file contains the declarations of the %_DateTimeBar class.
23  */
24 #ifndef _FUI_CTRL_INTERNAL_DATETIME_BAR_H_
25 #define _FUI_CTRL_INTERNAL_DATETIME_BAR_H_
26
27 #include <FBaseString.h>
28 #include <FBaseDateTime.h>
29 #include "FUi_Window.h"
30 #include "FUi_UiTouchEvent.h"
31 #include "FUi_IAccessibilityListener.h"
32 #include "FUi_AccessibilityContainer.h"
33 #include "FUi_AccessibilityElement.h"
34 #include "FUiCtrl_IActionEventListener.h"
35 #include "FUiCtrl_ActionEvent.h"
36 #include "FUiCtrl_DateTimeDefine.h"
37 #include "FUiCtrl_DateTimeChangeEvent.h"
38 #include "FUiCtrl_IDateTimeChangeEventListener.h"
39 #include "FUi_ITouchFlickGestureEventListener.h"
40
41 namespace Tizen { namespace Ui
42 {
43 class _AccessibilityElement;
44 }} // Tizen::Ui
45
46 namespace Tizen { namespace Ui { namespace Controls
47 {
48 class _DateTimeBarPresenter;
49
50 class _DateTimeBar
51         : public _Window
52         , public _IAccessibilityListener
53         , virtual public Tizen::Ui::_ITouchFlickGestureEventListener
54         , virtual public Tizen::Base::Runtime::IEventListener
55         , virtual public _IUiEventListener
56         , virtual public _IUiEventPreviewer
57 {
58 public:
59         virtual ~_DateTimeBar(void);
60         static _DateTimeBar* CreateDateTimeBarN(_Control&);
61
62 public:
63         result SetPositionAndAlignment(const Tizen::Graphics::FloatPoint& point, _DateTimeBarAlignment alignment);
64
65         result SetInitialValue(int minValue, int maxValue, int displayValue, _DateTimeId boxId);
66         result RemoveAllItems(void);
67
68         _DateTimeId GetSelectedBoxId(void) const;
69
70         int GetItemCount(void) const;
71
72         _DateTimeBarAlignment GetAlignment(void) const;
73
74         result AddActionEventListener(const _IActionEventListener& listener);
75         result RemoveActionEventListener(const _IActionEventListener& listener);
76
77         result AddDateTimeChangeEventListener(const _IDateTimeChangeEventListener& listener);
78         result RemoveDateTimeChangeEventListener(const _IDateTimeChangeEventListener& listener);
79
80         result CalculateArrowBounds(const Tizen::Graphics::FloatRectangle& bounds);
81
82         result FireActionEvent(int actionId);
83         result FireDateTimeChangeEvent(_DateTimeChangeStatus status);
84
85         virtual void OnDraw(void);
86         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
87         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
88         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
89         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
90         virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control);
91         virtual result OnAttachedToMainTree(void);
92         virtual result OnDetachingFromMainTree(void);
93         virtual void OnActivated(void);
94         virtual void OnDeactivated(void);
95         virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
96         virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture);
97         void AddAccessibilityElement(const Tizen::Graphics::FloatRectangle& itemBounds, const Tizen::Base::String& itemText);
98         void InsertAccessibilityElementAt(int index, const Tizen::Graphics::FloatRectangle& itemBounds, const Tizen::Base::String& itemText);
99         void RemoveAllAccessibilityElement(void);
100         void RemoveAccessibilityElementAt(int index);
101         Tizen::Ui::AccessibilityTraits GetAccessibilityTraitValue();
102         Tizen::Base::String GetMonthValue(int month) const;
103         void SetFont(Tizen::Graphics::Font& pFont);
104         void SetParentWindowBounds(Tizen::Graphics::FloatRectangle& parentWindowBounds);
105         Tizen::Graphics::FloatRectangle GetParentWindowBounds() const;
106         void RefreshItems(void);
107
108         virtual bool OnFocusGained(const _Control &source);
109         virtual bool OnFocusLost(const _Control &source);
110         void OnDrawFocus(void);
111         bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
112
113         // accessibility listener
114         virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
115         virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
116         virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
117         virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
118         virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
119         virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
120         virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
121         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
122         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
123         _AccessibilityElement* GetAccessibilityElementAt(int index) const;
124         int GetIndexFromAccessibilityElementPoint(const Tizen::Graphics::FloatPoint& point) const;
125
126 private:
127         _DateTimeBar(void);
128
129         _DateTimeBar(const _DateTimeBar&);
130         _DateTimeBar& operator =(const _DateTimeBar&);
131
132         void SetAlignment(_DateTimeBarAlignment alignment);
133         void SetSelectedBoxId(_DateTimeId boxId);
134         void InitializeAccessibilityElement(void);
135 private:
136         _DateTimeBarPresenter* __pDateTimeBarPresenter;
137         _ActionEvent* __pActionEvent;
138
139         _DateTimeId __selectedBoxId;
140         _DateTimeBarAlignment __alignment;
141         _DateTimeChangeEvent* __pDateTimeChangeEvent;
142         _TouchFlickGestureDetector* __pGestureFlick;
143         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
144         Tizen::Graphics::FloatRectangle __parentWindowBounds;
145         _Control* __pOwner;
146         int __accessibilityFocusOutIndex;
147 }; // _DateTimeBar
148
149 }}} // Tizen::Ui::Controls
150
151 #endif  //_FUI_CTRL_INTERNAL_DATETIME_BAR_H_