2 * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "sclcoreimpl.h"
19 #include <app_common.h>
24 CSCLCoreImpl::CSCLCoreImpl()
26 m_event_callback = NULL;
31 CSCLCoreImpl::~CSCLCoreImpl()
44 CSCLCoreImpl::get_instance()
46 static CSCLCoreImpl instance;
50 void CSCLCoreImpl::init(const sclchar *display)
55 m_connection.open_connection(display);
57 if (m_event_callback) {
58 m_event_callback->on_init();
62 void CSCLCoreImpl::fini()
64 if (m_event_callback) {
65 m_event_callback->on_exit();
68 m_connection.close_connection();
74 void CSCLCoreImpl::set_core_event_callback(ISCLCoreEventCallback *callback)
76 m_event_callback = callback;
79 ISCLCoreEventCallback* CSCLCoreImpl::get_core_event_callback()
81 ISCLCoreEventCallback* ret = m_event_callback;
85 CSCLCoreUI* CSCLCoreImpl::get_core_ui()
90 CSCLConnection* CSCLCoreImpl::get_connection()
95 sclchar* CSCLCoreImpl::get_uuid()
100 void CSCLCoreImpl::config_reload()
102 m_connection.config_reload();
105 sclboolean CSCLCoreImpl::config_read_int(const sclchar *name, sclint &value)
107 return m_connection.config_read_int(name, value);
110 sclboolean CSCLCoreImpl::config_read_string(const sclchar *name, std::string &value)
112 return m_connection.config_read_string(name, value);
115 sclboolean CSCLCoreImpl::config_write_int(const sclchar *name, sclint value)
117 return m_connection.config_write_int(name, value);
120 sclboolean CSCLCoreImpl::config_write_string(const sclchar *name, const std::string value)
122 return m_connection.config_write_string(name, value);
125 sclboolean CSCLCoreImpl::config_erase(const sclchar *name)
127 return m_connection.config_erase(name);
130 sclboolean CSCLCoreImpl::config_flush(void)
132 return m_connection.config_flush();
135 void CSCLCoreImpl::send_imengine_event(sclint ic, const sclchar *ic_uuid, const sclint command, const sclu32 value)
137 m_connection.send_imengine_event(ic, ic_uuid, command, value);
140 void CSCLCoreImpl::reset_keyboard_ise()
142 m_connection.reset_keyboard_ise();
145 void CSCLCoreImpl::send_key_event(sclint ic, const sclchar *ic_uuid, sclu32 keycode, sclu16 keymask)
147 m_connection.send_key_event(ic, ic_uuid, keycode, keymask);
150 void CSCLCoreImpl::forward_key_event(sclint ic, const sclchar *ic_uuid, sclu32 keycode, sclu16 keymask)
152 m_connection.forward_key_event(ic, ic_uuid, keycode, keymask);
155 void CSCLCoreImpl::commit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str)
157 m_connection.commit_string(ic, ic_uuid, str);
160 void CSCLCoreImpl::select_candidate(int index)
162 m_connection.select_candidate(index);
165 void CSCLCoreImpl::show_preedit_string(sclint ic, const sclchar *ic_uuid)
167 m_connection.show_preedit_string(ic, ic_uuid);
170 void CSCLCoreImpl::show_aux_string(void)
172 m_connection.show_aux_string();
175 void CSCLCoreImpl::show_candidate_string(void)
177 m_connection.show_candidate_string();
180 void CSCLCoreImpl::show_associate_string(void)
182 m_connection.show_associate_string();
185 void CSCLCoreImpl::hide_preedit_string(sclint ic, const sclchar *ic_uuid)
187 m_connection.hide_preedit_string(ic, ic_uuid);
190 void CSCLCoreImpl::hide_aux_string(void)
192 m_connection.hide_aux_string();
195 void CSCLCoreImpl::hide_candidate_string(void)
197 m_connection.hide_candidate_string();
200 void CSCLCoreImpl::hide_associate_string(void)
202 m_connection.hide_associate_string();
205 void CSCLCoreImpl::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str)
207 m_connection.update_preedit_string(ic, ic_uuid, str);
210 void CSCLCoreImpl::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs)
212 m_connection.update_preedit_string(ic, ic_uuid, str, attrs);
215 void CSCLCoreImpl::update_aux_string(const sclchar *str)
217 m_connection.update_aux_string(str);
220 void CSCLCoreImpl::update_input_context(sclu32 type, sclu32 value)
222 m_connection.update_input_context(type, value);
225 void CSCLCoreImpl::update_geometry(sclint x, sclint y, sclint width, sclint height)
227 m_connection.update_geometry(x, y, width, height);
230 void CSCLCoreImpl::get_surrounding_text(const sclchar* ic_uuid, sclint maxlen_before, sclint maxlen_after) const
232 m_connection.get_surrounding_text(ic_uuid, maxlen_before, maxlen_after);
235 sclint CSCLCoreImpl::get_surrounding_text(sclint maxlen_before, sclint maxlen_after, sclchar **text, int &cursor)
237 return m_connection.get_surrounding_text(maxlen_before, maxlen_after, text, cursor);
240 void CSCLCoreImpl::delete_surrounding_text(sclint offset, sclint len) const
242 m_connection.delete_surrounding_text(offset, len);
245 void CSCLCoreImpl::set_candidate_position(sclint left, sclint top)
247 m_connection.set_candidate_position(left, top);
250 void CSCLCoreImpl::enable_soft_candidate(sclboolean enable)
252 m_connection.enable_soft_candidate(enable);
255 void CSCLCoreImpl::candidate_hide(void)
257 m_connection.candidate_hide();
260 void CSCLCoreImpl::set_keyboard_ise_by_uuid(const sclchar *uuid)
262 m_connection.set_keyboard_ise_by_uuid(uuid);
265 void CSCLCoreImpl::get_keyboard_ise(const sclchar *uuid)
267 m_connection.get_keyboard_ise(uuid);
270 void CSCLCoreImpl::on_run(const sclchar *uuid, const sclchar *display)
275 LOGD ("uuid : '%s', display : '%s'\n", uuid, display);
277 if (uuid && strlen(uuid) > 0) {
282 m_uuid = strdup(uuid);
290 m_display = strdup(display);
293 if (m_event_callback) {
294 m_event_callback->on_run(0, NULL);
298 void CSCLCoreImpl::run()
307 LOGD("appid : '%s'\n", appid);
310 m_uuid = strdup(appid);
316 const char *display = getenv("DISPLAY");
317 LOGD("display env : '%s'\n", display);
318 m_display = display ? strdup(display) : strdup(":0");
321 m_core_ui.run(m_display);
327 sclwindow CSCLCoreImpl::get_main_window()
329 return m_core_ui.get_main_window();
332 int CSCLCoreImpl::get_screen_rotation_degree()
334 return m_core_ui.get_screen_rotation_degree();
337 void CSCLCoreImpl::set_keyboard_size_hints(SclSize portrait, SclSize landscape)
339 m_core_ui.set_keyboard_size_hints(portrait, landscape);
342 sclwindow CSCLCoreImpl::create_option_window()
344 return m_core_ui.create_option_window(OPTION_WINDOW_TYPE_NORMAL);
347 void CSCLCoreImpl::destroy_option_window(sclwindow window)
349 m_core_ui.destroy_option_window(window);
352 void CSCLCoreImpl::set_selection(sclint start, sclint end)
354 m_connection.set_selection(start, end);
357 void CSCLCoreImpl::send_private_command(const sclchar *command)
359 m_connection.send_private_command(command);
362 void CSCLCoreImpl::get_selection_text(sclchar **text)
364 m_connection.get_selection_text(text);