Add a new interface to pass processing result asynchronously
[platform/core/uifw/libscl-core.git] / src / sclcorecallback.h
1 /*
2  * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <vector>
19 #include <scim_visibility.h>
20 #include <scim_types.h>
21 #include <scim_event.h>
22 #include <ise_context.h>
23 #include "scltypes.h"
24 #include "sclcoretypes.h"
25
26 #ifndef __SCL_CORE_CALLBACK_H__
27 #define __SCL_CORE_CALLBACK_H__
28
29 //SCL_BEGIN_DECLS
30
31 namespace scl
32 {
33
34 struct ISCLCoreEventCallback {
35     virtual void on_init() {}
36     virtual void on_run(int argc, char **argv) {}
37     virtual void on_exit() {}
38     virtual void on_attach_input_context(sclint ic, const sclchar *ic_uuid) {}
39     virtual void on_detach_input_context(sclint ic, const sclchar *ic_uuid) {}
40     virtual void on_reload_config(sclint ic, const sclchar *ic_uuid) {}
41     virtual void on_update_spot_location(sclint ic, const sclchar *ic_uuid, sclint x, sclint y) {}
42     virtual void on_update_cursor_position(sclint ic, const sclchar *ic_uuid, sclint cursor_pos) {}
43     virtual void on_update_surrounding_text(sclint ic, const sclchar *text, sclint cursor) {}
44     virtual void on_focus_out(sclint ic, const sclchar *ic_uuid) {}
45     virtual void on_focus_in(sclint ic, const sclchar *ic_uuid) {}
46     virtual void on_ise_show(sclint ic, const int degree, Ise_Context &context) {}
47     virtual void on_ise_hide(sclint ic, const sclchar *ic_uuid) {}
48     virtual void on_get_geometry(sclu32 *pos_x, sclu32 *pos_y, sclu32 *width, sclu32 *height) {}
49     virtual void on_set_mode(sclu32 mode) {}
50     virtual void on_set_language(sclu32 language) {}
51     virtual void on_set_imdata(sclchar *buf, sclu32 len) {}
52     virtual void on_get_imdata(sclchar **buf, sclu32 *len) {}
53     virtual void on_get_language_locale(sclint ic, sclchar **locale) {}
54     virtual void on_set_return_key_type(sclu32 type) {}
55     virtual void on_get_return_key_type(sclu32 *type) {}
56     virtual void on_set_return_key_disable(sclu32 disabled) {}
57     virtual void on_get_return_key_disable(sclu32 *disabled) {}
58     virtual void on_set_layout(sclu32 layout) {}
59     virtual void on_get_layout(sclu32 *layout) {}
60     virtual void on_set_caps_mode(sclu32 mode) {}
61     virtual void on_reset_input_context(sclint ic, const sclchar *uuid) {}
62     virtual void on_update_candidate_geometry(sclint ic, const sclchar *uuid, sclu32 pos_x, sclu32 pos_y, sclu32 width, sclu32 height) {}
63     virtual void on_update_keyboard_ise(sclint ic, const sclchar *uuid, const sclchar *ise_name, const sclchar *ise_uuid) {}
64     virtual void on_candidate_more_window_show(sclint ic, const sclchar *uuid) {}
65     virtual void on_candidate_more_window_hide(sclint ic, const sclchar *uuid) {}
66     virtual void on_select_aux(sclint ic, const sclchar *uuid, sclint index) {}
67     virtual void on_select_candidate(sclint ic, const sclchar *uuid, sclint index) {}
68     virtual void on_candidate_table_page_up(sclint ic, const sclchar *uuid) {}
69     virtual void on_candidate_table_page_down(sclint ic, const sclchar *uuid) {}
70     virtual void on_update_lookup_table(SclCandidateTable& table) {}
71     virtual void on_update_candidate_table_page_size(sclint ic, const sclchar *uuid, sclint page_size) {}
72     virtual void on_update_candidate_item_layout(const std::vector<sclu32> item) {}
73     virtual void on_update_displayed_candidate_number(sclu32 size) {}
74     virtual void on_longpress_candidate(sclu32 index) {}
75     virtual void on_select_associate(sclint ic, const sclchar *uuid, sclint index) {}
76     virtual void on_associate_table_page_up(sclint ic, const sclchar *uuid) {}
77     virtual void on_associate_table_page_down(sclint ic, const sclchar *uuid) {}
78     virtual void on_update_associate_table_page_size(sclint ic, const sclchar *uuid, sclint page_size) {}
79     virtual void on_process_key_event(scim::KeyEvent &key, sclu32 *ret) {}
80     virtual void on_process_key_event_with_keycode(scim::KeyEvent &key, sclu32 *ret, sclu32 keycode) {}
81     virtual void on_process_key_event_with_imengine(scim::KeyEvent &key, sclu32 serial) {}
82
83     virtual void on_set_display_language(const sclchar *language) {}
84     virtual void on_set_rotation_degree(sclint degree) {}
85     virtual void on_set_accessibility_state(sclboolean state) {}
86
87     virtual void on_create_option_window(sclwindow window, SCLOptionWindowType type) {}
88     virtual void on_destroy_option_window(sclwindow window) {}
89     virtual void on_check_option_window_availability(sclboolean *avail) { if (avail) *avail = false;}
90
91     virtual void on_candidate_show(sclint ic, const sclchar *ic_uuid) {}
92     virtual void on_candidate_hide(sclint ic, const sclchar *ic_uuid) {}
93
94     /* Added in callback interface version 1.1 */
95     virtual void on_process_input_device_event(sclu32 &type, sclchar *data, size_t &len, sclu32 *ret) {}
96
97     virtual void on_set_prediction_hint(const sclchar *prediction_hint) {}
98     virtual void on_set_mime_type(const sclchar *mime_type) {}
99     virtual void on_set_prediction_hint_data(const sclchar *key, const sclchar *value) {}
100     virtual void on_set_optimization_hint(sclu32 hint) {}
101     virtual void on_set_autocapital_type(sclu32 type) {}
102     virtual void on_set_prediction_allow(sclu32 prediction_allow) {}
103     virtual void on_trigger_property(const sclchar *property) {}
104
105     ISCLCoreEventCallback() {
106         /* Current callback interface version is 1.1 */
107         m_version_major = 1;
108         m_version_minor = 1;
109     }
110     sclint get_version_major() { return m_version_major; }
111     sclint get_version_minor() { return m_version_minor; }
112 private:
113     int m_version_major;
114     int m_version_minor;
115 };
116
117 inline sclboolean check_interface_version(ISCLCoreEventCallback *callback, int version_major, int version_minor)
118 {
119     if (callback) {
120         if (callback->get_version_major() >= version_major) {
121             if (callback->get_version_minor() >= version_minor) {
122                 return TRUE;
123             }
124         }
125     }
126     return FALSE;
127 }
128
129 }
130
131 //SCL_END_DECLS
132
133 #endif //__SCL_CORE_CALLBACK_H__