Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_ExpandableEditAreaImpl.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 _FUI_CTRL_INTERNAL_EXPANDABLEEDITAREA_IMPL_H_
18 #define _FUI_CTRL_INTERNAL_EXPANDABLEEDITAREA_IMPL_H_
19
20 #include <FUiCtrlExpandableEditArea.h>
21 #include <FUiITouchEventListener.h>
22 #include "FUi_ControlImpl.h"
23 #include "FUi_IFocusEventListener.h"
24 #include "FUiCtrl_Edit.h"
25 #include "FUiCtrl_IExpandableEditAreaEventListener.h"
26 #include "FUiCtrl_IKeypadEventListener.h"
27 #include "FUiCtrl_ILanguageEventListener.h"
28 #include "FUiCtrl_ITextEventListener.h"
29 #include "FUiCtrl_ITextBlockEventListener.h"
30 #include "FUiCtrl_ITokenFilter.h"
31 #include "FUiCtrl_PublicExpandableEditAreaEvent.h"
32 #include "FUiCtrl_PublicKeypadEvent.h"
33 #include "FUiCtrl_PublicLanguageEvent.h"
34 #include "FUiCtrl_PublicTextBlockEvent.h"
35 #include "FUiCtrl_PublicTextEvent.h"
36
37 namespace Tizen { namespace Ui { namespace Animations
38 {
39 class _VisualElement;
40 }}} // Tizen::Ui::Animation
41
42 namespace Tizen { namespace Ui { namespace Controls
43 {
44
45 class _TokenEdit;
46 class _Edit;
47
48 class _ExpandableEditAreaImpl
49         : public _ControlImpl
50         , virtual public Tizen::Base::Runtime::IEventListener
51         , public _ITextEventListener
52         , public _IExpandableEditAreaEventListener
53         , public _ITextBlockEventListener
54         , public _IKeypadEventListener
55         , public _ILanguageEventListener
56         , public _ITokenFilter
57 {
58 public:
59         static _ExpandableEditAreaImpl* CreateExpandableEditAreaImplN(ExpandableEditArea* pControl, const Tizen::Graphics::Rectangle& rect, ExpandableEditAreaStyle style, ExpandableEditAreaTitleStyle titleStyle);
60         _ExpandableEditAreaImpl(ExpandableEditArea* pPublic, _Edit* pCore);
61         virtual ~_ExpandableEditAreaImpl(void);
62
63         virtual const char* GetPublicClassName(void) const;
64         virtual const ExpandableEditArea& GetPublic(void) const;
65         virtual ExpandableEditArea& GetPublic(void);
66         virtual const _Edit& GetCore(void) const;
67         virtual _Edit& GetCore(void);
68
69         result Construct(const Tizen::Graphics::Rectangle& rect, ExpandableEditAreaStyle style, ExpandableEditAreaTitleStyle titleStyle, int maxLines = 10);
70         result CreateExpandableEditArea(const Tizen::Graphics::Rectangle& rect, ExpandableEditAreaStyle style, ExpandableEditAreaTitleStyle titleStyle, int maxLines);
71         int GetMargin(EditMarginType marginType) const;
72         result SetMargin(EditMarginType marginType, int margin);
73         Tizen::Ui::KeypadAction GetKeypadAction(void) const;
74         result SetKeypadAction(Tizen::Ui::KeypadAction keypadAction);
75         KeypadStyle GetKeypadStyle(void) const;
76         result SetKeypadStyle(KeypadStyle keypadStyle);
77         result HideKeypad(void);
78         int GetTextSize(void) const;
79         result SetTextSize(int size);
80         Tizen::Graphics::Color GetColor(EditStatus status) const;
81         Tizen::Graphics::Color GetTextColor(EditTextColor type) const;
82         result SetBackgroundBitmap(EditStatus status, const Tizen::Graphics::Bitmap& bitmap);
83         result SetColor(EditStatus status, const Tizen::Graphics::Color& color);
84         result SetTextColor(EditTextColor type, const Tizen::Graphics::Color& color);
85         Tizen::Base::String GetText(int start, int end) const;
86         result AddExpandableEditAreaEventListener(IExpandableEditAreaEventListener& listener);
87         result RemoveExpandableEditAreaEventListener(IExpandableEditAreaEventListener& listener);
88         result AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
89         result RemoveKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
90         result AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener);
91         result RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener);
92         result AddTextEventListener(Tizen::Ui::ITextEventListener& listener);
93         result AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener);
94         result RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener);
95         result RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener);
96         result SetLowerCaseModeEnabled(bool enable);
97         bool IsLowerCaseModeEnabled(void) const;
98         result SetCursorPosition(int position);
99         int GetCursorPosition(void) const;
100         Tizen::Base::String GetText(void) const;
101         int GetTextLength(void) const;
102         void SetMaxLineCount(int maxLineCount);
103         int GetMaxLineCount(void) const;
104         result SetText(const Tizen::Base::String& text);
105         result InsertTextAt(int index, const Tizen::Base::String& text);
106         result AppendText(const Tizen::Base::String& text);
107         result AppendCharacter(const Tizen::Base::Character& character);
108         result InsertTextAt(int position, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage);
109         result AppendText(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage);
110         result Clear(void);
111         result DeleteCharacterAt(int index);
112         result InsertCharacterAt(int index, const Tizen::Base::Character& character);
113         result SetTitleText(const Tizen::Base::String& title);
114         Tizen::Base::String GetTitleText(void) const;
115         result SetGuideText(const Tizen::Base::String& guideText);
116         Tizen::Base::String GetGuideText(void) const;
117         Tizen::Graphics::Color GetGuideTextColor(void) const;
118         result SetGuideTextColor(const Tizen::Graphics::Color& color);
119         int GetLineSpacing (void) const;
120         result SetLineSpacing (int multiplier, int extra);
121         Tizen::Graphics::Color GetTitleTextColor(EditStatus status) const;
122         result SetTitleTextColor(EditStatus status, const Tizen::Graphics::Color& color);
123         Tizen::Graphics::Color GetTokenColor(ExpandableEditAreaTokenStatus status) const;
124         result SetTokenColor(ExpandableEditAreaTokenStatus status, const Tizen::Graphics::Color& color);
125         Tizen::Graphics::Color GetTokenTextColor(void) const;
126         Tizen::Graphics::Color GetSelectedTokenTextColor(void) const;
127         result SetTokenTextColor(const Tizen::Graphics::Color& color);
128         result SetSelectedTokenTextColor(const Tizen::Graphics::Color& color);
129         int GetLimitLength(void) const;
130         result SetLimitLength(int limitLength);
131         result SetAutoResizingEnabled(bool enable);
132         bool IsAutoResizingEnabled(void) const;
133         void SetAutoShrinkModeEnabled(bool enable);
134         bool IsAutoShrinkModeEnabled(void) const;
135
136         void SetKeypadEnabled(bool enable);
137         bool IsKeypadEnabled(void) const;
138         result SetTextPredictionEnabled(bool enable);
139         bool IsTextPredictionEnabled(void) const;
140
141         result ShowKeypad(void);
142         int GetTextLineCount(void) const;
143         result GetBlockRange(int& start, int& end) const;
144         result ReleaseBlock(void);
145         result RemoveTextBlock(void);
146         result SetBlockRange(int start, int end);
147
148         // for token
149         ITokenFilter* GetTokenFilter(void) const;
150         result SetTokenFilter(const ITokenFilter* pFilter);
151         result AppendToken(const Tizen::Base::String& token);
152         result InsertTokenAt(int index, const Tizen::Base::String& token);
153         Tizen::Base::String GetTokenAt(int index) const;
154         int GetTokenCount(void) const;
155         int GetSelectedTokenIndex(void) const;
156         bool IsTokenEditModeEnabled(void) const;
157         result RemoveTokenAt(int index);
158         result SetTokenSelected(int index, bool selected);
159         result SetTokenEditModeEnabled(bool enable);
160
161         result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const;
162         result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode);
163
164 public:
165         virtual result OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
166
167         virtual void OnTextValueChanged(const Tizen::Ui::_Control& source);
168         virtual void OnTextValueChangeCanceled(const Tizen::Ui::_Control& source);
169
170         virtual void OnExpandableEditAreaLineAdded(const Tizen::Ui::_Control& source, int newLineCount);
171         virtual void OnExpandableEditAreaLineRemoved(const Tizen::Ui::_Control& source, int newLineCount);
172
173         virtual void OnTextBlockSelected(Tizen::Ui::_Control& source, int start, int end);
174
175         virtual void OnKeypadWillOpen(void);
176         virtual void OnKeypadOpened(void);
177         virtual void OnKeypadClosed(void);
178         virtual void OnKeypadBoundsChanged(void);
179         virtual void OnKeypadActionPerformed(CoreKeypadAction keypadAction);
180
181         virtual void OnLanguageChanged(Tizen::Locales::LanguageCode oldLanguage, Tizen::Locales::LanguageCode newLanguage);
182
183         virtual bool ReplaceToken(const Tizen::Base::String& token, Tizen::Base::String& replacement);
184
185 public:
186         static _ExpandableEditAreaImpl* GetInstance(ExpandableEditArea& expandableEditArea);
187         static const _ExpandableEditAreaImpl* GetInstance(const ExpandableEditArea& expandableEditArea);
188
189 protected:
190         virtual result Dispose(void);
191
192 private:
193         _ExpandableEditAreaImpl(const _ExpandableEditAreaImpl&);
194         _ExpandableEditAreaImpl& operator =(const _ExpandableEditAreaImpl&);
195
196 private:
197         friend class _Edit;
198         _Edit* __pExpandableEditArea;
199         ExpandableEditAreaStyle __expandableEditAreaStyle;
200         ExpandableEditAreaTitleStyle __expandableEditAreaTitleStyle;
201         int __maxLineCount;
202
203         _PublicTextEvent* __pPublicTextEvent;
204         _PublicExpandableEditAreaEvent* __pPublicExpandableEditAreaEvent;
205         _PublicTextBlockEvent* __pPublicTextBlockEvent;
206         _PublicKeypadEvent* __pPublicKeypadEvent;
207         _PublicLanguageEvent* __pPublicLanguageEvent;
208
209         ITokenFilter* __pTokenFilter;
210 };      // _ExpandableEditAreaImpl
211
212 }}} // Tizen::Ui::Controls
213
214 #endif  // _FUICTRL__EXPANDABLE_EDIT_AREA_IMPL_H_