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_Keypad.cpp
20 * @brief This file contains implementation of _Keypad class
22 * This file contains implementation of _Keypad class.
25 #include <FBaseSysLog.h>
26 #include <FSysSystemInfo.h>
27 #include <FGrp_BitmapImpl.h>
28 #include <FSys_SettingInfoImpl.h>
29 #include "FUi_AccessibilityContainer.h"
30 #include "FUi_AccessibilityElement.h"
31 #include "FUi_EcoreEvas.h"
32 #include "FUi_EcoreEvasMgr.h"
33 #include "FUi_CoordinateSystemUtils.h"
34 #include "FUi_SystemUtilImpl.h"
35 #include "FUiAnim_ControlVisualElement.h"
36 #include "FUiAnim_VisualElement.h"
37 #include "FUiAnim_VisualElementImpl.h"
38 #include "FUiCtrlForm.h"
39 #include "FUiCtrl_Indicator.h"
40 #include "FUiCtrl_Edit.h"
41 #include "FUiCtrl_Frame.h"
42 #include "FUiCtrl_Form.h"
43 #include "FUiCtrl_Keypad.h"
44 #include "FUiCtrl_Toolbar.h"
46 using namespace Tizen::Graphics;
47 using namespace Tizen::Base;
48 using namespace Tizen::Base::Runtime;
49 using namespace Tizen::Ui;
50 using namespace Tizen::Ui::Animations;
51 using namespace Tizen::Ui::Controls;
52 using namespace Tizen::System;
54 namespace Tizen { namespace Ui { namespace Controls
56 const int COMMAND_DONE_BUTTON_ID = 100;
57 const int COMMAND_CANCEL_BUTTON_ID = 101;
58 const int FOOTER_BACK_BUTTON_ID = 102;
60 IMPLEMENT_PROPERTY(_Keypad);
62 _Keypad::_Keypad(void)
64 , __isInitialized(false)
65 , __isSingleLineEnabled(false)
72 , __isCommandButtonPressed(false)
73 , __isPredictionWindowOpendInUSBMode(false)
75 _AccessibilityContainer* pAccessibilityContainer = GetAccessibilityContainer();
76 if(pAccessibilityContainer)
78 pAccessibilityContainer->Activate(true);
81 _ControlManager::GetInstance()->SetClipboardOwner(this);
84 _Keypad::~_Keypad(void)
86 _ControlManager::GetInstance()->SetClipboardOwner(null);
92 _Keypad::CreateKeypadN(void)
96 FloatDimension screenSize = _ControlManager::GetInstance()->GetScreenSizeF();
98 FloatRectangle portBounds(0.0f, 0.0f, screenSize.width, screenSize.height);
99 FloatRectangle landBounds(0.0f, 0.0f, screenSize.width, screenSize.height);
100 _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
102 _Keypad* pKeypad = new (std::nothrow) _Keypad;
103 result r = GetLastResult();
104 SysTryCatch(NID_UI_CTRL, pKeypad, , r, "[%s] Propagating.", GetErrorMessage(r));
105 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
107 r = pKeypad->CreateRootVisualElement(_WINDOW_TYPE_SUB);
109 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
111 pEcoreEvas->SetWindowRotationBounds(*pKeypad, 0, portBounds);
112 pEcoreEvas->SetWindowRotationBounds(*pKeypad, 180, portBounds);
113 pEcoreEvas->SetWindowRotationBounds(*pKeypad, 90, landBounds);
114 pEcoreEvas->SetWindowRotationBounds(*pKeypad, 270, landBounds);
116 pKeypad->AcquireHandle();
127 _Keypad::Initialize(int editStyle, _KeypadStyleInfo keypadStyleInfo, int limitLength, _Edit* pCallerEdit)
129 result r = E_SUCCESS;
130 bool UsbKeyboardConnected = false;
132 _ControlManager* pControlManager = _ControlManager::GetInstance();
133 SysTryReturnResult(NID_UI_CTRL, pControlManager, E_SYSTEM, "Failed to get root.");
135 if (GetOwner() == null)
137 _Frame* pFrame = dynamic_cast <_Frame*>(pControlManager->GetCurrentFrame());
138 SysTryReturn(NID_UI_CTRL, pFrame != null, E_SYSTEM,
139 E_SYSTEM, "[E_SYSTEM] This instance is not constructed.");
141 _Form* pForm = pFrame->GetCurrentForm();
153 __pFooter = CreateFooter();
157 SysTryReturnResult(NID_UI_CTRL, __pFooter, GetLastResult(), "Unable to create Footer");
162 __pCallerEdit = pCallerEdit;
166 __pCallerEdit = null;
169 if ( __pChildEdit == null)
171 __pChildEdit = _Edit::CreateEditN();
172 SysTryCatch(NID_UI_CTRL, __pChildEdit, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "Unable to create Edit");
176 _AccessibilityContainer* pAccessibilityContainer = null;
177 Variant variantKeypadStyle = (int)keypadStyleInfo.keypadStyle;
179 GET_STRING_CONFIG(IDS_TPLATFORM_BUTTON_DONE, doneText);
180 GET_STRING_CONFIG(IDS_TPLATFORM_BUTTON_CANCEL_ABB, cancelText);
182 __pChildEdit->SetFullScreenKeypadEdit(true);
184 r = __pChildEdit->Initialize(editStyle, INPUT_STYLE_OVERLAY, limitLength);
185 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
187 __pChildEdit->SetTextPredictionEnabled(keypadStyleInfo.textPredictionEnabled);
188 __pChildEdit->SetKeypadNormalNumberStyle(keypadStyleInfo.isNormalNumberStyle);
189 __pChildEdit->SetPropertyKeypadStyle(variantKeypadStyle);
191 if (!keypadStyleInfo.enterActionEnabled)//EditField Style
193 __pChildEdit->SetKeypadActionEnabled(false);
196 __pChildEdit->SetLowerCaseModeEnabled(keypadStyleInfo.isLowerCaseModeEnabled);
198 r = __pChildEdit->SetKeypadCommandButtonVisible(false);
199 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
201 __pChildEdit->AddKeypadEventListener(*this);
203 r = AttachChild(*__pChildEdit);
204 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
206 pAccessibilityContainer = GetAccessibilityContainer();
207 if (pAccessibilityContainer)
209 _AccessibilityContainer* pAccessibilityEdit = __pChildEdit->GetAccessibilityContainer();
210 if (pAccessibilityEdit)
212 pAccessibilityContainer->AddChildContainer(*pAccessibilityEdit);
218 if (editStyle & EDIT_STYLE_PASSWORD)
220 __pChildEdit->SetPasswordVisible(__pCallerEdit->IsPasswordVisible());
225 SetClipChildrenEnabled(false);
229 __pIndicator = _Indicator::CreateIndicator();
230 SysTryCatch(NID_UI_CTRL, __pIndicator, , GetLastResult(), "Unable to create Indicator");
232 _VisualElement* pKeypadVisualElement = GetVisualElement();
233 pKeypadVisualElement->AttachChild(*__pIndicator);
235 _VisualElementImpl* pImpl = _VisualElementImpl::GetInstance(*__pIndicator);
236 r = pImpl->SetZOrderGroup(_ControlVisualElement::Z_ORDER_GROUP_CONTROL + 4);
238 float indicatorwidth = 0.0f;
239 float indicatorheight = 0.0f;
241 if (GetOrientation() == _CONTROL_ORIENTATION_PORTRAIT)
243 indicatorwidth = _ControlManager::GetInstance()->_ControlManager::GetScreenSizeF().width;
244 GET_SHAPE_CONFIG(FORM::INDICATOR_HEIGHT, GetOrientation(), indicatorheight);
248 indicatorwidth = _ControlManager::GetInstance()->_ControlManager::GetScreenSizeF().height;
249 GET_SHAPE_CONFIG(FORM::INDICATOR_HEIGHT, GetOrientation(), indicatorheight);
252 __pIndicator->SetBounds(FloatRectangle(0.0f, 0.0f, indicatorwidth, indicatorheight));
253 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
256 UsbKeyboardConnected = __pChildEdit->IsUsbKeyboardConnected();
258 r = ChangeLayoutInternal(LAYOUT_CHANGE_NONE);
259 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
261 __pChildEdit->SetVisibleState(true);
263 __isInitialized = true;
265 r = _SettingInfoImpl::AddSettingEventListenerForInternal(*this);
266 SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
276 _Keypad::Dispose(void)
278 result r = E_SUCCESS;
281 DetachChild(*__pFooter);
287 DetachChild(*__pChildEdit);
291 __pCallerEdit = null;
301 _VisualElement* pKeypadVisualElement = GetVisualElement();
302 pKeypadVisualElement->DetachChild(*__pIndicator);
307 _SettingInfoImpl::RemoveSettingEventListenerForInternal(*this);
313 _Keypad::CreateFooter(void)
315 result r = E_SUCCESS;
317 _Toolbar* pFooter = null;
321 _ControlManager* pControlManager = _ControlManager::GetInstance();
322 SysTryReturn(NID_UI_CTRL, pControlManager, null, E_SYSTEM, "Fail to get ControlManager instance");
324 _Frame* pFrame = dynamic_cast <_Frame*>(pControlManager->GetCurrentFrame());
325 SysTryReturn(NID_UI_CTRL, pFrame, null, E_SYSTEM, "This instance is not constructed.");
329 FloatRectangle bounds(0.0f,0.0f,0.0f,0.0f);
331 FloatDimension screenSize = pControlManager->GetScreenSizeF();
333 pFooter = _Toolbar::CreateToolbarN(false);
334 SysTryReturn(NID_UI_CTRL, pFooter, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create instance.");
336 r = pFooter->Construct();
337 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
339 r = pFooter->SetStyle(TOOLBAR_TEXT);
340 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
342 pFooter->SetResizable(true);
343 pFooter->SetMovable(true);
345 _ControlOrientation orientation = GetOrientation();
347 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
349 bounds.width = screenSize.width;
353 bounds.width = screenSize.height;
357 GET_SHAPE_CONFIG(FOOTER::HEIGHT, orientation, height);
358 bounds.height = height;
360 r = pFooter->SetBounds(bounds);
361 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
363 pFooter->SetResizable(false);
364 pFooter->SetMovable(false);
366 GET_STRING_CONFIG(IDS_TPLATFORM_BUTTON_DONE, doneText);
368 r = pFooter->AddItem(CreateButtonItemN(COMMAND_DONE_BUTTON_ID, doneText));
369 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
371 pFooter->AddActionEventListener(*this);
373 r = AttachChild(*pFooter);
374 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
390 _Keypad::CreateButtonItemN(int actionId, const String& text)
392 result r = E_SUCCESS;
393 _Button* pButton = _Button::CreateButtonN();
394 SysTryReturn(NID_UI_CTRL, pButton, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create instance.");
396 r = pButton->SetActionId(actionId);
397 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
399 r = pButton->SetText(text);
400 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
410 _Keypad::ChangeLayoutInternal(LayoutChangeState layoutChangeState)
412 result r = E_SUCCESS;
413 _ControlManager* pControlManager = _ControlManager::GetInstance();
414 SysTryReturnResult(NID_UI_CTRL, pControlManager, E_SYSTEM, "Failed to get root.");
415 FloatDimension screenSize = pControlManager->GetScreenSizeF();
416 _ControlOrientation orientation = GetOrientation();
418 _Frame* pFrame = dynamic_cast <_Frame*>(pControlManager->GetCurrentFrame());
419 SysTryReturn(NID_UI_CTRL, pFrame, null, E_SYSTEM, "This instance is not constructed.");
421 FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
422 FloatRectangle keypadRect(0.0f, 0.0f, 0.0f, 0.0f);
423 float indicatorHeight = 0.0f;
424 float clipboardHeight = 0.0f;
425 bool isKeypadExist = false;
426 bool isClipboardExist = false;
428 if (__isInitialized || __pChildEdit->IsUsbKeyboardConnected())
430 isKeypadExist = __pChildEdit->CheckKeypadExist(orientation);
431 isClipboardExist = __pChildEdit->IsClipboardExist();
434 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
436 bounds.width = screenSize.width;
437 bounds.height = screenSize.height;
441 bounds.width = screenSize.height;
442 bounds.height = screenSize.width;
445 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
447 GET_SHAPE_CONFIG(FORM::INDICATOR_HEIGHT, GetOrientation(), indicatorHeight);
452 r = SetBounds(bounds);
453 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
457 FloatRectangle editRect = bounds;
459 editRect.y = indicatorHeight;
461 float footerHeight = 0.0f;
462 GET_SHAPE_CONFIG(FOOTER::HEIGHT, orientation, footerHeight);
464 editRect.height -= indicatorHeight;
465 editRect.height -= footerHeight;
467 if ((isClipboardExist && layoutChangeState == LAYOUT_CHANGE_ROTATE))
473 if ( isKeypadExist || isClipboardExist)
477 r = __pChildEdit->GetKeypadBounds(keypadRect);
478 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
481 if (isClipboardExist)
483 clipboardHeight = __pChildEdit->GetClipboardHeight();
486 if (clipboardHeight > keypadRect.height)
488 editRect.height -= clipboardHeight;
492 editRect.height -= keypadRect.height;
497 r = __pChildEdit->SetBounds(editRect);
498 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
500 FloatRectangle footerBounds(0.0f, 0.0f, 0.0f, 0.0f);
502 footerBounds.y = editRect.height + indicatorHeight;
503 footerBounds.width = editRect.width;
504 footerBounds.height = footerHeight;
506 __pFooter->SetResizable(true);
507 __pFooter->SetMovable(true);
509 __pFooter->SetBounds(footerBounds);
511 __pFooter->SetResizable(false);
512 __pFooter->SetMovable(false);
514 SysLog(NID_UI_CTRL, "[FULLEDIT] ChangeLayoutInternal Draw FullScreen window- Footer position(%f, %f, %f, %f)", footerBounds.x, footerBounds.y, footerBounds.width, footerBounds.height);
521 _Keypad::OnAttachedToMainTree(void)
523 result r = E_SUCCESS;
525 GetEcoreEvasMgr()->GetEcoreEvas()->SetOwner(*this, *GetOwner());//set owner to EcoreEvas for orientation set.
527 r = __pChildEdit->SetText(__text);
528 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
532 __pIndicator->OnAttachedToMainTree();
533 __pIndicator->AddIndicatorObject(this, GetRootWindow());
534 __pIndicator->SetIndicatorShowState(true);
535 __pIndicator->SetIndicatorAutoHide(false, true);
544 _Keypad::OnDetachingFromMainTree(void)
548 __pIndicator->DeleteIndicatorObject();
551 if (__pCallerEdit && !__pCallerEdit->IsInputEventEnabled())
553 __pCallerEdit->UnlockInputEvent();
556 return _Window::OnDetachingFromMainTree();
560 _Keypad::OnNativeWindowActivated(void)
562 if (__isFirstCall && __pChildEdit)
564 __pChildEdit->SetFocused();
565 __isFirstCall = false;
572 _Keypad::IsRotationSynchronized(void) const
578 _Keypad::OnDraw(void)
580 Color backgroundColor;
581 GET_COLOR_CONFIG(EDIT::BG_NORMAL, backgroundColor);
582 SetBackgroundColor(backgroundColor);
588 _Keypad::SetSingleLineEnabled(bool enabled)
590 SetProperty("singleLineEnabled", Variant(enabled));
596 _Keypad::IsSingleLineEnabled(void) const
598 Variant enabled = GetProperty("singleLineEnabled");
600 return enabled.ToBool();
604 _Keypad::SetPropertySingleLineEnabled(const Variant& enabled)
606 __isSingleLineEnabled = enabled.ToBool();
612 _Keypad::GetPropertySingleLineEnabled(void) const
614 return Variant(__isSingleLineEnabled);
618 _Keypad::GetText(void) const
620 Variant text = GetProperty("text");
622 return text.ToString();
626 _Keypad::SetText(const String& text)
628 SetProperty("text", Variant(text));
634 _Keypad::SetPropertyText(const Variant& text)
636 __text = text.ToString();
642 _Keypad::GetPropertyText(void) const
644 return Variant(__text);
648 _Keypad::AddTextEventListener(const _ITextEventListener& listener)
650 if (__pTextEvent == null)
652 __pTextEvent = _TextEvent::CreateInstanceN(*this);
653 SysTryReturn(NID_UI_CTRL, __pTextEvent, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] System error occurred.\n");
656 return __pTextEvent->AddListener(listener);
660 _Keypad::RemoveTextEventListener(const _ITextEventListener& listener)
662 SysTryReturn(NID_UI_CTRL, __pTextEvent, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] This instance isn't constructed.");
663 __pTextEvent->RemoveListener(listener);
669 _Keypad::SetEditTextFilter(IEditTextFilter* pFilter)
673 __pChildEdit->SetEditTextFilter(pFilter);
680 _Keypad::SendOpaqueCommand (const Tizen::Base::String& command)
684 __pChildEdit->SendOpaqueCommand(command);
691 _Keypad::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
693 if (keyInfo.GetKeyCode() == _KEY_ESC || keyInfo.GetKeyCode() == _KEY_BACK)
695 OnActionPerformed(source, FOOTER_BACK_BUTTON_ID);
702 _Keypad::OnActionPerformed(const _Control& source, int actionId)
704 bool isReCreationLock = false;
705 if ((actionId != COMMAND_DONE_BUTTON_ID) && (actionId != FOOTER_BACK_BUTTON_ID))
710 __pChildEdit->HideKeypad();
714 __pCallerEdit->SetKeypadEnabled(false);
715 isReCreationLock = true;
718 if (isReCreationLock)
720 __pCallerEdit->SetKeypadEnabled(true);
723 CoreTextEventStatus textEventStatus = CORE_TEXT_EVENT_CHANGED;
724 if (actionId == COMMAND_DONE_BUTTON_ID)
726 __text = __pChildEdit->GetText();
727 textEventStatus = CORE_TEXT_EVENT_CHANGED;
731 textEventStatus = CORE_TEXT_EVENT_CANCELED;
734 __isCommandButtonPressed = true;
738 __pCallerEdit->SetText(__text);
739 _Control* pParent = __pCallerEdit->GetParent();
742 pParent->Invalidate(true);
745 __pCallerEdit->SendTextEvent(textEventStatus);
749 GetOwner()->Invalidate(true);
752 IEventArg* pEventArg = _TextEvent::CreateTextEventArgN(textEventStatus);
755 __pTextEvent->Fire(*pEventArg);
764 _Keypad::OnKeypadWillOpen(void)
766 SysLog(NID_UI_CTRL, "[FULLEDIT] OnKeypadWillOpen");
771 _Keypad::OnKeypadOpened(void)
773 if (__pChildEdit->IsUsbKeyboardConnected())
775 __isPredictionWindowOpendInUSBMode = true;
778 SysLog(NID_UI_CTRL, "[FULLEDIT] OnKeypadOpened");
780 ChangeLayoutInternal(LAYOUT_CHANGE_KEYPAD_SHOW);//usb off & bounded or usb on & prediction
786 _Keypad::OnKeypadClosed(void)
788 __isPredictionWindowOpendInUSBMode = false;
790 SysLog(NID_UI_CTRL, "[FULLEDIT] OnKeypadClosed");
792 ChangeLayoutInternal(LAYOUT_CHANGE_KEYPAD_HIDE);
798 _Keypad::OnKeypadBoundsChanged(void)
800 SysLog(NID_UI_CTRL, "[FULLEDIT] OnKeypadBoundsChanged");
802 ChangeLayoutInternal(LAYOUT_CHANGE_KEYPAD_BOUNDS_CHANGED);// predictive window show/hide
808 _Keypad::OnKeypadActionPerformed(CoreKeypadAction keypadAction)
814 _Keypad::OnChangeLayout(_ControlOrientation orientation)
816 float indicatorheight = 0.0f;
818 const FloatDimension portraitSize = _ControlManager::GetInstance()->_ControlManager::GetScreenSizeF();
819 const FloatDimension landscapeSize = FloatDimension(portraitSize.height, portraitSize.width);
823 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
825 GET_SHAPE_CONFIG(FORM::INDICATOR_HEIGHT, GetOrientation(), indicatorheight);
826 __pIndicator->SetBounds(FloatRectangle(0.0f, 0.0f, portraitSize.width, indicatorheight));
830 GET_SHAPE_CONFIG(FORM::INDICATOR_HEIGHT, GetOrientation(), indicatorheight);
831 __pIndicator->SetBounds(FloatRectangle(0.0f, 0.0f, landscapeSize.width, indicatorheight));
834 __pIndicator->OnChangeLayout(orientation);
839 ChangeLayoutInternal(LAYOUT_CHANGE_ROTATE);
846 _Keypad::OnSettingChanged(String& key)
848 const wchar_t* LOCALE_LANGUAGE = L"http://tizen.org/setting/locale.language";
849 if (key == LOCALE_LANGUAGE)
853 _Button* pButton = __pFooter->GetItem(0);
857 GET_STRING_CONFIG(IDS_TPLATFORM_BUTTON_DONE, doneText);
858 pButton->SetText(doneText);
865 _Keypad::IsLayoutChangable(void) const
870 } } } // Tizen::Ui::Controls