Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_EditAreaImpl.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_EditAreaImpl.h
19  * @brief       This is the header file for the _EditAreaImpl class.
20  *
21  * This header file contains the declarations of the %_EditAreaPresenter class.
22  */
23
24 #ifndef _FUI_CTRL_INTERNAL_EDIT_AREA_IMPL_H_
25 #define _FUI_CTRL_INTERNAL_EDIT_AREA_IMPL_H_
26
27 #include <FUiCtrlEditArea.h>
28 #include "FUi_ControlImpl.h"
29 #include "FUi_IFocusEventListener.h"
30 #include "FUiCtrl_Edit.h"
31 #include "FUiCtrl_IActionEventListener.h"
32 #include "FUiCtrl_IKeypadEventListener.h"
33 #include "FUiCtrl_ILanguageEventListener.h"
34 #include "FUiCtrl_IScrollPanelEventListener.h"
35 #include "FUiCtrl_ITextBlockEventListener.h"
36 #include "FUiCtrl_ITextEventListener.h"
37 #include "FUiCtrl_IUiLinkEventListener.h"
38 #include "FUiCtrl_PublicActionEvent.h"
39 #include "FUiCtrl_PublicKeypadEvent.h"
40 #include "FUiCtrl_PublicLanguageEvent.h"
41 #include "FUiCtrl_PublicLinkEvent.h"
42 #include "FUiCtrl_PublicScrollPanelEvent.h"
43 #include "FUiCtrl_PublicTextBlockEvent.h"
44 #include "FUiCtrl_PublicTextEvent.h"
45
46 namespace Tizen { namespace Ui { namespace Controls
47 {
48
49 class _EditAreaImpl
50         : public _ControlImpl
51         , virtual public Tizen::Base::Runtime::IEventListener
52         , public _ITextEventListener
53         , public _IActionEventListener
54         , public _IKeypadEventListener
55         , public _IUiLinkEventListener
56         , public _ITextBlockEventListener
57         , public _ILanguageEventListener
58         , public _IScrollPanelEventListener
59 {
60 public:
61         class EditAreaSizeInfo : public _ControlImpl::SizeInfo
62         {
63                 virtual Tizen::Graphics::Dimension GetDefaultMinimumSize(Tizen::Ui::_ControlOrientation orientation) const;
64         };
65
66 public:
67         _EditAreaImpl(EditArea* pPublic, _Edit* pCore);
68         virtual ~_EditAreaImpl(void);
69
70         static _EditAreaImpl* CreateEditAreaImplN(EditArea* pControl, const Tizen::Graphics::Rectangle& rect);
71         result Initialize(InputStyle inputStyle = INPUT_STYLE_FULLSCREEN, int limitLength = 1000);
72
73         virtual const _Edit& GetCore(void) const;
74         virtual _Edit& GetCore(void);
75         virtual const EditArea& GetPublic(void) const;
76         virtual EditArea& GetPublic(void);
77         virtual const char* GetPublicClassName(void) const;
78
79         result SetAutoLinkMask(unsigned long autoLinks);
80         result SetBackgroundBitmap(EditStatus status, const Tizen::Graphics::Bitmap& bitmap);
81         result SetColor(EditStatus status, const Tizen::Graphics::Color& color);
82         result SetCurrentInputModeCategory(EditInputModeCategory inputModeCategory);
83         result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode);
84         result SetCursorPosition(int position);
85         void SetGuideText(const Tizen::Base::String& guideText);
86         result SetGuideTextColor(const Tizen::Graphics::Color& color);
87         result SetInputModeCategory(unsigned long categories, bool enable);
88         result SetKeypadActionEnabled(bool enable);
89         result SetKeypadAction(Tizen::Ui::KeypadAction keypadAction);
90         void SetKeypadEnabled(bool enable);
91         result SetKeypadStyle(KeypadStyle keypadStyle);
92         result SetLineSpacing(int multiplier, int extra);
93         void SetLowerCaseModeEnabled(bool enable);
94         result SetMargin(EditMarginType marginType, int margin);
95         result SetOverlayKeypadCommandButton(CommandButtonPosition position, const Tizen::Base::String& text, int actionId);
96         result SetOverlayKeypadCommandButtonVisible(bool visible);
97         result SetText(const Tizen::Base::String& text);
98         result SetTextAlignment(HorizontalAlignment alignment);
99         result SetTextColor(EditTextColor type, const Tizen::Graphics::Color& color);
100         result SetTextSize(int size);
101         result SetViewModeEnabled(bool enable);
102         result SetTextPredictionEnabled(bool enable);
103
104         unsigned long GetAutoLinkMask(void) const;
105         void GetBlockRange(int& start, int& end) const;
106         Tizen::Graphics::Color GetColor(EditStatus status) const;
107         EditInputModeCategory GetCurrentInputModeCategory(void) const;
108         result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const;
109         void GetCurrentTextRange(int& start, int& end) const;
110         int GetCursorPosition(void) const;
111         Tizen::Base::String GetGuideText(void) const;
112         Tizen::Graphics::Color GetGuideTextColor(void) const;
113         unsigned long GetInputModeCategory(void) const;
114         Tizen::Base::String GetText(void) const;
115         Tizen::Base::String GetText(int start, int end) const;
116         HorizontalAlignment GetTextAlignment(void) const;
117         Tizen::Graphics::Color GetTextColor(EditTextColor type) const;
118         int GetTextLength(void) const;
119         int GetTextLineCount(void) const;
120         int GetTextSize(void) const;
121         Tizen::Ui::KeypadAction GetKeypadAction(void) const;
122         KeypadStyle GetKeypadStyle(void) const;
123         int GetLineSpacing(void) const;
124         int GetMargin(EditMarginType marginType) const;
125         int GetOverlayKeypadCommandButtonActionId(CommandButtonPosition position) const;
126         Tizen::Base::String GetOverlayKeypadCommandButtonText(CommandButtonPosition position) const;
127         int GetRemainingLength(void) const;
128
129         result AppendCharacter(const Tizen::Base::Character& character);
130         result AppendText(const Tizen::Base::String& text);
131         result BeginBlock(void);
132         result Clear(void);
133         result Copy(void);
134         result Cut(void);
135         result DeleteCharacterAtCursorPosition(void);
136         result HideKeypad(void);
137         result InsertTextAtCursorPosition(const Tizen::Base::String& text);
138         result InsertTextAt(int position, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage);
139         result AppendText(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage);
140         bool IsBlocked(void) const;
141         bool IsClipped(void) const;
142         bool IsKeypadEnabled(void) const;
143         bool IsKeypadActionEnabled(void) const;
144         bool IsLowerCaseModeEnabled(void) const;
145         bool IsOverlayCommandButtonVisible(void) const;
146         bool IsViewModeEnabled(void) const;
147         bool IsTextPredictionEnabled(void) const;
148
149         result Paste(void);
150         result ReleaseBlock(void);
151         result Remove(void);
152         result ShowKeypad(void);
153
154         result AddActionEventListener(Tizen::Ui::IActionEventListener& listener);
155         result AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
156         result AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener);
157         result AddScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener);
158         result AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener);
159         result AddTextEventListener(Tizen::Ui::ITextEventListener& listener);
160         result AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener);
161         result RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener);
162         result RemoveKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
163         result RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener);
164         result RemoveScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener);
165         result RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener);
166         result RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener);
167         result RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener);
168
169         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
170         virtual result OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
171         virtual void OnKeypadActionPerformed(CoreKeypadAction keypadAction);
172         virtual void OnKeypadClosed(void);
173         virtual void OnKeypadOpened(void);
174         virtual void OnKeypadWillOpen(void);
175         virtual void OnKeypadBoundsChanged(void);
176         virtual void OnLanguageChanged(Tizen::Locales::LanguageCode oldLanguage, Tizen::Locales::LanguageCode newLanguage);
177         virtual void OnLinkClicked(Tizen::Ui::_Control& source, const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link);
178         virtual void OnOtherControlSelected(const Tizen::Ui::_Control& source);
179         virtual void OnOverlayControlClosed(const Tizen::Ui::_Control& source);
180         virtual void OnOverlayControlCreated(const Tizen::Ui::_Control& source);
181         virtual void OnOverlayControlOpened(const Tizen::Ui::_Control& source);
182         virtual void OnTextBlockSelected(Tizen::Ui::_Control& source, int start, int end);
183         virtual void OnTextValueChanged(const Tizen::Ui::_Control& source);
184         virtual void OnTextValueChangeCanceled(const Tizen::Ui::_Control& source);
185
186 public:
187         static _EditAreaImpl* GetInstance(EditArea& editArea);
188         static const _EditAreaImpl* GetInstance(const EditArea& pEditArea);
189
190 private:
191         _EditAreaImpl(const _EditAreaImpl&);
192         _EditAreaImpl& operator =(const _EditAreaImpl&);
193
194 private:
195         _Edit* __pEdit;
196         unsigned long __inputModeCategory;
197         EditInputModeCategory __currentInputMode;
198
199         _PublicActionEvent* __pPublicActionEvent;
200         _PublicKeypadEvent* __pPublicKeypadEvent;
201         _PublicLanguageEvent* __pPublicLanguageEvent;
202         _PublicLinkEvent* __pPublicLinkEvent;
203         _PublicScrollPanelEvent* __pPublicScrollPanelEvent;
204         _PublicTextBlockEvent* __pPublicTextBlockEvent;
205         _PublicTextEvent* __pPublicTextEvent;
206         unsigned long __autoLinkMask;
207 }; //_EditAreaImpl
208
209 }}} // Tizen::Ui::Controls
210
211 #endif  // _FUI_CTRL_INTERNAL_EDIT_AREA_IMPL_H_