Fork for IVI: mesa fixing
[profile/ivi/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 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_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(void);
61
62 public:
63         result SetPositionAndAlignment(const Tizen::Graphics::Point& 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::Rectangle& 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 OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
92         virtual result OnAttachedToMainTree(void);
93         virtual result OnDetachingFromMainTree(void);
94         virtual void OnActivated(void);
95         virtual void OnDeactivated(void);
96         virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
97         virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture);
98         void AddAccessibilityElement(const Tizen::Graphics::Rectangle& itemBounds, const Tizen::Base::String& itemText);
99         void RemoveAllAccessibilityElement(void);
100         Tizen::Ui::AccessibilityTraits GetAccessibilityTraitValue();
101         Tizen::Base::String GetMonthValue(int month) const;
102         void SetFont(Tizen::Graphics::Font& pFont);
103         void SetParentWindowBounds(Tizen::Graphics::Rectangle& parentWindowBounds);
104         Tizen::Graphics::Rectangle GetParentWindowBounds() const;
105
106         // accessibility listener
107         virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
108         virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
109         virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
110         virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
111         virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
112         virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
113         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
114         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
115
116 private:
117         _DateTimeBar(void);
118
119         _DateTimeBar(const _DateTimeBar&);
120         _DateTimeBar& operator =(const _DateTimeBar&);
121
122         void SetAlignment(_DateTimeBarAlignment alignment);
123         void SetSelectedBoxId(_DateTimeId boxId);
124         void InitializeAccessibilityElement(void);
125 private:
126         _DateTimeBarPresenter* __pDateTimeBarPresenter;
127         _ActionEvent* __pActionEvent;
128
129         _DateTimeId __selectedBoxId;
130         _DateTimeBarAlignment __alignment;
131         _DateTimeChangeEvent* __pDateTimeChangeEvent;
132         _TouchFlickGestureDetector* __pGestureFlick;
133         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
134         Tizen::Graphics::Rectangle __parentWindowBounds;
135 }; // _DateTimeBar
136
137 }}} // Tizen::Ui::Controls
138
139 #endif  //_FUI_CTRL_INTERNAL_DATETIME_BAR_H_