Tizen 2.1 base
[platform/framework/native/ime.git] / src / FUiImeInputMethod.cpp
1 //\r
2 // Open Service Platform\r
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.\r
4 //\r
5 // Licensed under the Apache License, Version 2.0 (the License);\r
6 // you may not use this file except in compliance with the License.\r
7 // You may obtain a copy of the License at\r
8 //\r
9 //     http://www.apache.org/licenses/LICENSE-2.0\r
10 //\r
11 // Unless required by applicable law or agreed to in writing, software\r
12 // distributed under the License is distributed on an "AS IS" BASIS,\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 // See the License for the specific language governing permissions and\r
15 // limitations under the License.\r
16 //\r
17 \r
18 /**\r
19  * @file        FUiImeInputMethod.cpp\r
20  * @brief       This is the implementation file for the %InputMethod class.\r
21  *\r
22  * This implementation file contains definition of the %InputMethod class.\r
23  */\r
24 \r
25 #include <new>\r
26 \r
27 #include <FBaseSysLog.h>\r
28 #include <FUiImeInputMethod.h>\r
29 \r
30 #include <FSec_AccessController.h>\r
31 #include "FUiIme_InputMethodImpl.h"\r
32 \r
33 using namespace Tizen::Base;\r
34 using namespace Tizen::Security;\r
35 using namespace Tizen::Ui;\r
36 \r
37 namespace Tizen { namespace Ui { namespace Ime {\r
38 \r
39 static InputMethod* __pInputMethod = null;\r
40 \r
41 InputMethod::InputMethod(void)\r
42         :__pInputMethodImpl(null)\r
43 {\r
44 }\r
45 \r
46 InputMethod::~InputMethod(void)\r
47 {\r
48         __pInputMethod = null;\r
49         __pInputMethodImpl = null;\r
50 }\r
51 \r
52 result\r
53 InputMethod::Construct(void)\r
54 {\r
55         result r = E_SUCCESS;\r
56 \r
57         __pInputMethodImpl = _InputMethodImpl::GetInstance(*this);\r
58         r = GetLastResult();\r
59         SysTryReturnResult(NID_UI_IME, __pInputMethodImpl, r, "Propagating.");\r
60 \r
61         return r;\r
62 }\r
63 \r
64 InputMethod*\r
65 InputMethod::GetInstance(void)\r
66 {\r
67         result r = E_SUCCESS;\r
68 \r
69         r = _AccessController::CheckUserPrivilege(_PRV_IME);\r
70         SysTryReturn(NID_UI_IME, r == E_SUCCESS, null, E_PRIVILEGE_DENIED, "[E_PRIVILEGE_DENIED] The application does not have the privilege to call this method.");\r
71 \r
72         if (__pInputMethod == null)\r
73         {\r
74                 __pInputMethod = new(std::nothrow) InputMethod();\r
75                 SysTryReturn(NID_UI_IME, __pInputMethod, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
76 \r
77                 r = __pInputMethod->Construct();\r
78                 r = ((r == E_SUCCESS) || (r == E_CONNECTION_FAILED) || (r == E_SYSTEM)) ? r : E_SYSTEM;\r
79                 SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
80         }\r
81 \r
82         return __pInputMethod;\r
83 \r
84 CATCH:\r
85         delete __pInputMethod;\r
86         __pInputMethod = null;\r
87 \r
88         return null;\r
89 }\r
90 \r
91 void\r
92 InputMethod::SetInputMethodProvider(IInputMethodProvider* pProvider)\r
93 {\r
94         __pInputMethodImpl->SetInputMethodProvider(pProvider);\r
95 \r
96         return;\r
97 }\r
98 \r
99 void\r
100 InputMethod::SetInputMethodListener(IInputMethodListener* pListener)\r
101 {\r
102         __pInputMethodImpl->SetInputMethodListener(pListener);\r
103 \r
104         return;\r
105 }\r
106 \r
107 result\r
108 InputMethod::DeleteText(int cursorOffset, int length)\r
109 {\r
110         return __pInputMethodImpl->DeleteText(cursorOffset, length);\r
111 }\r
112 \r
113 result\r
114 InputMethod::NotifyInputPanelState(InputPanelShowState state)\r
115 {\r
116         return __pInputMethodImpl->NotifyInputPanelState(state);\r
117 }\r
118 \r
119 result\r
120 InputMethod::RequestSurroundingText(int lengthBeforeCursor, int lengthAfterCursor)\r
121 {\r
122         return __pInputMethodImpl->RequestSurroundingText(lengthBeforeCursor, lengthAfterCursor);\r
123 }\r
124 \r
125 result\r
126 InputMethod::SendCompositeText(const String& text)\r
127 {\r
128         return __pInputMethodImpl->SendCompositeText(text);\r
129 }\r
130 \r
131 result\r
132 InputMethod::SendKeyEvent(Tizen::Ui::KeyCode code, Tizen::Ui::KeyState state)\r
133 {\r
134         return __pInputMethodImpl->SendKeyEvent(code, state);\r
135 }\r
136 \r
137 result\r
138 InputMethod::SendText(const String& text)\r
139 {\r
140         return __pInputMethodImpl->SendText(text);\r
141 }\r
142 \r
143 }}} // Tizen::Ui::Ime\r