Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_FormImpl.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 #ifndef _FUICTRL_INTERNAL_FORM_IMPL_H_
18 #define _FUICTRL_INTERNAL_FORM_IMPL_H_
19
20 #include <FUiCtrlForm.h>
21 #include "FUi_ContainerImpl.h"
22 #include "FUiCtrl_Form.h"
23 #include "FUiCtrl_IFormBackEventListener.h"
24
25 namespace Tizen { namespace Ui {
26 class DataBindingContext;
27 class _OrientationAgent;
28 }} // Tizen::Ui
29
30 namespace Tizen { namespace Ui { namespace Controls {
31
32 class _HeaderImpl;
33 class _FooterImpl;
34 class _TabImpl;         // Ki-Dong,Hong.Temp
35 class _PublicActionEvent;
36
37 class _OSP_EXPORT_ _FormImpl
38         : public _ContainerImpl
39         , public Tizen::Ui::Controls::_IActionEventListener
40         , public Tizen::Ui::Controls::_IFormBackEventListener
41         , virtual public Tizen::Base::Runtime::IEventListener
42 {
43 public:
44         class FormSizeInfo : public _ControlImpl::SizeInfo
45         {
46                 virtual Tizen::Graphics::Dimension GetDefaultMinimumSize(_ControlOrientation orientation) const;
47         }; // FormSizeInfo
48
49 // Lifecycle
50 public:
51         virtual ~_FormImpl(void);
52
53 // Operations
54         static _FormImpl* CreateFormImplN(Form* pControl, Layout* pPublicPortraitLayout = null, Layout* pPublicLandscapeLayout = null);
55
56         virtual const char* GetPublicClassName(void) const;
57         virtual const Form& GetPublic(void) const;
58         virtual Form& GetPublic(void);
59         virtual const _Form& GetCore(void) const;
60         virtual _Form& GetCore(void);
61
62         _ControlImpl* GetFocusControl(void);
63
64         void SetFormBackEventListener(const IFormBackEventListener* pFormBackEventListener);
65
66         unsigned long GetFormStyle(void) const;
67         _FooterImpl* GetFooter(void) const;
68         _HeaderImpl* GetHeader(void) const;
69         _TabImpl* GetTabImpl(void) const;                       // Ki-Dong,Hong.Temp
70         Tizen::Base::String GetTitleText(void) const;
71         HorizontalAlignment GetTitleTextHorizontalAlignment(void) const;
72         OverlayRegion* GetOverlayRegionN(const Tizen::Graphics::Rectangle& rect, OverlayRegionType regionType);
73         Tizen::Graphics::Canvas* GetClientAreaCanvasN(void) const;
74         int GetSoftkeyActionId(Softkey softkey) const;
75         int GetOptionkeyActionId(void) const;
76         Tizen::Base::String GetSoftkeyText(Softkey softkey) const;
77
78         void SetFormStyle(unsigned long formStyle);
79         result SetActionBarsTranslucent(unsigned long actionBars, bool translucent);
80         result SetActionBarsVisible(unsigned long actionBars, bool visible);
81         result SetTitleIcon(const Tizen::Graphics::Bitmap* pTitleBitmap);
82         result SetTitleText(const Tizen::Base::String& title, HorizontalAlignment alignment);
83         result SetSoftkeyEnabled(Softkey softkey, bool enable);
84         result SetOptionkeyActionId(int actionId);
85         result SetSoftkeyActionId(Softkey softkey, int actionId);
86         result SetSoftkeyText(Softkey softkey, const Tizen::Base::String& text);
87         result SetSoftkeyIcon(Softkey softkey, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap);
88
89         bool HasFooter(void) const;
90         bool HasHeader(void) const;
91         bool HasIndicator(void) const;
92         bool HasTitle(void) const;
93         bool HasTab(void) const;
94         bool IsIndicatorVisible(void) const;
95         bool IsHeaderVisible(void) const;
96         bool IsFooterVisible(void) const;
97         bool IsIndicatorTranslucent(void) const;
98         bool IsHeaderTranslucent(void) const;
99         bool IsFooterTranslucent(void) const;
100         bool IsTabTranslucent(void) const;                      // Ki-Dong,Hong.Temp
101         bool HasOptionkey(void) const;
102         bool HasSoftkey(Softkey softkey) const;
103         bool IsSoftkeyEnabled(Softkey softkey) const;
104
105         Tizen::Graphics::Point TranslateToClientAreaPosition(const Tizen::Graphics::Point& position) const;
106         Tizen::Graphics::Point TranslateFromClientAreaPosition(const Tizen::Graphics::Point& clientPosition) const;
107
108         void AddOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener);
109         void AddOptionkeyActionListener(const Tizen::Ui::IActionEventListener& listener);
110         void AddSoftkeyActionListener(Softkey softkey, const Tizen::Ui::IActionEventListener& listener);
111         void RemoveOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener);
112         void RemoveOptionkeyActionListener(const Tizen::Ui::IActionEventListener& listener);
113         void RemoveSoftkeyActionListener(Softkey softkey, const Tizen::Ui::IActionEventListener& listener);
114
115         void SetOrientation(Tizen::Ui::Orientation orientation);
116         Tizen::Ui::Orientation GetOrientation(void) const;
117         Tizen::Ui::OrientationStatus GetOrientationStatus(void) const;
118         void UpdateOrientationStatus(bool draw = false);
119
120         // Invoked by operations
121         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
122
123         bool DeflateClientRectHeight(int height);
124
125         virtual void OnDraw(void);
126         DataBindingContext* GetDataBindingContextN(void) const;
127
128         virtual result OnAttachedToMainTree(void);
129         virtual result OnDetachingFromMainTree(void);
130         virtual result OnAttaching(const _Control* pParent);
131
132         virtual bool IsOpaque(void) const;
133
134         virtual void OnFormBackRequested(Tizen::Ui::Controls::_Form& source);
135
136         static const _FormImpl* GetInstance(const Form& form);
137
138         static _FormImpl* GetInstance(Form& form);
139
140 protected:
141         _FormImpl(Form* pPublic, _Form* pCore, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout);
142
143 private:
144         static _HeaderImpl* CreateHeaderN(void);
145         static _FooterImpl* CreateFooterN(void);
146         static _TabImpl* CreateTabImplN(void);                  // Ki-Dong,Hong.Temp
147
148         bool RemoveHeader(void);
149         bool RemoveFooter(void);
150         bool RemoveTabImpl(void);                                                       // Ki-Dong,Hong.Temp
151
152         _Softkey ConvertSoftkey(Softkey softkey) const;
153
154 // key event callback
155         virtual bool OnKeyReleased(const _ControlImpl& source, _KeyCode keyCode);
156
157         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
158
159 // Attribute
160 private:
161         _Form* __pForm;
162         IFormBackEventListener* __pFormBackEventListener;
163
164         Tizen::Ui::_OrientationAgent* __pOriAgent;
165         Tizen::Ui::Controls::_PublicActionEvent* __pLeftSoftkeyActionEvent;
166         Tizen::Ui::Controls::_PublicActionEvent* __pRightSoftkeyActionEvent;
167         Tizen::Ui::Controls::_PublicActionEvent* __pOptionMenuActionEvent;
168         Tizen::Base::Collection::LinkedList __leftSoftkeyActionList;
169         Tizen::Base::Collection::LinkedList __rightSoftkeyActionList;
170
171         friend class _FrameImpl;
172 };
173
174 }}} // Tizen::Ui::Controls
175
176 #endif // _FUICTRL_INTERNAL_FORM_IMPL_H_