Tizen 2.1 base
[platform/framework/native/ime.git] / src / FUiIme_ScimDataConverter.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        FUiIme_ScimDataConverter.cpp\r
20  * @brief       This is the implementation file for the %_ScimDataConverter class.\r
21  *\r
22  * This implementation file contains definition of the %_ScimDataConverter class.\r
23  */\r
24 \r
25 #include <vector> // vector in scim_event.h\r
26 \r
27 #define Uses_SCIM_EVENT\r
28 #define Uses_SCIM_UTILITY\r
29 #undef null\r
30 #include <scim.h> // SCIM_KEY_NullKey, SCIM_KEY_NullMask, SCIM_KEY_ReleaseMask\r
31 #define null 0\r
32 \r
33 #include <FBaseSysLog.h>\r
34 #include <FBaseString.h>\r
35 #include <FBase_StringConverter.h>\r
36 \r
37 #include "FUiIme_Key.h"\r
38 #include "FUiIme_ScimDataConverter.h"\r
39 \r
40 using namespace Tizen::Base;\r
41 using namespace Tizen::Locales;\r
42 using namespace Tizen::Ui;\r
43 \r
44 namespace Tizen { namespace Ui { namespace Ime {\r
45 \r
46 _ScimDataConverter::_ScimDataConverter()\r
47 {\r
48 \r
49 }\r
50 \r
51 _ScimDataConverter::~_ScimDataConverter()\r
52 {\r
53 \r
54 }\r
55 \r
56 result\r
57 _ScimDataConverter::ConvertKey(Tizen::Ui::KeyCode code, Tizen::Ui::KeyState state, scim::KeyEvent& event) const\r
58 {\r
59         result r = E_SUCCESS;\r
60 \r
61         event.code = scim::SCIM_KEY_NullKey;\r
62         event.mask = scim::SCIM_KEY_NullMask;\r
63         event.layout = scim::SCIM_KEYBOARD_Default;\r
64 \r
65         // event.code\r
66         for (int i = 0; i < MAX_KEY_CODE; i++)\r
67         {\r
68                 if (code == KEY_CODE_MAP[i].keyCode)\r
69                 {\r
70                         event.code = KEY_CODE_MAP[i].scimKeyCode;\r
71                         break;\r
72                 }\r
73         }\r
74 \r
75         // event.mask\r
76         switch (state)\r
77         {\r
78         case KEY_PRESSED:\r
79                 event.mask = scim::SCIM_KEY_NullMask; // The NullMask means the PressMask.\r
80                 break;\r
81         case KEY_RELEASED:\r
82                 event.mask = scim::SCIM_KEY_ReleaseMask;\r
83                 break;\r
84         case KEY_LONGPRESSED:\r
85                 // Fall through\r
86         default:\r
87                 break;\r
88         }       \r
89 \r
90         return r;\r
91 }\r
92 \r
93 void \r
94 _ScimDataConverter::ConvertRectangle(const Tizen::Graphics::Rectangle& src, scim::rectinfo& dest) const\r
95 {\r
96         dest.pos_x = src.x;\r
97         dest.pos_y = src.y;\r
98         dest.width = src.width;\r
99         dest.height = src.height;\r
100 \r
101         return;\r
102 }\r
103 \r
104 result\r
105 _ScimDataConverter::ConvertString(const Tizen::Base::String& src, scim::String& dest) const\r
106 {\r
107         result r = E_SUCCESS;\r
108 \r
109         char* pCharSrc = null;\r
110 \r
111         pCharSrc = _StringConverter::CopyToCharArrayN(src);\r
112         r = GetLastResult();\r
113         SysTryReturnResult(NID_UI_IME, pCharSrc, r, "Propagating.");\r
114 \r
115         dest = pCharSrc;\r
116 \r
117         delete[] pCharSrc;\r
118 \r
119         return r;\r
120 }\r
121 \r
122 result\r
123 _ScimDataConverter::ConvertString(const Tizen::Base::String& src, scim::WideString& dest) const\r
124 {\r
125         result r = E_SUCCESS;\r
126 \r
127         char* pCharSrc = null;\r
128 \r
129         pCharSrc = _StringConverter::CopyToCharArrayN(src);\r
130         r = GetLastResult();\r
131         SysTryReturnResult(NID_UI_IME, pCharSrc, r, "Propagating.");\r
132 \r
133         dest = scim::utf8_mbstowcs(pCharSrc, strlen(pCharSrc));\r
134 \r
135         delete[] pCharSrc;\r
136 \r
137         return r;\r
138 }\r
139 \r
140 result\r
141 _ScimDataConverter::ConvertString(const scim::String& src, Tizen::Base::String& dest) const\r
142 {\r
143         result r = E_SUCCESS;\r
144 \r
145         const char* pCharSrc = null;\r
146 \r
147         pCharSrc = src.c_str();\r
148         SysTryReturnResult(NID_UI_IME, pCharSrc, E_INVALID_ARG, "Invalid argument(s) is used. The source is invalid.");\r
149 \r
150         String destString(pCharSrc);\r
151 \r
152         dest = destString;\r
153 \r
154         return r;\r
155 }\r
156 \r
157 }}} // Tizen::Ui::Ime\r