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_KeypadImpl.cpp
20 * @brief This file contains implementation of _KeypadImpl class
22 * This file contains implementation of _KeypadImpl class.
25 #include "FUi_ControlImplManager.h"
26 #include "FUiCtrl_Edit.h"
27 #include "FUiCtrl_KeypadImpl.h"
28 #include "FUiCtrl_Keypad.h"
29 #include "FUiCtrl_PublicTextEvent.h"
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Runtime;
33 using namespace Tizen::Ui;
34 using namespace Tizen::Ui::Controls;
36 namespace Tizen { namespace Ui { namespace Controls
40 _KeypadImpl::GetInstance(Keypad& keypad)
42 return (static_cast<_KeypadImpl*> (keypad._pControlImpl));
46 _KeypadImpl::GetInstance(const Keypad& keypad)
48 return (static_cast<const _KeypadImpl*> (keypad._pControlImpl));
51 _KeypadImpl::_KeypadImpl(Keypad* pPublic, _Keypad* pCore)
52 : _WindowImpl(pPublic, pCore)
56 , __pPublicTextEvent(null)
58 __keypadStyleInfo.keypadStyle = KEYPAD_STYLE_NORMAL;
59 __keypadStyleInfo.textPredictionEnabled = false;
60 __keypadStyleInfo.isNormalNumberStyle = false;
61 __keypadStyleInfo.enterActionEnabled = true;
62 __keypadStyleInfo.isLowerCaseModeEnabled = false;
65 _KeypadImpl::~_KeypadImpl(void)
67 if (__pPublicTextEvent)
69 delete __pPublicTextEvent;
70 __pPublicTextEvent = null;
75 _KeypadImpl::CreateKeypadImplN(Keypad* pControl)
79 _Keypad* pCore = null;
81 pCore = _Keypad::CreateKeypadN();
82 SysTryReturn(NID_UI_CTRL, pCore, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
84 _KeypadImpl* pImpl = new (std::nothrow) _KeypadImpl(pControl, pCore);
85 r = CheckConstruction(pCore, pImpl);
86 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
92 _KeypadImpl::GetPublicClassName(void) const
94 return "Tizen::Ui::Controls::Keypad";
98 _KeypadImpl::GetPublic(void) const
100 return static_cast <const Keypad&>(_ControlImpl::GetPublic());
104 _KeypadImpl::GetPublic(void)
106 return static_cast <Keypad&>(_ControlImpl::GetPublic());
110 _KeypadImpl::GetCore(void) const
112 return static_cast <const _Keypad&>(_ControlImpl::GetCore());
116 _KeypadImpl::GetCore(void)
118 return static_cast <_Keypad&>(_ControlImpl::GetCore());
122 _KeypadImpl::Initialize(KeypadStyle keypadStyle, KeypadInputModeCategory category, int limitLength, bool enabledTextPrediction)
124 result r = E_SUCCESS;
127 __keypadStyleInfo.keypadStyle = keypadStyle;
128 __keypadStyleInfo.textPredictionEnabled = enabledTextPrediction;
129 if ((keypadStyle == KEYPAD_STYLE_NORMAL) && (category & (KEYPAD_MODE_NUMERIC | KEYPAD_MODE_SYMBOL)))
131 __keypadStyleInfo.isNormalNumberStyle = true;
135 __keypadStyleInfo.isNormalNumberStyle = false;
138 __limitLength = limitLength;
140 __pKeypad->SetResizable(false);
141 __pKeypad->SetMovable(false);
143 SysTryReturn(NID_UI_CTRL, (__pPublicTextEvent == null), E_SYSTEM, E_SYSTEM, "[E_SYSTEM] This instance is already constructed.");
144 __pPublicTextEvent = _PublicTextEvent::CreateInstanceN(GetPublic());
145 SysTryReturn(NID_UI_CTRL, __pPublicTextEvent, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] System error occurred.");
147 r = __pKeypad->AddTextEventListener(*this);
148 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
154 _KeypadImpl::SetTextPredictionEnabled(bool enable)
156 __keypadStyleInfo.textPredictionEnabled = enable;
160 _KeypadImpl::IsTextPredictionEnabled(void) const
162 return __keypadStyleInfo.textPredictionEnabled;
166 _KeypadImpl::SetSingleLineEnabled(bool enabled)
170 if ((__keypadStyleInfo.keypadStyle == KEYPAD_STYLE_PASSWORD) && (enabled == false))
172 SysLogException(NID_UI_CTRL, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The password style can't support multiline.");
173 return E_UNSUPPORTED_OPERATION;
175 SysTryReturnResult(NID_UI_CTRL, __pKeypad->IsActivated() == false, E_INVALID_OPERATION, "Keypad is already shown.");
177 Variant var(enabled);
178 return __pKeypad->SetPropertySingleLineEnabled(var);
182 _KeypadImpl::IsSingleLineEnabled(void) const
185 return __pKeypad->GetPropertySingleLineEnabled().ToBool();
189 _KeypadImpl::AddTextEventListener(ITextEventListener& listener)
192 return __pPublicTextEvent->AddListener(listener);
196 _KeypadImpl::RemoveTextEventListener(ITextEventListener& listener)
199 return __pPublicTextEvent->RemoveListener(listener);
203 _KeypadImpl::OnAttachedToMainTree(void)
207 result r = E_SUCCESS;
208 int editStyle = EDIT_STYLE_NORMAL;
210 if (IsSingleLineEnabled())
212 editStyle |= EDIT_STYLE_SINGLE_LINE;
215 if (__keypadStyleInfo.keypadStyle == KEYPAD_STYLE_PASSWORD)
217 editStyle |= EDIT_STYLE_PASSWORD | EDIT_STYLE_SINGLE_LINE;
220 String text = GetText();
222 r = __pKeypad->Initialize(editStyle, __keypadStyleInfo, __limitLength, null);
223 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
228 r = _WindowImpl::OnAttachedToMainTree();
229 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
235 _KeypadImpl::GetText(void) const
239 return __pKeypad->GetPropertyText().ToString();
243 _KeypadImpl::SetText(const String& text)
248 __pKeypad->SetPropertyText(var);
253 _KeypadImpl::SetEditTextFilter(IEditTextFilter* pFilter)
256 __pKeypad->SetEditTextFilter(pFilter);
261 _KeypadImpl::SendOpaqueCommand (const Tizen::Base::String& command)
264 __pKeypad->SendOpaqueCommand(command);
269 _KeypadImpl::OnTextValueChanged(const _Control& source)
271 IEventArg* pEventArg = _PublicTextEvent::CreateTextEventArgN(TEXT_EVENT_CHANGED);
274 __pPublicTextEvent->Fire(*pEventArg);
279 _KeypadImpl::OnTextValueChangeCanceled(const _Control& source)
281 IEventArg* pEventArg = _PublicTextEvent::CreateTextEventArgN(TEXT_EVENT_CANCELED);
284 __pPublicTextEvent->Fire(*pEventArg);
288 }}} // Tizen::Ui::Controls