extern "C" {
#endif
+typedef enum _LookupTableEventType {
+ CANDIDATE_EVENT_START,
+ CANDIDATE_EVENT_END,
+} LookupTableEventType;
+
typedef void (*scl_process_key_event_with_imengine_cb)(uint32_t code, uint32_t mask, uint32_t layout, uint32_t dev_class, uint32_t dev_subclass, const char *dev_name, uint32_t serial, void* user_data);
+typedef void (*scl_candidate_show_cb)(void* user_data);
+typedef void (*scl_candidate_hide_cb)(void* user_data);
+typedef void (*scl_lookup_table_changed_cb)(LookupTableEventType type, void* user_data);
+typedef void (*scl_candidate_string_foreach_cb)(const char *item, void* user_data);
int scl_set_imengine(const char *engine_id);
int scl_flush_imengine();
int scl_send_imengine_event(int command, uint32_t value);
int scl_set_engine_loader_flag(bool flag);
int scl_set_process_key_event_with_imengine_cb(scl_process_key_event_with_imengine_cb callback, void *user_data);
+int scl_set_candidate_show_cb(scl_candidate_show_cb callback, void *user_data);
+int scl_set_candidate_hide_cb(scl_candidate_hide_cb callback, void *user_data);
+int scl_set_lookup_table_changed_cb(scl_lookup_table_changed_cb callback, void *user_data);
+int scl_set_candidate_string_foreach_cb(scl_candidate_string_foreach_cb callback, void *user_data);
+int scl_select_candidate(uint32_t index);
#ifdef __cplusplus
}
#define LOG_TAG "CSCLUINUI"
static scl_process_key_event_with_imengine_cb g_process_key_event_with_imengine_cb = NULL;
+static scl_candidate_show_cb g_candidate_show_cb = NULL;
+static scl_candidate_hide_cb g_candidate_hide_cb = NULL;
+static scl_lookup_table_changed_cb g_lookup_table_changed_cb = NULL;
+static scl_candidate_string_foreach_cb g_candidate_string_foreach_cb = NULL;
static void *g_process_key_event_with_imengine_cb_data = NULL;
+static void *g_candidate_show_cb_data = NULL;
+static void *g_candidate_hide_cb_data = NULL;
+static void *g_lookup_table_changed_cb_data = NULL;
+static void *g_candidate_string_foreach_cb_data = NULL;
EXPORT_API int scl_set_imengine(const char *engine_id)
{
g_process_key_event_with_imengine_cb_data = user_data;
ret = ime_event_set_process_key_event_with_imengine_cb(ime_app_process_key_event_with_imengine_cb, user_data);
+ if (ret != IME_ERROR_NONE)
+ LOGE("Failed to set ime_app_process_key_event_with_imengine_cb(), ret : %d", ret);
return ret;
}
+
+static void ime_app_candidate_show_cb(int context_id, void *user_data)
+{
+ LOGD("candidate_show_cb()");
+ if (g_candidate_show_cb) {
+ g_candidate_show_cb(user_data);
+ }
+}
+
+EXPORT_API int scl_set_candidate_show_cb(scl_candidate_show_cb callback, void *user_data)
+{
+ int ret = IME_ERROR_NONE;
+
+ g_candidate_show_cb = callback;
+ g_candidate_show_cb_data = user_data;
+
+ ret = ime_event_set_candidate_show_cb(ime_app_candidate_show_cb, user_data);
+ if (ret != IME_ERROR_NONE)
+ LOGE("Failed to set ime_app_candidate_show_cb(), ret : %d", ret);
+
+ return ret;
+}
+
+static void ime_app_candidate_hide_cb(int context_id, void *user_data)
+{
+ LOGD("candidate_hide_cb()");
+ if (g_candidate_hide_cb) {
+ g_candidate_hide_cb(user_data);
+ }
+}
+
+EXPORT_API int scl_set_candidate_hide_cb(scl_candidate_hide_cb callback, void *user_data)
+{
+ int ret = IME_ERROR_NONE;
+
+ g_candidate_hide_cb = callback;
+ g_candidate_hide_cb_data = user_data;
+
+ ret = ime_event_set_candidate_hide_cb(ime_app_candidate_hide_cb, user_data);
+ if (ret != IME_ERROR_NONE)
+ LOGE("Failed to set ime_app_candidate_hide_cb(), ret : %d", ret);
+
+ return ret;
+}
+
+static void ime_app_lookup_table_changed_cb(Eina_List *list, void *user_data)
+{
+ LOGD("lookup_table_changed_cb()");
+ if (g_lookup_table_changed_cb) {
+ char *candidate;
+ void *data;
+ Eina_List *l;
+
+ g_lookup_table_changed_cb(CANDIDATE_EVENT_START, g_lookup_table_changed_cb_data);
+
+ if (list) {
+ EINA_LIST_FOREACH(list, l, data) {
+ candidate = (char *)data;
+ if (candidate && g_candidate_string_foreach_cb) {
+ g_candidate_string_foreach_cb(candidate, g_candidate_string_foreach_cb_data);
+ }
+ }
+ }
+
+ g_lookup_table_changed_cb(CANDIDATE_EVENT_END, g_lookup_table_changed_cb_data);
+ }
+}
+
+EXPORT_API int scl_set_lookup_table_changed_cb(scl_lookup_table_changed_cb callback, void *user_data)
+{
+ int ret = IME_ERROR_NONE;
+
+ g_lookup_table_changed_cb = callback;
+ g_lookup_table_changed_cb_data = user_data;
+
+ ret = ime_event_set_lookup_table_changed_cb(ime_app_lookup_table_changed_cb, user_data);
+ if (ret != IME_ERROR_NONE)
+ LOGE("Failed to set ime_app_lookup_table_changed_cb(), ret : %d", ret);
+
+ return ret;
+}
+
+EXPORT_API int scl_set_candidate_string_foreach_cb(scl_candidate_string_foreach_cb callback, void *user_data)
+{
+ int ret = IME_ERROR_NONE;
+
+ if (!callback) {
+ LOGE("Invalid parameter");
+ ret = IME_ERROR_INVALID_PARAMETER;
+ }
+
+ g_candidate_string_foreach_cb = callback;
+ g_candidate_string_foreach_cb_data = user_data;
+
+ return ret;
+}
+
+EXPORT_API int scl_select_candidate(uint32_t index)
+{
+ int ret = IME_ERROR_NONE;
+ ret = ime_select_candidate(index);
+
+ LOGD("index : %d, ret : %d", index, ret);
+ return ret;
+}
\ No newline at end of file