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