93ed06ef8a2d394382adac9b957b7d8dc3739dd2
[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         // accessibility listener
109         virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
110         virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
111         virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
112         virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
113         virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
114         virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
115         virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
116         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
117         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
118         _AccessibilityElement* GetAccessibilityElementAt(int index) const;
119         int GetIndexFromAccessibilityElementPoint(const Tizen::Graphics::FloatPoint& point) const;
120
121 private:
122         _DateTimeBar(void);
123
124         _DateTimeBar(const _DateTimeBar&);
125         _DateTimeBar& operator =(const _DateTimeBar&);
126
127         void SetAlignment(_DateTimeBarAlignment alignment);
128         void SetSelectedBoxId(_DateTimeId boxId);
129         void InitializeAccessibilityElement(void);
130 private:
131         _DateTimeBarPresenter* __pDateTimeBarPresenter;
132         _ActionEvent* __pActionEvent;
133
134         _DateTimeId __selectedBoxId;
135         _DateTimeBarAlignment __alignment;
136         _DateTimeChangeEvent* __pDateTimeChangeEvent;
137         _TouchFlickGestureDetector* __pGestureFlick;
138         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
139         Tizen::Graphics::FloatRectangle __parentWindowBounds;
140         _Control* __pOwner;
141         int __accessibilityFocusOutIndex;
142 }; // _DateTimeBar
143
144 }}} // Tizen::Ui::Controls
145
146 #endif  //_FUI_CTRL_INTERNAL_DATETIME_BAR_H_