add patch
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_SearchBar.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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_SearchBar.h
20  * @brief               This is the header file for the _SearchBar class.
21  *
22  * This header file contains the declarations of the %_SearchBar class.
23  */
24
25 #ifndef _FUI_CTRL_INTERNAL_SEARCH_BAR_H_
26 #define _FUI_CTRL_INTERNAL_SEARCH_BAR_H_
27
28 #include <FUiCtrlSearchBar.h>
29 #include "FUi_Control.h"
30 #include "FUiCtrl_Button.h"
31 #include "FUiCtrl_Edit.h"
32 #include "FUiCtrl_IActionEventListener.h"
33 #include "FUiCtrl_IKeypadEventListener.h"
34 #include "FUiCtrl_ILanguageEventListener.h"
35 #include "FUiCtrl_ITextBlockEventListener.h"
36 #include "FUiCtrl_ITextEventListener.h"
37 #include "FUiCtrl_ISearchBarEventListener.h"
38 #include "FUiCtrl_KeypadEvent.h"
39 #include "FUiCtrl_LanguageEvent.h"
40 #include "FUiCtrl_SearchBarEvent.h"
41 #include "FUi_IAccessibilityListener.h"
42
43 const int SEARCHBAR_COLOR_MAX = 3;
44 const int SEARCHBAR_BUTTON_COLOR_MAX = 4;
45 const int SEARCHBAR_TEXT_LENGTH_MAX = 500;
46 const int SEARCHBAR_DEFAULT_OPACITY = 100;
47
48 namespace Tizen { namespace Ui { namespace Animations
49 {
50 class _VisualElement;
51 }}} // Tizen::Ui::Animations
52
53 namespace Tizen { namespace Ui { namespace Controls
54 {
55
56 class _Panel;
57 class _SearchBarPresenter;
58 class _ActionEvent;
59 class _TextBlockEvent;
60 class _TextEvent;
61
62 /**
63  * @class _SearchBar
64  * @brief
65  * @since 2.1
66  */
67 class _SearchBar
68         : public _Control
69         , public _IActionEventListener
70         , public _IKeypadEventListener
71         , public _ITextBlockEventListener
72         , public _ITextEventListener
73         , virtual public Tizen::Base::Runtime::IEventListener
74         , virtual public Tizen::Ui::_IUiEventListener
75         , virtual public Tizen::Ui::_IUiEventPreviewer
76         , virtual public Tizen::System::ISettingEventListener
77 {
78         DECLARE_CLASS_BEGIN(_SearchBar, _Control);
79         DECLARE_PROPERTY("buttonActionId", GetPropertyButtonActionId, SetPropertyButtonActionId);
80         DECLARE_PROPERTY("buttonDisabledColor", GetPropertyButtonDisabledColor, SetPropertyButtonDisabledColor);
81         DECLARE_PROPERTY("buttonHighlightedColor", GetPropertyButtonHighlightedColor, SetPropertyButtonHighlightedColor);
82         DECLARE_PROPERTY("buttonNormalColor", GetPropertyButtonNormalColor, SetPropertyButtonNormalColor);
83         DECLARE_PROPERTY("buttonPressedColor", GetPropertyButtonPressedColor, SetPropertyButtonPressedColor);
84         DECLARE_PROPERTY("buttonDisabledTextColor", GetPropertyButtonDisabledTextColor, SetPropertyButtonDisabledTextColor);
85         DECLARE_PROPERTY("buttonHighlightedTextColor", GetPropertyButtonHighlightedTextColor, SetPropertyButtonHighlightedTextColor);
86         DECLARE_PROPERTY("buttonNormalTextColor", GetPropertyButtonNormalTextColor, SetPropertyButtonNormalTextColor);
87         DECLARE_PROPERTY("buttonPressedTextColor", GetPropertyButtonPressedTextColor, SetPropertyButtonPressedTextColor);
88         DECLARE_PROPERTY("searchFieldDisabledColor", GetPropertySearchFieldDisabledColor, SetPropertySearchFieldDisabledColor);
89         DECLARE_PROPERTY("searchFieldHighlightedColor", GetPropertySearchFieldHighlightedColor, SetPropertySearchFieldHighlightedColor);
90         DECLARE_PROPERTY("searchFieldNormalColor", GetPropertySearchFieldNormalColor, SetPropertySearchFieldNormalColor);
91         DECLARE_PROPERTY("searchFieldDisabledTextColor", GetPropertySearchFieldDisabledTextColor, SetPropertySearchFieldDisabledTextColor);
92         DECLARE_PROPERTY("searchFieldHighlightedTextColor", GetPropertySearchFieldHighlightedTextColor, SetPropertySearchFieldHighlightedTextColor);
93         DECLARE_PROPERTY("searchFieldNormalTextColor", GetPropertySearchFieldNormalTextColor, SetPropertySearchFieldNormalTextColor);
94         DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
95         DECLARE_PROPERTY("contentAreaSize", GetPropertyContentAreaSize, SetPropertyContentAreaSize);
96         DECLARE_CLASS_END();
97
98         result SetPropertyButtonActionId(const Tizen::Ui::Variant& actionId);
99         Tizen::Ui::Variant GetPropertyButtonActionId(void) const;
100         result SetPropertyButtonDisabledColor(const Tizen::Ui::Variant& color);
101         Tizen::Ui::Variant GetPropertyButtonDisabledColor(void) const;
102         result SetPropertyButtonHighlightedColor(const Tizen::Ui::Variant& color);
103         Tizen::Ui::Variant GetPropertyButtonHighlightedColor(void) const;
104         result SetPropertyButtonNormalColor(const Tizen::Ui::Variant& color);
105         Tizen::Ui::Variant GetPropertyButtonNormalColor(void) const;
106         result SetPropertyButtonPressedColor(const Tizen::Ui::Variant& color);
107         Tizen::Ui::Variant GetPropertyButtonPressedColor(void) const;
108         result SetPropertyButtonDisabledTextColor(const Tizen::Ui::Variant& textColor);
109         Tizen::Ui::Variant GetPropertyButtonDisabledTextColor(void) const;
110         result SetPropertyButtonHighlightedTextColor(const Tizen::Ui::Variant& textColor);
111         Tizen::Ui::Variant GetPropertyButtonHighlightedTextColor(void) const;
112         result SetPropertyButtonNormalTextColor(const Tizen::Ui::Variant& textColor);
113         Tizen::Ui::Variant GetPropertyButtonNormalTextColor(void) const;
114         result SetPropertyButtonPressedTextColor(const Tizen::Ui::Variant& textColor);
115         Tizen::Ui::Variant GetPropertyButtonPressedTextColor(void) const;
116         result SetPropertySearchFieldDisabledColor(const Tizen::Ui::Variant& color);
117         Tizen::Ui::Variant GetPropertySearchFieldDisabledColor(void) const;
118         result SetPropertySearchFieldHighlightedColor(const Tizen::Ui::Variant& color);
119         Tizen::Ui::Variant GetPropertySearchFieldHighlightedColor(void) const;
120         result SetPropertySearchFieldNormalColor(const Tizen::Ui::Variant& color);
121         Tizen::Ui::Variant GetPropertySearchFieldNormalColor(void) const;
122         result SetPropertySearchFieldDisabledTextColor(const Tizen::Ui::Variant& textColor);
123         Tizen::Ui::Variant GetPropertySearchFieldDisabledTextColor(void) const;
124         result SetPropertySearchFieldHighlightedTextColor(const Tizen::Ui::Variant& textColor);
125         Tizen::Ui::Variant GetPropertySearchFieldHighlightedTextColor(void) const;
126         result SetPropertySearchFieldNormalTextColor(const Tizen::Ui::Variant& textColor);
127         Tizen::Ui::Variant GetPropertySearchFieldNormalTextColor(void) const;
128         result SetPropertyColor(const Tizen::Ui::Variant& color);
129         Tizen::Ui::Variant GetPropertyColor(void) const;
130         result SetPropertyContentAreaSize(const Tizen::Ui::Variant& size);
131         Tizen::Ui::Variant GetPropertyContentAreaSize(void) const;
132
133 public:
134         _SearchBar(void);
135         virtual ~_SearchBar(void);
136
137         static _SearchBar* CreateSearchBarN(void);
138         result Initialize(bool enableSearchBarButton = true, CoreKeypadAction keypadAction = CORE_KEYPAD_ACTION_SEARCH);
139         Tizen::Ui::_Control* GetContent(void) const;
140         result SetContent(const Tizen::Ui::_Control* pContent);
141         result UpdateContentArea(bool invalidate = true);
142         result SetContentAreaVisible(bool visible, bool isCalledByApp = false);
143         bool IsContentAreaVisible(void) const;
144         result SetContentAreaSize(const Tizen::Graphics::Dimension& size);
145         Tizen::Graphics::Dimension GetContentAreaSize(void) const;
146         SearchBarMode GetMode(void) const;
147         bool IsModeLocked(void) const;
148         result SetMode(SearchBarMode mode, bool isCalledByApp = false);
149         result SetModeLocked(bool modeLocked);
150         int GetButtonActionId(void) const;
151         Tizen::Graphics::Color GetButtonColor(SearchBarButtonStatus status) const;
152         Tizen::Graphics::Color GetButtonTextColor(SearchBarButtonStatus status) const;
153         SearchBarButtonStatus GetButtonStatus(void) const;
154         result SetButtonText(const Tizen::Base::String& text);
155         result SetButtonActionId(int actionId);
156         result SetButtonEnabled(bool enabled);
157         result SetButtonColor(SearchBarButtonStatus status, const Tizen::Graphics::Color& color);
158         result SetButtonTextColor(SearchBarButtonStatus status, const Tizen::Graphics::Color& color);
159         result AppendCharacter(const Tizen::Base::Character& character);
160         result AppendText(const Tizen::Base::String& text);
161         result SetText(const Tizen::Base::String& text);
162         result InsertCharacterAt(int index, const Tizen::Base::Character& character);
163         result InsertTextAt(int index, const Tizen::Base::String& text);
164         result DeleteCharacterAt(int index);
165         result Clear(void);
166         int GetTextLength(void) const;
167         Tizen::Base::String GetText(void) const;
168         Tizen::Base::String GetText(int start, int end) const;
169         int GetLimitLength(void) const;
170         result SetLimitLength(int limitLength);
171         result ShowKeypad(void) const;
172         result HideKeypad(void);
173         float GetSearchFieldTextSizeF(void) const;
174         result SetSearchFieldTextSize(float size);
175         result GetBlockRange(int& start, int& end) const;
176         result ReleaseBlock(void);
177         result SetBlockRange(int start, int end);
178         result RemoveTextBlock(void);
179         Tizen::Graphics::Color GetColor(void) const;
180         Tizen::Graphics::Color GetSearchFieldColor(SearchFieldStatus status) const;
181         Tizen::Graphics::Color GetSearchFieldTextColor(SearchFieldStatus status) const;
182         result SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
183         result SetColor(const Tizen::Graphics::Color& color);
184         result SetSearchFieldColor(SearchFieldStatus status, const Tizen::Graphics::Color& color);
185         result SetSearchFieldTextColor(SearchFieldStatus status, const Tizen::Graphics::Color& color);
186         Tizen::Base::String GetGuideText(void) const;
187         result SetGuideText(const Tizen::Base::String& guideText);
188         Tizen::Graphics::Color GetGuideTextColor(void) const;
189         result SetGuideTextColor(const Tizen::Graphics::Color& color);
190         int GetCursorPosition(void) const;
191         result SetCursorPosition(int index);
192         bool IsLowerCaseModeEnabled(void) const;
193         void SetLowerCaseModeEnabled(bool enable);
194         EllipsisPosition GetEllipsisPosition(void) const;
195         result SetEllipsisPosition(EllipsisPosition position);
196         CoreKeypadAction GetKeypadAction(void) const;
197         bool IsTextPredictionEnabled(void) const;
198         result SetTextPredictionEnabled(bool enable);
199
200         result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const;
201         result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode);
202
203         result AddActionEventListener(const _IActionEventListener& listener);
204         result RemoveActionEventListener(const _IActionEventListener& listener);
205         result AddKeypadEventListener(const _IKeypadEventListener& listener);
206         result RemoveKeypadEventListener(const _IKeypadEventListener& listener);
207         result AddTextBlockEventListener(const _ITextBlockEventListener& listener);
208         result RemoveTextBlockEventListener(const _ITextBlockEventListener& listener);
209         result AddTextEventListener(const _ITextEventListener& listener);
210         result RemoveTextEventListener(const _ITextEventListener& listener);
211         result AddSearchBarEventListener(const _ISearchBarEventListener& listener);
212         result RemoveSearchBarEventListener(const _ISearchBarEventListener& listener);
213         result AddLanguageEventListener(const _ILanguageEventListener& listener);
214         result RemoveLanguageEventListener(const _ILanguageEventListener& listener);
215
216         void SetContentsArea(void);
217
218         Tizen::Graphics::Bitmap* GetBackgroundBitmap(void) const;
219         bool IsUsableCancelButton(void) const;
220
221         _Button* GetSearchBarButton(void) const;
222         _Edit* GetSearchField(void);
223         _Control* GetSearchBarContainer(void) const;
224         _Control* GetClippedGroupControl(void) const;
225
226         result SendSearchBarEvent(_SearchBarEventStatus status);
227         void SetHeaderVisibleState(bool visible);
228         void SetContentDimming(void);
229         bool IsContentAttachable(const _Control* pContent);
230         result ResizeCancelButton(void);
231         void RecalculateButtonBounds(void);
232         SearchFieldStatus GetCurrentStatus(void);
233         void  SetEditTextFilter(IEditTextFilter* pFilter);
234         void SendOpaqueCommand (const Tizen::Base::String& command);
235         void SetFocusCallbackParameter(bool state);
236         bool IsFocusCallbackToBeFired(void) const;
237
238         virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
239         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
240
241         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
242
243         virtual void OnKeypadWillOpen(void);
244         virtual void OnKeypadOpened(void);
245         virtual void OnKeypadClosed(void);
246         virtual void OnKeypadBoundsChanged(void);
247         virtual void OnKeypadActionPerformed(CoreKeypadAction keypadAction);
248
249         virtual void OnTextBlockSelected(Tizen::Ui::_Control& source, int start, int end);
250
251         virtual void OnTextValueChanged(const Tizen::Ui::_Control& source);
252         virtual void OnTextValueChangeCanceled(const Tizen::Ui::_Control& source);
253
254         virtual void OnBoundsChanged(void);
255         virtual void OnChangeLayout(_ControlOrientation orientation);
256         virtual result OnAttachedToMainTree(void);
257         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
258         virtual void OnFontInfoRequested(unsigned long& style, int& size);
259         virtual bool OnFocusGained(const _Control& source);
260         virtual bool OnFocusLost(const _Control& source);
261         virtual void OnDrawFocus(void);
262         virtual bool IsChildControlFocusManage(void) const;
263         virtual bool OnPreviewKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
264         virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
265
266         virtual void OnSettingChanged(Tizen::Base::String& key);
267         virtual Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds);
268
269 protected:
270         virtual void OnDraw(void);
271
272 private:
273         _SearchBar(const _SearchBar&);
274         _SearchBar& operator =(const _SearchBar&);
275
276         _ButtonStatus ConvertSearchBarButtonStatus(SearchBarButtonStatus status);
277         EditStatus ConvertSearchBarStatus(SearchFieldStatus status);
278
279         result CreateSearchField(void);
280         result CreateCancelButton(void);
281         result CreateFrontButton(void);
282         result CreateContentsArea(void);
283         result CreateClippedGroupControl(void);
284         void InitializeAccessibility(void);
285         void FireButtonActionEvent(const Tizen::Ui::_Control& source, int actionId);
286
287         Tizen::Ui::_Control* GetParentForm(void) const;
288
289         _SearchBarPresenter* __pSearchBarPresenter;
290
291         _Control* __pClippedGroupControl;
292         _Edit* __pEdit;
293         _Button* __pCancelButton;
294         _Control* __pContainer;
295         _Control* __pContentControl;
296
297         int __actionId;
298         int __searchBarStyle;
299
300         bool __isButtonEnabled;
301         bool __isUsableCancelButton;
302         bool __isUserContainerBounds;
303         bool __isCancelActionInProgress;
304         bool __isUserGuideTextColor;
305         bool __isKeypadOpening;
306         bool __isupdateContentBounds;
307         bool __isFocusCallbackToBeFired;
308         bool __isButtonTextChangedByApp;
309         bool __contentVisibilitySetByApp;
310         bool __isFocusUiInitialized;
311
312         CoreKeypadAction __keypadAction;
313
314         Tizen::Graphics::Bitmap* __pBackgroundBitmap;
315         Tizen::Graphics::Color __backgroundColor;
316         Tizen::Graphics::Color __contentColor;
317
318         Tizen::Graphics::Color __color[SEARCHBAR_COLOR_MAX];
319         Tizen::Graphics::Color __textColor[SEARCHBAR_COLOR_MAX];
320         Tizen::Graphics::Color __buttonColor[SEARCHBAR_BUTTON_COLOR_MAX];
321         Tizen::Graphics::Color __buttonTextColor[SEARCHBAR_BUTTON_COLOR_MAX];
322         Tizen::Graphics::Color __guideTextColor[SEARCHBAR_COLOR_MAX];
323
324         Tizen::Graphics::FloatRectangle __contentAreaBounds;
325
326         _ActionEvent* __pActionEvent;
327         _KeypadEvent* __pKeypadEvent;
328         _TextBlockEvent* __pTextBlockEvent;
329         _TextEvent* __pTextEvent;
330         _SearchBarEvent* __pSearchBarEvent;
331         _LanguageEvent* __pLanguageEvent;
332
333         Tizen::Ui::_AccessibilityElement* __pAccessibilitySearchBarElement;
334         static const byte _SEARCH_CONTENT_DIM_OPACITY = 128; //50%  opacity
335         static const float _TOUCH_PRESS_THRESHOLD_INSENSITIVE = 0.08f;
336 };  // _SearchBar
337
338 }}} // Tizen::Ui::Controls
339
340 #endif  // _FUI_CTRL_INTERNAL_SEARCH_BAR_H_