2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://floralicense.org/license/
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.
18 * @file FUiCtrl_TokenEdit.cpp
19 * @brief This is the implementation file for the _TokenEdit class.
22 #include <FBaseSysLog.h>
23 #include "FUiCtrl_TokenEdit.h"
24 #include "FUiCtrl_TokenEditPresenter.h"
26 #include "FUi_AccessibilityContainer.h"
27 #include "FUi_AccessibilityElement.h"
29 using namespace Tizen::Base;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Ui;
33 namespace Tizen { namespace Ui { namespace Controls
36 IMPLEMENT_PROPERTY(_TokenEdit);
38 _TokenEdit::_TokenEdit(void)
40 , __pTokenEditPresenter(null)
41 , __isSelectedTokenTextColorSet(false)
42 , __pTokenFilter(null)
43 , __pDescriptionTextAccessibilityElement(null)
44 , __pHiddenTokenCountAccessibilityElement(null)
45 , __pExpandableButtonAccessibilityElement(null)
47 GET_COLOR_CONFIG(TOKENEDIT::TOKEN_BG_NORMAL, __tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL]);
48 GET_COLOR_CONFIG(TOKENEDIT::TOKEN_BG_SELECTED, __tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED]);
50 GET_COLOR_CONFIG(TOKENEDIT::TOKEN_TEXT_NORMAL, __tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL]);
51 GET_COLOR_CONFIG(TOKENEDIT::TOKEN_TEXT_SELECTED, __tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED]);
53 _AccessibilityContainer* pContainer = null;
54 pContainer = GetAccessibilityContainer();
57 pContainer->Activate(true);
61 _TokenEdit::~_TokenEdit(void)
67 _TokenEdit::CreateTokenEditN(void)
69 _TokenEditPresenter* pPresenter = _TokenEditPresenter::CreateTokenEditPresenterN();
70 result r = GetLastResult();
71 SysTryReturn(NID_UI_CTRL, pPresenter != null, null, r, "[%s] Propagating.", GetErrorMessage(r));
73 _TokenEdit* pTokenEdit = new (std::nothrow) _TokenEdit();
74 SysTryCatch(NID_UI_CTRL, pTokenEdit != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
75 SysTryCatch(NID_UI_CTRL, GetLastResult() == E_SUCCESS, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
77 pTokenEdit->AcquireHandle();
79 pTokenEdit->SetPresenter(*pPresenter);
80 pTokenEdit->__pTokenEditPresenter = pPresenter;
91 _TokenEdit::OnDraw(void)
95 if (__pTokenEditPresenter == null)
100 Canvas* pCanvas = GetCanvasN();
101 SysTryReturnVoidResult(NID_UI_CTRL, pCanvas, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
103 r = __pTokenEditPresenter->Draw(*pCanvas);
104 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
110 _TokenEdit::SetTokenFilter(const _ITokenFilter* pFilter)
112 result r = E_SUCCESS;
114 __pTokenFilter = const_cast <_ITokenFilter*>(pFilter);
120 _TokenEdit::GetTokenFilter(void) const
122 return __pTokenFilter;
126 _TokenEdit::AppendToken(const String& token)
128 result r = E_SUCCESS;
130 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
132 r = __pTokenEditPresenter->MakeToken(token);
133 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
139 _TokenEdit::InsertTokenAt(int index, const String& token)
141 result r = E_SUCCESS;
143 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
145 r = __pTokenEditPresenter->InsertTokenAt(index, token, true);
146 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
152 _TokenEdit::GetTokenAt(int index) const
154 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
156 return __pTokenEditPresenter->GetTokenAt(index);
160 _TokenEdit::GetTokenCount(void) const
162 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
164 return __pTokenEditPresenter->GetTokenCount();
168 _TokenEdit::GetSelectedTokenIndex(void) const
170 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
172 return __pTokenEditPresenter->GetSelectedTokenIndex();
176 _TokenEdit::IsTokenEditModeEnabled(void) const
178 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
180 Variant var = GetProperty("tokenEditModeEnabled");
186 _TokenEdit::RemoveTokenAt(int index)
188 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
190 return __pTokenEditPresenter->RemoveTokenAt(index, true);
194 _TokenEdit::SetTokenSelected(int index, bool selected)
196 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
198 return __pTokenEditPresenter->SetTokenSelected(index, selected);
202 _TokenEdit::SetTokenEditModeEnabled(bool enable)
204 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
208 return SetProperty("tokenEditModeEnabled", var);
212 _TokenEdit::GetTokenColor(ExpandableEditAreaTokenStatus status) const
218 case EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL :
219 var = GetProperty("normalTokenColor");
222 case EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED :
223 var = GetProperty("selectedTokenColor");
230 return var.ToColor();
234 _TokenEdit::GetTokenTextColor(void) const
236 Variant var = GetProperty("tokenTextColor");
238 return var.ToColor();
242 _TokenEdit::SetTokenColor(ExpandableEditAreaTokenStatus status, const Color& color)
244 result r = E_SUCCESS;
249 case EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL :
250 r = SetProperty("normalTokenColor", var);
253 case EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED :
254 r = SetProperty("selectedTokenColor", var);
265 _TokenEdit::SetTokenTextColor(const Color& color)
268 return SetProperty("tokenTextColor", var);
272 _TokenEdit::GetSelectedTokenTextColor(void) const
274 Variant var = GetProperty("selectedTokenTextColor");
276 return var.ToColor();
280 _TokenEdit::SetSelectedTokenTextColor(const Color& color)
284 return SetProperty("selectedTokenTextColor", var);
288 _TokenEdit::SetTitleText(const String& title)
290 result r = E_SUCCESS;
292 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
294 __pTokenEditPresenter->SetDescriptionText(title);
296 r = __pTokenEditPresenter->CalculateDescriptionTextRect(title);
297 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
299 r = __pTokenEditPresenter->CalculateTokenPositionFromIndex(0);
300 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
302 r = __pTokenEditPresenter->SetInitialBounds();
303 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
309 _TokenEdit::GetTitleText(void) const
311 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
313 return __pTokenEditPresenter->GetDescriptionText();
317 _TokenEdit::SetAutoShrinkModeEnabled(bool enable)
319 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
321 __pTokenEditPresenter->SetAutoShrinkModeEnabled(enable);
325 _TokenEdit::IsAutoShrinkModeEnabled(void) const
327 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
329 return __pTokenEditPresenter->IsAutoShrinkModeEnabled();
333 _TokenEdit::ProcessTokenFiltering(const String& inputString, String& replaceString, bool& enable)
337 enable = __pTokenFilter->ReplaceToken(inputString, replaceString);
344 _TokenEdit::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
351 if (__pTokenEditPresenter == null)
355 return __pTokenEditPresenter->OnTouchPressed(source, touchinfo);
359 _TokenEdit::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
365 if (__pTokenEditPresenter == null)
369 return __pTokenEditPresenter->OnTouchReleased(source, touchinfo);
373 _TokenEdit::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
379 if (__pTokenEditPresenter == null)
383 return __pTokenEditPresenter->OnTouchMoved(source, touchinfo);
387 _TokenEdit::SetPropertyNormalTokenColor(const Variant& color)
391 __tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL] = color.ToColor();
397 _TokenEdit::GetPropertyNormalTokenColor(void) const
401 return Variant(__tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL]);
405 _TokenEdit::SetPropertySelectedTokenColor(const Variant& color)
409 __tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED] = color.ToColor();
415 _TokenEdit::GetPropertySelectedTokenColor(void) const
419 return Variant(__tokenColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED]);
423 _TokenEdit::SetPropertyTokenTextColor(const Variant& color)
427 __tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL] = color.ToColor();
428 if(!__isSelectedTokenTextColorSet)
429 __tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED] = color.ToColor();
435 _TokenEdit::GetPropertyTokenTextColor(void) const
439 return Variant(__tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL]);
443 _TokenEdit::SetPropertySelectedTokenTextColor(const Variant& color)
447 __isSelectedTokenTextColorSet = true;
449 __tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED] = color.ToColor();
455 _TokenEdit::GetPropertySelectedTokenTextColor(void) const
459 return Variant(__tokenTextColor[EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED]);
464 _TokenEdit::SetPropertyTokenEditModeEnabled(const Variant& enable)
466 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
470 return __pTokenEditPresenter->SetTokenEditModeEnabled(enable.ToBool());
474 _TokenEdit::GetPropertyTokenEditModeEnabled(void) const
476 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
480 bool enabled = __pTokenEditPresenter->IsTokenEditModeEnabled();
482 return Variant(enabled);
486 _TokenEdit::OnAttachedToMainTree(void)
488 _AccessibilityContainer* pContainer = null;
489 pContainer = GetAccessibilityContainer();
492 if (__pDescriptionTextAccessibilityElement)
497 if (GetEditStyle() & EDIT_STYLE_TITLE_LEFT)
499 __pDescriptionTextAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
500 if (__pDescriptionTextAccessibilityElement)
502 __pDescriptionTextAccessibilityElement->SetTrait(ACCESSIBILITY_TRAITS_TEXT_FIELD);
503 pContainer->AddElement(*__pDescriptionTextAccessibilityElement);
507 if (IsAutoShrinkModeEnabled())
509 __pHiddenTokenCountAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
510 if (__pHiddenTokenCountAccessibilityElement)
512 __pHiddenTokenCountAccessibilityElement->SetTrait(ACCESSIBILITY_TRAITS_TEXT_FIELD);
513 pContainer->AddElement(*__pHiddenTokenCountAccessibilityElement);
516 __pExpandableButtonAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
517 if (__pExpandableButtonAccessibilityElement)
519 __pExpandableButtonAccessibilityElement->SetTrait(ACCESSIBILITY_TRAITS_EXPAND_BUTTON);
520 pContainer->AddElement(*__pExpandableButtonAccessibilityElement);
529 _TokenEdit::OnBoundsChanged(void)
531 SysAssertf(__pTokenEditPresenter != null, "_TokenEditPresenter instance is null");
533 __pTokenEditPresenter->OnBoundsChanged();
538 }}} //Tizen::Ui::Controls