Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_SplitPanel.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  * @file                FUiCtrl_SplitPanel.h
19  * @brief               This is the header file for the _SplitPanel class.
20  *
21  * This header file contains the declarations of the %_SplitPanel class.
22  */
23 #ifndef _FUICTRL_INTERNAL_SPLIT_PANEL_H_
24 #define _FUICTRL_INTERNAL_SPLIT_PANEL_H_
25
26 #include <FBaseObject.h>
27 #include <FUiCtrlSplitPanel.h>
28 #include "FUi_Control.h"
29 #include "FUiCtrl_ISplitPanelEventListener.h"
30 #include "FUiCtrl_SplitPanelEvent.h"
31 #include "FUiCtrl_SplitPanelPresenter.h"
32 #include "FUi_ITouchTapGestureEventListener.h"
33 #include "FUiAnim_VisualElement.h"
34 #include "FUi_IAccessibilityListener.h"
35
36 namespace Tizen { namespace Ui
37 {
38         class _AccessibilityElement;
39 }} // Tizen::Ui
40
41 namespace Tizen { namespace Ui { namespace Controls
42 {
43 class _SplitPanelPresenter;
44
45 enum _SplitPanelDividerState
46 {
47         _SPLIT_PANEL_VERTICAL_DIVIDER_ORIENTATION_LANDSCAPE = 0,
48         _SPLIT_PANEL_HORIZONTAL_DIVIDER_ORIENTATION_LANDSCAPE,
49         _SPLIT_PANEL_VERTICAL_DIVIDER_ORIENTATION_PORTRAIT,
50         _SPLIT_PANEL_HORIZONTAL_DIVIDER_ORIENTATION_PORTRAIT,
51
52         _SPLIT_PANEL_DIVIDER_STATE_MAX
53 };
54
55 const int _SPLIT_PANEL_DIVIDER_STATE = 4;
56
57 /**
58  * @class _SplitPanel
59  * @brief
60  * @since       1.0
61  *
62  *
63  *
64  *
65  */
66
67 class _OSP_EXPORT_ _SplitPanel
68         : public Tizen::Ui::_Control
69         , public Tizen::Ui::_ITouchTapGestureEventListener
70         , virtual public Tizen::Base::Runtime::IEventListener
71         , virtual public Tizen::Ui::_IUiEventListener
72         , virtual public Tizen::Ui::_IUiEventPreviewer
73         , virtual public Tizen::Ui::_ITouchGestureEventListener
74         , public Tizen::Ui::_IAccessibilityListener
75 {
76 public:
77         virtual ~_SplitPanel(void);
78
79 public:
80         static _SplitPanel* CreateSplitPanelN(const Tizen::Graphics::Rectangle& rect, SplitPanelDividerStyle splitPanelDividerStyle, SplitPanelDividerDirection splitPanelDividerDirection);
81         result Construct(SplitPanelDividerStyle splitPanelDividerStyle, SplitPanelDividerDirection splitPanelDividerDirection);
82
83         virtual void OnDraw(void);
84
85         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
86         virtual void OnBoundsChanged(void);
87
88         virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
89         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
90         virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
91         virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
92
93         virtual bool OnTapGestureDetected(_TouchTapGestureDetector& gesture);
94         virtual bool OnTapGestureCanceled(_TouchTapGestureDetector& gesture);
95
96         // accessibility listener
97         virtual bool OnAccessibilityFocusMovedNext(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
98         virtual bool OnAccessibilityFocusMovedPrevious(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
99         virtual bool OnAccessibilityReadElement(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
100         virtual bool OnAccessibilityFocusIn(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
101         virtual bool OnAccessibilityFocusOut(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
102         virtual bool OnAccessibilityActionPerformed(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return true;}
103         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
104         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
105
106
107 public:
108         result AddSplitPanelEventListener(const _ISplitPanelEventListener& listener);
109         result RemoveSplitPanelEventListener(const _ISplitPanelEventListener& listener);
110
111         result SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder);
112         _Control* GetPane(SplitPanelPaneOrder paneOrder) const;
113
114         result SetDividerStyle(SplitPanelDividerStyle splitPanelDividerStyle);
115         SplitPanelDividerStyle GetDividerStyle(void) const;
116
117         result SetDividerPosition(int position);
118         int GetDividerPosition(void) const;
119
120         result SetMaximumDividerPosition(int position);
121         int GetMaximumDividerPosition(void) const;
122
123         result SetMinimumDividerPosition(int position);
124         int GetMinimumDividerPosition(void) const;
125
126         void SetDividerDirection(SplitPanelDividerDirection dividerDirection);
127         SplitPanelDividerDirection GetDividerDirection(void) const;
128
129         result MaximizePane(SplitPanelPaneOrder paneOrder);
130         bool IsPaneMaximized(SplitPanelPaneOrder paneOrder) const;
131         result RestorePane(void);
132
133         result SendSplitPanelEvent(_SplitPanelEventStatus status);
134
135         void SetTapCount(int count);
136         int GetTapCount(void) const;
137
138         result OnAttachedToMainTree(void);
139
140         Tizen::Ui::Animations::VisualElement* GetDividerVisualElement(void);
141
142         void SetDividerVisualElementBounds(Tizen::Graphics::Rectangle& bounds);
143
144 protected:
145         result SetPresenter(const _SplitPanelPresenter& splitPanelPresenter);
146
147 private:
148         _SplitPanel(void);
149
150         _SplitPanel(const _SplitPanel& rhs);
151         _SplitPanel& operator =(const _SplitPanel& rhs);
152
153 private:
154         _SplitPanelPresenter* __pSplitPanelPresenter;
155
156         _TouchTapGestureDetector* __pTapGesture;
157
158         Tizen::Ui::_Control* __pFirstPane;
159         Tizen::Ui::_Control* __pSecondPane;
160
161         int __dividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
162         int __minimumDividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
163         int __maximumDividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
164
165         SplitPanelDividerDirection __splitPanelDividerDirection;
166
167         _SplitPanelEvent* __pSplitPanelEvent;
168
169         int __dividerTapCount;
170
171         Tizen::Ui::_AccessibilityElement* __pAccessibilityElement;
172
173         Tizen::Ui::Animations::VisualElement* __pDividerVisualElement;
174
175         bool __isDividerPositionInitialized;
176         bool __isDividerMaximumPositionInitialized;
177         bool __isDividerMinimumPositionInitialized;
178         bool __isFirstTimeOrientationChanged;
179
180 }; // _SplitPanel
181
182 }}} // Tizen::Ui::Controls
183
184 #endif // _FUICTRL_INTERNAL_SPLIT_PANEL_H_
185