2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://floralicense.org/license/
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.
18 * @file FUiCtrl_SplitPanel.h
19 * @brief This is the header file for the _SplitPanel class.
21 * This header file contains the declarations of the %_SplitPanel class.
23 #ifndef _FUICTRL_INTERNAL_SPLIT_PANEL_H_
24 #define _FUICTRL_INTERNAL_SPLIT_PANEL_H_
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"
36 namespace Tizen { namespace Ui
38 class _AccessibilityElement;
41 namespace Tizen { namespace Ui { namespace Controls
43 class _SplitPanelPresenter;
45 enum _SplitPanelDividerState
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,
52 _SPLIT_PANEL_DIVIDER_STATE_MAX
55 const int _SPLIT_PANEL_DIVIDER_STATE = 4;
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
77 virtual ~_SplitPanel(void);
80 static _SplitPanel* CreateSplitPanelN(const Tizen::Graphics::Rectangle& rect, SplitPanelDividerStyle splitPanelDividerStyle, SplitPanelDividerDirection splitPanelDividerDirection);
81 result Construct(SplitPanelDividerStyle splitPanelDividerStyle, SplitPanelDividerDirection splitPanelDividerDirection);
83 virtual void OnDraw(void);
85 virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
86 virtual void OnBoundsChanged(void);
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);
93 virtual bool OnTapGestureDetected(_TouchTapGestureDetector& gesture);
94 virtual bool OnTapGestureCanceled(_TouchTapGestureDetector& gesture);
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);
108 result AddSplitPanelEventListener(const _ISplitPanelEventListener& listener);
109 result RemoveSplitPanelEventListener(const _ISplitPanelEventListener& listener);
111 result SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder);
112 _Control* GetPane(SplitPanelPaneOrder paneOrder) const;
114 result SetDividerStyle(SplitPanelDividerStyle splitPanelDividerStyle);
115 SplitPanelDividerStyle GetDividerStyle(void) const;
117 result SetDividerPosition(int position);
118 int GetDividerPosition(void) const;
120 result SetMaximumDividerPosition(int position);
121 int GetMaximumDividerPosition(void) const;
123 result SetMinimumDividerPosition(int position);
124 int GetMinimumDividerPosition(void) const;
126 void SetDividerDirection(SplitPanelDividerDirection dividerDirection);
127 SplitPanelDividerDirection GetDividerDirection(void) const;
129 result MaximizePane(SplitPanelPaneOrder paneOrder);
130 bool IsPaneMaximized(SplitPanelPaneOrder paneOrder) const;
131 result RestorePane(void);
133 result SendSplitPanelEvent(_SplitPanelEventStatus status);
135 void SetTapCount(int count);
136 int GetTapCount(void) const;
138 result OnAttachedToMainTree(void);
140 Tizen::Ui::Animations::VisualElement* GetDividerVisualElement(void);
142 void SetDividerVisualElementBounds(Tizen::Graphics::Rectangle& bounds);
145 result SetPresenter(const _SplitPanelPresenter& splitPanelPresenter);
150 _SplitPanel(const _SplitPanel& rhs);
151 _SplitPanel& operator =(const _SplitPanel& rhs);
154 _SplitPanelPresenter* __pSplitPanelPresenter;
156 _TouchTapGestureDetector* __pTapGesture;
158 Tizen::Ui::_Control* __pFirstPane;
159 Tizen::Ui::_Control* __pSecondPane;
161 int __dividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
162 int __minimumDividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
163 int __maximumDividerPosition[_SPLIT_PANEL_DIVIDER_STATE];
165 SplitPanelDividerDirection __splitPanelDividerDirection;
167 _SplitPanelEvent* __pSplitPanelEvent;
169 int __dividerTapCount;
171 Tizen::Ui::_AccessibilityElement* __pAccessibilityElement;
173 Tizen::Ui::Animations::VisualElement* __pDividerVisualElement;
175 bool __isDividerPositionInitialized;
176 bool __isDividerMaximumPositionInitialized;
177 bool __isDividerMinimumPositionInitialized;
178 bool __isFirstTimeOrientationChanged;
182 }}} // Tizen::Ui::Controls
184 #endif // _FUICTRL_INTERNAL_SPLIT_PANEL_H_