2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
19 * @file FUiCtrl_SearchBar.h
20 * @brief This is the header file for the _SearchBar class.
22 * This header file contains the declarations of the %_SearchBar class.
25 #ifndef _FUI_CTRL_INTERNAL_SEARCH_BAR_H_
26 #define _FUI_CTRL_INTERNAL_SEARCH_BAR_H_
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"
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;
48 namespace Tizen { namespace Ui { namespace Animations
51 }}} // Tizen::Ui::Animations
53 namespace Tizen { namespace Ui { namespace Controls
57 class _SearchBarPresenter;
59 class _TextBlockEvent;
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
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);
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;
135 virtual ~_SearchBar(void);
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);
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);
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);
200 result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const;
201 result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode);
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);
216 void SetContentsArea(void);
218 Tizen::Graphics::Bitmap* GetBackgroundBitmap(void) const;
219 bool IsUsableCancelButton(void) const;
221 _Button* GetSearchBarButton(void) const;
222 _Edit* GetSearchField(void);
223 _Control* GetSearchBarContainer(void) const;
224 _Control* GetClippedGroupControl(void) const;
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;
238 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
240 virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
242 virtual void OnKeypadWillOpen(void);
243 virtual void OnKeypadOpened(void);
244 virtual void OnKeypadClosed(void);
245 virtual void OnKeypadBoundsChanged(void);
246 virtual void OnKeypadActionPerformed(CoreKeypadAction keypadAction);
248 virtual void OnTextBlockSelected(Tizen::Ui::_Control& source, int start, int end);
250 virtual void OnTextValueChanged(const Tizen::Ui::_Control& source);
251 virtual void OnTextValueChangeCanceled(const Tizen::Ui::_Control& source);
253 virtual void OnBoundsChanged(void);
254 virtual void OnChangeLayout(_ControlOrientation orientation);
255 virtual result OnAttachedToMainTree(void);
256 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
257 virtual void OnFontInfoRequested(unsigned long& style, int& size);
258 virtual bool OnFocusGained(const _Control& source);
259 virtual bool OnFocusLost(const _Control& source);
260 virtual void OnDrawFocus(void);
261 virtual void OnFocusModeStateChanged(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);
266 virtual void OnSettingChanged(Tizen::Base::String& key);
267 virtual Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds);
270 virtual void OnDraw(void);
273 _SearchBar(const _SearchBar&);
274 _SearchBar& operator =(const _SearchBar&);
276 _ButtonStatus ConvertSearchBarButtonStatus(SearchBarButtonStatus status);
277 EditStatus ConvertSearchBarStatus(SearchFieldStatus status);
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);
287 Tizen::Ui::_Control* GetParentForm(void) const;
289 _SearchBarPresenter* __pSearchBarPresenter;
291 _Control* __pClippedGroupControl;
293 _Button* __pCancelButton;
294 _Control* __pContainer;
295 _Control* __pContentControl;
298 int __searchBarStyle;
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 __isInFocusMode;
311 bool __isFocusUiInitialized;
313 CoreKeypadAction __keypadAction;
315 Tizen::Graphics::Bitmap* __pBackgroundBitmap;
316 Tizen::Graphics::Color __backgroundColor;
317 Tizen::Graphics::Color __contentColor;
319 Tizen::Graphics::Color __color[SEARCHBAR_COLOR_MAX];
320 Tizen::Graphics::Color __textColor[SEARCHBAR_COLOR_MAX];
321 Tizen::Graphics::Color __buttonColor[SEARCHBAR_BUTTON_COLOR_MAX];
322 Tizen::Graphics::Color __buttonTextColor[SEARCHBAR_BUTTON_COLOR_MAX];
323 Tizen::Graphics::Color __guideTextColor[SEARCHBAR_COLOR_MAX];
325 Tizen::Graphics::FloatRectangle __contentAreaBounds;
327 _ActionEvent* __pActionEvent;
328 _KeypadEvent* __pKeypadEvent;
329 _TextBlockEvent* __pTextBlockEvent;
330 _TextEvent* __pTextEvent;
331 _SearchBarEvent* __pSearchBarEvent;
332 _LanguageEvent* __pLanguageEvent;
334 Tizen::Ui::_AccessibilityElement* __pAccessibilitySearchBarElement;
335 static const byte _SEARCH_CONTENT_DIM_OPACITY = 128; //50% opacity
336 static const float _TOUCH_PRESS_THRESHOLD_INSENSITIVE = 0.08f;
339 }}} // Tizen::Ui::Controls
341 #endif // _FUI_CTRL_INTERNAL_SEARCH_BAR_H_