1 /** @file isf_panel_agent_base.cpp
2 * @brief Implementation of class PanelAgentBase.
5 /* ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable. */
8 * Smart Common Input Method
10 * Copyright (c) 2005 James Su <suzhe@tsinghua.org.cn>
11 * Copyright (c) 2012-2016 Samsung Electronics Co., Ltd.
14 * This library is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2 of the License, or (at your option) any later version.
19 * This library is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU Lesser General Public License for more details.
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this program; if not, write to the
26 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
27 * Boston, MA 02111-1307 USA
31 #define Uses_SCIM_TRANSACTION
32 #define Uses_SCIM_TRANS_COMMANDS
33 #define Uses_SCIM_PANEL_AGENT
34 #define Uses_SCIM_HELPER
35 #define Uses_SCIM_SOCKET
36 #define Uses_SCIM_EVENT
37 #define Uses_SCIM_CONFIG
38 #define Uses_SCIM_CONFIG_MODULE
39 #define Uses_SCIM_CONFIG_PATH
40 #define Uses_SCIM_UTILITY
43 #include <sys/types.h>
44 #include <sys/times.h>
47 #include "scim_private.h"
49 #include "scim_stl_map.h"
50 #include "isf_debug.h"
55 #define LOG_TAG "ISF_PANEL_AGENT_BASE"
62 PanelAgentBase::PanelAgentBase (const String& name)
68 PanelAgentBase::~PanelAgentBase ()
72 bool PanelAgentBase::initialize (InfoManager* info_manager, const String& display, bool resident)
77 bool PanelAgentBase::valid (void) const
82 void PanelAgentBase::stop (void)
86 void PanelAgentBase::update_panel_event (int client, uint32 context, int cmd, uint32 nType, uint32 nValue)
90 void PanelAgentBase::reset_keyboard_ise (int client, uint32 context)
94 void PanelAgentBase::update_keyboard_ise_list (int client, uint32 context)
98 void PanelAgentBase::change_factory (int client, uint32 context, const String& uuid)
102 void PanelAgentBase::helper_candidate_show (int client, uint32 context, const String& uuid)
106 void PanelAgentBase::helper_candidate_hide (int client, uint32 context, const String& uuid)
110 /* if the uuid is empty, it must send to panelclient otherwise HelperAgent
112 void PanelAgentBase::candidate_more_window_show (int client, uint32 context)
115 /* if the uuid is empty, it must send to panelclient otherwise HelperAgent
117 void PanelAgentBase::candidate_more_window_hide (int client, uint32 context)
121 void PanelAgentBase::update_helper_lookup_table (int client, uint32 context, const String& uuid, const LookupTable& table)
127 //SCIM_TRANS_CMD_SELECT_AUX
128 //this function called by two places, will send message to help(with uuid) or app
129 void PanelAgentBase::select_aux (int client, uint32 context, uint32 item)
132 //SCIM_TRANS_CMD_SELECT_CANDIDATE
133 //this function called by two places, will send message to help(with uuid) or app
134 void PanelAgentBase::select_candidate (int client, uint32 context, uint32 item)
138 void PanelAgentBase::lookup_table_page_up (int client, uint32 context)
142 void PanelAgentBase::lookup_table_page_down (int client, uint32 context)
146 void PanelAgentBase::update_lookup_table_page_size (int client, uint32 context, uint32 size)
150 void PanelAgentBase::update_candidate_item_layout (int client, uint32 context, const std::vector<uint32>& row_items)
154 void PanelAgentBase::select_associate (int client, uint32 context, uint32 item)
158 void PanelAgentBase::associate_table_page_up (int client, uint32 context)
162 void PanelAgentBase::associate_table_page_down (int client, uint32 context)
166 void PanelAgentBase::update_associate_table_page_size (int client, uint32 context, uint32 size)
170 void PanelAgentBase::update_displayed_candidate_number (int client, uint32 context, uint32 size)
174 void PanelAgentBase::send_longpress_event (int client, uint32 context, uint32 index)
178 void PanelAgentBase::trigger_property (int client, uint32 context, const String& property)
182 void PanelAgentBase::socket_start_helper (int client, uint32 context, const String& ic_uuid)
186 void PanelAgentBase::exit (int client, uint32 context)
190 void PanelAgentBase::focus_out_helper (int client, uint32 context, const String& uuid)
194 void PanelAgentBase::focus_in_helper (int client, uint32 context, const String& uuid)
198 void PanelAgentBase::show_helper (int client, uint32 context, const String& uuid, char* data, size_t& len)
202 void PanelAgentBase::hide_helper (int client, uint32 context, const String& uuid)
206 void PanelAgentBase::set_helper_mode (int client, uint32 context, const String& uuid, uint32& mode)
210 void PanelAgentBase::set_helper_language (int client, uint32 context, const String& uuid, uint32& language)
214 void PanelAgentBase::set_helper_imdata (int client, uint32 context, const String& uuid, const char* imdata, size_t& len)
218 void PanelAgentBase::set_helper_return_key_type (int client, uint32 context, const String& uuid, uint32 type)
222 void PanelAgentBase::get_helper_return_key_type (int client, uint32 context, const String& uuid, _OUT_ uint32& type)
226 void PanelAgentBase::set_helper_return_key_disable (int client, uint32 context, const String& uuid, uint32 disabled)
230 void PanelAgentBase::get_helper_return_key_disable (int client, uint32 context, const String& uuid, _OUT_ uint32& disabled)
234 void PanelAgentBase::set_helper_layout (int client, uint32 context, const String& uuid, uint32& layout)
238 void PanelAgentBase::set_helper_input_mode (int client, uint32 context, const String& uuid, uint32& mode)
242 void PanelAgentBase::set_helper_input_hint (int client, uint32 context, const String& uuid, uint32& hint)
246 void PanelAgentBase::set_helper_bidi_direction (int client, uint32 context, const String& uuid, uint32& direction)
250 void PanelAgentBase::set_helper_caps_mode (int client, uint32 context, const String& uuid, uint32& mode)
254 void PanelAgentBase::show_helper_option_window (int client, uint32 context, const String& uuid, uint32 caller_pid, uint32 ime_pid)
258 void PanelAgentBase::resume_helper_option_window (int client, uint32 context, const String& uuid)
262 void PanelAgentBase::set_transient_for (uint32 caller_pid, uint32 ime_pid)
267 void PanelAgentBase::set_helper_keyboard_mode (int client, uint32 context, const String& uuid, uint32& mode)
271 void PanelAgentBase::set_helper_prediction_hint (int client, uint32 context, const String& uuid, String& prediction_hint)
275 void PanelAgentBase::set_helper_mime_type (int client, uint32 context, const String& uuid, String& mime_type)
279 void PanelAgentBase::finalize_content_helper (int client, uint32 context, const String& uuid, String& text, uint32& cursor_pos)
283 void PanelAgentBase::set_helper_prediction_hint_data (int client, uint32 context, const String& uuid, String& key, String& value)
287 void PanelAgentBase::set_helper_optimization_hint(int client, uint32 context, const String& uuid, uint32& hint)
291 bool PanelAgentBase::process_key_event (int client, uint32 context, const String& uuid, KeyEvent& key, uint32 serial, uint32 keycode)
296 bool PanelAgentBase::get_helper_geometry (int client, uint32 context, String& uuid, _OUT_ struct rectinfo& info)
301 void PanelAgentBase::get_helper_imdata (int client, uint32 context, String& uuid, _OUT_ char** imdata, _OUT_ size_t& len)
305 void PanelAgentBase::get_helper_layout (int client, uint32 context, String& uuid, uint32& layout)
309 void PanelAgentBase::get_ise_language_locale (int client, uint32 context, String& uuid, _OUT_ char** data, _OUT_ size_t& len)
313 void PanelAgentBase::check_option_window (int client, uint32 context, String& uuid, _OUT_ uint32& avail)
317 void PanelAgentBase::reset_ise_option (int client, uint32 context)
321 void PanelAgentBase::reset_helper_context (int client, uint32 context, const String& uuid)
325 void PanelAgentBase::reload_config (int client)
329 void PanelAgentBase::socket_update_surrounding_text (int client, uint32 context, const String& uuid, String& text, uint32 cursor)
333 void PanelAgentBase::socket_remoteinput_focus_in (int client)
337 void PanelAgentBase::socket_remoteinput_focus_out (int client)
341 void PanelAgentBase::socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled, uint32 return_key_type)
345 void PanelAgentBase::socket_remoteinput_surrounding_text (int client, String& text, uint32 cursor)
349 void PanelAgentBase::socket_remoteinput_input_resource (int client, uint32 input_resource)
353 void PanelAgentBase::socket_update_selection (int client, uint32 context, String& uuid, String text)
357 void PanelAgentBase::socket_get_keyboard_ise_list (int client, uint32 context, const String& uuid, std::vector<String>& list)
361 void PanelAgentBase::socket_get_candidate_ui (int client, uint32 context, const String& uuid, int style, int mode)
365 void PanelAgentBase::socket_get_candidate_geometry (int client, uint32 context, const String& uuid, struct rectinfo& info)
369 void PanelAgentBase::socket_get_keyboard_ise (int client, uint32 context, const String& uuid, String& ise_name, String& ise_uuid)
373 void PanelAgentBase::helper_detach_input_context (int client, uint32 context, const String& ic_uuid)
377 void PanelAgentBase::helper_process_imengine_event (int client, uint32 context, const String& ic_uuid, const Transaction& nest_transaction)
381 void PanelAgentBase::process_helper_event (int client, uint32 context, String target_uuid, String active_uuid, Transaction& nest_trans)
385 void PanelAgentBase::socket_helper_key_event (int client, uint32 context, int cmd , KeyEvent& key)
389 //SCIM_TRANS_CMD_GET_SURROUNDING_TEXT
390 //socket_helper_get_surrounding_text
391 void PanelAgentBase::socket_helper_get_surrounding_text (int client, uint32 context, uint32 maxlen_before, uint32 maxlen_after)
394 //SCIM_TRANS_CMD_DELETE_SURROUNDING_TEXT
395 //socket_helper_delete_surrounding_text
396 void PanelAgentBase::socket_helper_delete_surrounding_text (int client, uint32 context, uint32 offset, uint32 len)
399 //SCIM_TRANS_CMD_GET_SELECTION
400 void PanelAgentBase::socket_helper_get_selection (int client, uint32 context)
403 //SCIM_TRANS_CMD_SET_SELECTION
404 void PanelAgentBase::socket_helper_set_selection (int client, uint32 context, uint32 start, uint32 end)
408 //socket_helper_update_input_context
409 //ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT
410 void PanelAgentBase::update_ise_input_context (int client, uint32 context, uint32 type, uint32 value)
414 //socket_helper_update_language_locale
415 //ISM_TRANS_CMD_UPDATE_ISE_LANGUAGE_LOCALE
416 void PanelAgentBase::update_ise_language_locale(int client, uint32 context, String locale)
420 //socket_helper_send_private_command
421 //SCIM_TRANS_CMD_SEND_PRIVATE_COMMAND
422 void PanelAgentBase::send_private_command (int client, uint32 context, const String& command)
426 //socket_helper_commit_content
427 //SCIM_TRANS_CMD_COMMIT_CONTENT
428 void PanelAgentBase::commit_content (int client, uint32 context, const String& content, const String& description, const String& mime_types)
432 //SCIM_TRANS_CMD_UPDATE_SPOT_LOCATION
433 void PanelAgentBase::helper_all_update_spot_location (int client, uint32 context, String uuid, int x, int y)
436 //ISM_TRANS_CMD_UPDATE_CURSOR_POSITION
437 void PanelAgentBase::helper_all_update_cursor_position (int client, uint32 context, String uuid, int cursor_pos)
440 //SCIM_TRANS_CMD_UPDATE_SCREEN
441 void PanelAgentBase::helper_all_update_screen (int client, uint32 context, String uuid, int screen)
445 //socket_helper_commit_string
446 //SCIM_TRANS_CMD_COMMIT_STRING
447 void PanelAgentBase::commit_string (int client, uint32 context, const WideString& wstr)
450 //socket_helper_show_preedit_string
451 //SCIM_TRANS_CMD_SHOW_PREEDIT_STRING
452 void PanelAgentBase::show_preedit_string (int client, uint32 context)
455 //socket_helper_hide_preedit_string
456 //SCIM_TRANS_CMD_HIDE_PREEDIT_STRING
457 void PanelAgentBase::hide_preedit_string (int client, uint32 context)
460 //socket_helper_update_preedit_string
461 //SCIM_TRANS_CMD_UPDATE_PREEDIT_STRING
462 void PanelAgentBase::update_preedit_string (int client, uint32 context, WideString preedit, WideString commit, AttributeList& attrs, uint32 caret)
465 //socket_helper_update_preedit_caret
466 //SCIM_TRANS_CMD_UPDATE_PREEDIT_CARET
467 void PanelAgentBase::update_preedit_caret (int client, uint32 context, uint32 caret)
470 //socket_helper_recapture_string
471 //ISM_TRANS_CMD_RECAPTURE_STRING
472 void PanelAgentBase::recapture_string (int client, uint32 context, int offset, int len, WideString preedit, WideString commit, AttributeList& attrs)
475 //socket_helper_register_helper
476 //SCIM_TRANS_CMD_HELPER_ATTACH_INPUT_CONTEXT
477 //SCIM_TRANS_CMD_UPDATE_SCREEN
478 void PanelAgentBase::helper_attach_input_context_and_update_screen (int client, std::vector < std::pair <uint32, String> >& helper_ic_index,
479 uint32 current_screen)
483 void PanelAgentBase::hide_helper_ise (int client, uint32 context)
487 bool PanelAgentBase::process_input_device_event(int client, uint32 context, const String& uuid, uint32 type, const char *data, size_t len, _OUT_ uint32& result)
492 void PanelAgentBase::process_key_event_done(int client, uint32 context, KeyEvent &key, uint32 ret, uint32 serial)
496 void PanelAgentBase::request_ise_hide(int client, uint32 context)
500 void PanelAgentBase::set_autocapital_type(int client, uint32 context, String uuid, int mode)
504 void PanelAgentBase::update_ise_geometry (int client, uint32 context, uint32 x, uint32 y, uint32 width, uint32 height)
508 void PanelAgentBase::remote_update_preedit_string (int client, uint32 context, const WideString str, const WideString commit, const AttributeList &attrs, uint32 caret)
512 void PanelAgentBase::remote_send_key_event (int client, uint32 context, const KeyEvent &key)
516 void PanelAgentBase::remote_forward_key_event (int client, uint32 context, const KeyEvent &key)
520 void PanelAgentBase::remote_commit_string (int client, uint32 context, const WideString& wstr)
524 void PanelAgentBase::remote_delete_surrounding_text (int client, uint32 context, uint32 offset, uint32 len)
528 void PanelAgentBase::set_prediction_allow (int client, uint32 context, String uuid, int mode)
532 void PanelAgentBase::send_fail_reply (int client)
536 void PanelAgentBase::update_entry_metadata (int client, uint32 context)
540 void PanelAgentBase::request_ise_reshow (int client, uint32 context)
544 void PanelAgentBase::set_floating_mode (int client, uint32 context, uint32 floating_mode)
548 void PanelAgentBase::set_floating_drag_enabled (int client, uint32 context_id, uint32 enabled)
551 } /* namespace scim */
554 vi:ts=4:nowrap:ai:expandtab