~timo-jyrinki/ubuntu/trusty/maliit-framework/fix_qt52

« back to all changes in this revision

Viewing changes to connection-glib/meego-imcontext-dbus.c

  • Committer: Package Import Robot
  • Author(s): Ricardo Salveti de Araujo, Sergio Schvezov, Ricardo Salveti de Araujo
  • Date: 2013-07-23 19:47:04 UTC
  • mfrom: (1.1.2) (1.2.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130723194704-1lsy1kmlda069cea
Tags: 0.99.0+git20130615+97e8335-0ubuntu1
[ Sergio Schvezov ]
* New build from HEAD 97e8335.
* Packaging import from lp:phablet-extras/maliit-framework.

[ Ricardo Salveti de Araujo ]
* debian/control: adding vcs and fixing dependencies
* General package cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2010 Intel Corporation
3
 
 * Copyright (C) 2012 One Laptop per Child Association
4
 
 *
5
 
 * Author:  Raymond Liu <raymond.li@intel.com>
6
 
 *
7
 
 * This library is free software; you can redistribute it and/or
8
 
 * modify it under the terms of the GNU Lesser General Public License
9
 
 * version 2.1 as published by the Free Software Foundation.
10
 
 *
11
 
 * This library is distributed in the hope that it will be useful, but
12
 
 * WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
 
 * Lesser General Public License for more details.
15
 
 *
16
 
 * You should have received a copy of the GNU Lesser General Public
17
 
 * License along with this library; if not, write to the Free Software
18
 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
 
 * 02110-1301 USA
20
 
 *
21
 
 */
22
 
 
23
 
#include <stdlib.h>
24
 
#include <glib.h>
25
 
 
26
 
#include "meego-imcontext-dbus.h"
27
 
 
28
 
#include "debug.h"
29
 
#include "maliitmarshalers.h"
30
 
 
31
 
#include <dbus/dbus-glib.h>
32
 
 
33
 
#define MEEGO_IMCONTEXT_DBUSOBJ_SERVICE_OBJECT_PATH "/com/meego/inputmethod/inputcontext"
34
 
 
35
 
G_DEFINE_TYPE(MeegoIMContextDbusObj, meego_imcontext_dbusobj, G_TYPE_OBJECT);
36
 
 
37
 
#include "meego-imcontext-dbus-private.h"
38
 
 
39
 
enum {
40
 
    ACTIVATION_LOST_EVENT,
41
 
    IM_INITIATED_HIDE,
42
 
    COMMIT_STRING,
43
 
    UPDATE_PREEDIT,
44
 
    KEY_EVENT,
45
 
    UPDATE_INPUT_METHOD_AREA,
46
 
    SET_GLOBAL_CORRECTION,
47
 
    PREEDIT_RECTANGLE,
48
 
    COPY,
49
 
    PASTE,
50
 
    SET_REDIRECT_KEYS,
51
 
    SET_DETECTABLE_AUTO_REPEAT,
52
 
    SET_SELECTION,
53
 
    SELECTION,
54
 
    SET_LANGUAGE,
55
 
    NOTIFY_EXTENDED_ATTRIBUTE_CHANGED,
56
 
    PLUGIN_SETTINGS_LOADED,
57
 
    LAST_SIGNAL
58
 
};
59
 
 
60
 
static guint imcontext_signals[LAST_SIGNAL] = { 0 };
61
 
 
62
 
#include "meego-imcontext-dbus-glue.h"
63
 
 
64
 
 
65
 
static void
66
 
meego_imcontext_dbusobj_init(MeegoIMContextDbusObj *obj)
67
 
{
68
 
    STEP();
69
 
    g_assert(obj != NULL);
70
 
}
71
 
 
72
 
 
73
 
static void
74
 
meego_imcontext_dbusobj_class_init(MeegoIMContextDbusObjClass *klass)
75
 
{
76
 
    g_assert(klass != NULL);
77
 
 
78
 
    dbus_g_object_type_install_info(MEEGO_IMCONTEXT_TYPE_DBUSOBJ,
79
 
                                    &dbus_glib_meego_imcontext_dbus_object_info);
80
 
 
81
 
    imcontext_signals[ACTIVATION_LOST_EVENT] = g_signal_new("activation-lost-event",
82
 
                                                            G_TYPE_FROM_CLASS(klass),
83
 
                                                            G_SIGNAL_RUN_FIRST,
84
 
                                                            0,
85
 
                                                            NULL, NULL,
86
 
                                                            g_cclosure_marshal_VOID__VOID,
87
 
                                                            G_TYPE_NONE, 0);
88
 
    imcontext_signals[IM_INITIATED_HIDE] = g_signal_new("im-initiated-hide",
89
 
                                                        G_TYPE_FROM_CLASS(klass),
90
 
                                                        G_SIGNAL_RUN_FIRST,
91
 
                                                        0,
92
 
                                                        NULL, NULL,
93
 
                                                        g_cclosure_marshal_VOID__VOID,
94
 
                                                        G_TYPE_NONE, 0);
95
 
    imcontext_signals[COMMIT_STRING] = g_signal_new("commit-string",
96
 
                                                    G_TYPE_FROM_CLASS(klass),
97
 
                                                    G_SIGNAL_RUN_FIRST,
98
 
                                                    0,
99
 
                                                    NULL, NULL,
100
 
                                                    _maliit_marshal_VOID__STRING_INT_INT_INT,
101
 
                                                    G_TYPE_NONE, 4,
102
 
                                                    G_TYPE_STRING,
103
 
                                                    G_TYPE_INT,
104
 
                                                    G_TYPE_INT,
105
 
                                                    G_TYPE_INT);
106
 
    imcontext_signals[UPDATE_PREEDIT] = g_signal_new("update-preedit",
107
 
                                                     G_TYPE_FROM_CLASS(klass),
108
 
                                                     G_SIGNAL_RUN_FIRST,
109
 
                                                     0,
110
 
                                                     NULL, NULL,
111
 
                                                     _maliit_marshal_VOID__STRING_BOXED_INT_INT_INT,
112
 
                                                     G_TYPE_NONE, 5,
113
 
                                                     G_TYPE_STRING,
114
 
                                                     G_TYPE_PTR_ARRAY,
115
 
                                                     G_TYPE_INT,
116
 
                                                     G_TYPE_INT,
117
 
                                                     G_TYPE_INT);
118
 
    imcontext_signals[KEY_EVENT] = g_signal_new("key-event",
119
 
                                                G_TYPE_FROM_CLASS(klass),
120
 
                                                G_SIGNAL_RUN_FIRST,
121
 
                                                0,
122
 
                                                NULL, NULL,
123
 
                                                _maliit_marshal_VOID__INT_INT_INT_STRING_BOOLEAN_INT,
124
 
                                                G_TYPE_NONE, 6,
125
 
                                                G_TYPE_INT,
126
 
                                                G_TYPE_INT,
127
 
                                                G_TYPE_INT,
128
 
                                                G_TYPE_STRING,
129
 
                                                G_TYPE_BOOLEAN,
130
 
                                                G_TYPE_INT);
131
 
    imcontext_signals[UPDATE_INPUT_METHOD_AREA] = g_signal_new("update-input-method-area",
132
 
                                                               G_TYPE_FROM_CLASS(klass),
133
 
                                                               G_SIGNAL_RUN_FIRST,
134
 
                                                               0,
135
 
                                                               NULL, NULL,
136
 
                                                               _maliit_marshal_VOID__INT_INT_INT_INT,
137
 
                                                               G_TYPE_NONE, 4,
138
 
                                                               G_TYPE_INT,
139
 
                                                               G_TYPE_INT,
140
 
                                                               G_TYPE_INT,
141
 
                                                               G_TYPE_INT);
142
 
    imcontext_signals[SET_GLOBAL_CORRECTION] = g_signal_new("set-global-correction",
143
 
                                                            G_TYPE_FROM_CLASS(klass),
144
 
                                                            G_SIGNAL_RUN_FIRST,
145
 
                                                            0,
146
 
                                                            NULL, NULL,
147
 
                                                            g_cclosure_marshal_VOID__BOOLEAN,
148
 
                                                            G_TYPE_NONE, 1,
149
 
                                                            G_TYPE_BOOLEAN);
150
 
    imcontext_signals[PREEDIT_RECTANGLE] = g_signal_new("preedit-rectangle",
151
 
                                                        G_TYPE_FROM_CLASS(klass),
152
 
                                                        G_SIGNAL_RUN_LAST,
153
 
                                                        0,
154
 
                                                        NULL, NULL,
155
 
                                                        _maliit_marshal_BOXED__VOID,
156
 
                                                        G_TYPE_PTR_ARRAY, 0);
157
 
    imcontext_signals[COPY] = g_signal_new("copy",
158
 
                                           G_TYPE_FROM_CLASS(klass),
159
 
                                           G_SIGNAL_RUN_FIRST,
160
 
                                           0,
161
 
                                           NULL, NULL,
162
 
                                           g_cclosure_marshal_VOID__VOID,
163
 
                                           G_TYPE_NONE, 0);
164
 
    imcontext_signals[PASTE] = g_signal_new("paste",
165
 
                                            G_TYPE_FROM_CLASS(klass),
166
 
                                            G_SIGNAL_RUN_FIRST,
167
 
                                            0,
168
 
                                            NULL, NULL,
169
 
                                            g_cclosure_marshal_VOID__VOID,
170
 
                                            G_TYPE_NONE, 0);
171
 
    imcontext_signals[SET_REDIRECT_KEYS] = g_signal_new("set-redirect-keys",
172
 
                                                        G_TYPE_FROM_CLASS(klass),
173
 
                                                        G_SIGNAL_RUN_FIRST,
174
 
                                                        0,
175
 
                                                        NULL, NULL,
176
 
                                                        g_cclosure_marshal_VOID__BOOLEAN,
177
 
                                                        G_TYPE_NONE, 1,
178
 
                                                        G_TYPE_BOOLEAN);
179
 
    imcontext_signals[SET_DETECTABLE_AUTO_REPEAT] = g_signal_new("set-detectable-auto-repeat",
180
 
                                                                 G_TYPE_FROM_CLASS(klass),
181
 
                                                                 G_SIGNAL_RUN_FIRST,
182
 
                                                                 0,
183
 
                                                                 NULL, NULL,
184
 
                                                                 g_cclosure_marshal_VOID__BOOLEAN,
185
 
                                                                 G_TYPE_NONE, 1,
186
 
                                                                 G_TYPE_BOOLEAN);
187
 
    imcontext_signals[SET_SELECTION] = g_signal_new("set-selection",
188
 
                                                    G_TYPE_FROM_CLASS(klass),
189
 
                                                    G_SIGNAL_RUN_FIRST,
190
 
                                                    0,
191
 
                                                    NULL, NULL,
192
 
                                                    _maliit_marshal_VOID__INT_INT,
193
 
                                                    G_TYPE_NONE, 2,
194
 
                                                    G_TYPE_INT,
195
 
                                                    G_TYPE_INT);
196
 
    imcontext_signals[SELECTION] = g_signal_new("selection",
197
 
                                                G_TYPE_FROM_CLASS(klass),
198
 
                                                G_SIGNAL_RUN_LAST,
199
 
                                                0,
200
 
                                                NULL, NULL,
201
 
                                                _maliit_marshal_STRING__VOID,
202
 
                                                G_TYPE_STRING, 0);
203
 
    imcontext_signals[SET_LANGUAGE] = g_signal_new("set-language",
204
 
                                                   G_TYPE_FROM_CLASS(klass),
205
 
                                                   G_SIGNAL_RUN_FIRST,
206
 
                                                   0,
207
 
                                                   NULL, NULL,
208
 
                                                   g_cclosure_marshal_VOID__STRING,
209
 
                                                   G_TYPE_NONE, 1,
210
 
                                                   G_TYPE_STRING);
211
 
    imcontext_signals[NOTIFY_EXTENDED_ATTRIBUTE_CHANGED] = g_signal_new("notify-extended-attribute-changed",
212
 
                                                                        G_TYPE_FROM_CLASS(klass),
213
 
                                                                        G_SIGNAL_RUN_FIRST,
214
 
                                                                        0,
215
 
                                                                        NULL, NULL,
216
 
                                                                        _maliit_marshal_VOID__INT_STRING_STRING_STRING_VARIANT,
217
 
                                                                        G_TYPE_NONE, 5,
218
 
                                                                        G_TYPE_INT,
219
 
                                                                        G_TYPE_STRING,
220
 
                                                                        G_TYPE_STRING,
221
 
                                                                        G_TYPE_STRING,
222
 
                                                                        G_TYPE_VARIANT);
223
 
 
224
 
    imcontext_signals[PLUGIN_SETTINGS_LOADED] =
225
 
        g_signal_new ("plugin-settings-loaded",
226
 
                      G_TYPE_FROM_CLASS(klass),
227
 
                      G_SIGNAL_RUN_FIRST,
228
 
                      0,
229
 
                      NULL,
230
 
                      NULL,
231
 
                      g_cclosure_marshal_VOID__BOXED,
232
 
                      G_TYPE_NONE,
233
 
                      1,
234
 
                      G_TYPE_PTR_ARRAY);
235
 
}
236
 
 
237
 
void
238
 
meego_imcontext_dbusobj_connect(MeegoIMContextDbusObj *obj, gpointer connection)
239
 
{
240
 
    DBusGConnection *dbus_connection = (DBusGConnection *)connection;
241
 
    g_return_if_fail(dbus_connection != NULL);
242
 
 
243
 
    dbus_g_connection_register_g_object(dbus_connection,
244
 
                                        MEEGO_IMCONTEXT_DBUSOBJ_SERVICE_OBJECT_PATH,
245
 
                                        G_OBJECT(obj));
246
 
}
247
 
 
248
 
MeegoIMContextDbusObj *
249
 
meego_imcontext_dbusobj_new(void)
250
 
{
251
 
    return g_object_new(MEEGO_IMCONTEXT_TYPE_DBUSOBJ, NULL);
252
 
}
253
 
 
254
 
 
255
 
gboolean
256
 
meego_imcontext_dbus_activation_lost_event(MeegoIMContextDbusObj *obj, GError **error)
257
 
{
258
 
    STEP();
259
 
 
260
 
    g_signal_emit(obj, imcontext_signals[ACTIVATION_LOST_EVENT], 0);
261
 
 
262
 
    return TRUE;
263
 
}
264
 
 
265
 
 
266
 
gboolean
267
 
meego_imcontext_dbus_im_initiated_hide(MeegoIMContextDbusObj *obj, GError **error)
268
 
{
269
 
    STEP();
270
 
 
271
 
    g_signal_emit(obj, imcontext_signals[IM_INITIATED_HIDE], 0);
272
 
 
273
 
    return TRUE;
274
 
}
275
 
 
276
 
 
277
 
gboolean
278
 
meego_imcontext_dbus_commit_string(MeegoIMContextDbusObj *obj, char *string, gint replacement_start,
279
 
                                   int replacement_length, int cursor_pos, GError **error)
280
 
{
281
 
    UNUSED(error);
282
 
 
283
 
    DBG("commit string: %s", string);
284
 
 
285
 
    g_signal_emit(obj, imcontext_signals[COMMIT_STRING], 0, string, replacement_start, replacement_length, cursor_pos);
286
 
 
287
 
    return TRUE;
288
 
}
289
 
 
290
 
 
291
 
gboolean
292
 
meego_imcontext_dbus_update_preedit(MeegoIMContextDbusObj *obj, const char *string, GPtrArray *formatListData, gint32 replaceStart, gint32 replaceLength, gint32 cursorPos, GError **error)
293
 
{
294
 
    UNUSED(error);
295
 
 
296
 
    DBG("preedit string: %s", string);
297
 
 
298
 
    g_signal_emit(obj, imcontext_signals[UPDATE_PREEDIT], 0, string, formatListData, replaceStart, replaceLength, cursorPos);
299
 
 
300
 
    return TRUE;
301
 
}
302
 
 
303
 
 
304
 
gboolean
305
 
meego_imcontext_dbus_key_event(MeegoIMContextDbusObj *obj, int type, int key, int modifiers, char *text,
306
 
                               gboolean auto_repeat, int count, GError **error)
307
 
{
308
 
    UNUSED(error);
309
 
 
310
 
    DBG("type=0x%x, key=0x%x, modifiers=0x%x, text = %s, auto_repeat=%d, count=%d",
311
 
        type, key, modifiers, text, auto_repeat, count);
312
 
 
313
 
    g_signal_emit(obj, imcontext_signals[KEY_EVENT], 0, type, key, modifiers, text, auto_repeat, count);
314
 
 
315
 
    return TRUE;
316
 
}
317
 
 
318
 
gboolean
319
 
meego_imcontext_dbus_update_input_method_area(MeegoIMContextDbusObj *obj, int x, int y, int width, int height, GError **error G_GNUC_UNUSED)
320
 
{
321
 
    STEP();
322
 
 
323
 
    g_signal_emit(obj, imcontext_signals[UPDATE_INPUT_METHOD_AREA], 0, x, y, width, height);
324
 
 
325
 
    return TRUE;
326
 
}
327
 
 
328
 
 
329
 
gboolean
330
 
meego_imcontext_dbus_set_global_correction_enabled(MeegoIMContextDbusObj *obj, gboolean correction, GError **error)
331
 
{
332
 
    STEP();
333
 
 
334
 
    // TODO emit SET_GLOBAL_CORRECTION signal
335
 
 
336
 
    return TRUE;
337
 
}
338
 
 
339
 
gboolean
340
 
meego_imcontext_dbus_set_redirect_keys(MeegoIMContextDbusObj *obj, gboolean enabled, GError **error)
341
 
{
342
 
    UNUSED(error);
343
 
 
344
 
    STEP();
345
 
 
346
 
    g_signal_emit(obj, imcontext_signals[SET_REDIRECT_KEYS], 0, enabled);
347
 
 
348
 
    return TRUE;
349
 
}
350
 
 
351
 
 
352
 
gboolean
353
 
meego_imcontext_dbus_preedit_rectangle(MeegoIMContextDbusObj *obj, GValueArray **rect, gboolean *valid, GError **error)
354
 
{
355
 
    STEP();
356
 
 
357
 
    // TODO emit PREEDIT_RECTANGLE signal
358
 
 
359
 
    return TRUE;
360
 
}
361
 
 
362
 
gboolean
363
 
meego_imcontext_dbus_set_detectable_auto_repeat(MeegoIMContextDbusObj *obj, gboolean enabled, GError **error)
364
 
{
365
 
    STEP();
366
 
 
367
 
    // TODO emit SET_DETECTABLE_AUTO_REPEAT signal
368
 
 
369
 
    return TRUE;
370
 
}
371
 
 
372
 
gboolean
373
 
meego_imcontext_dbus_set_selection(MeegoIMContextDbusObj *obj, int start, int length, GError **error)
374
 
{
375
 
    STEP();
376
 
 
377
 
    // TODO emit SET_SELECTION signal
378
 
 
379
 
    return TRUE;
380
 
}
381
 
 
382
 
gboolean
383
 
meego_imcontext_dbus_selection(MeegoIMContextDbusObj *obj, gboolean *valid, gchar **gdata, GError **error)
384
 
{
385
 
    STEP();
386
 
 
387
 
    // TODO emit SELECTION signal
388
 
 
389
 
    return TRUE;
390
 
}
391
 
 
392
 
gboolean
393
 
meego_imcontext_dbus_set_language (MeegoIMContextDbusObj *obj,
394
 
                                   const gchar *language_id,
395
 
                                   GError **error)
396
 
{
397
 
    UNUSED(error);
398
 
    STEP();
399
 
 
400
 
    g_signal_emit(obj, imcontext_signals[SET_LANGUAGE], 0, language_id);
401
 
 
402
 
    return TRUE;
403
 
}
404
 
 
405
 
gboolean
406
 
meego_imcontext_dbus_notify_extended_attribute_changed (MeegoIMContextDbusObj *obj,
407
 
                                                        gint id,
408
 
                                                        const gchar *target,
409
 
                                                        const gchar *target_item,
410
 
                                                        const gchar *key,
411
 
                                                        GValue *value,
412
 
                                                        GError **error)
413
 
{
414
 
    UNUSED(error);
415
 
    STEP();
416
 
 
417
 
    GVariant *variant_value = dbus_g_value_build_g_variant (value);
418
 
 
419
 
    if (variant_value) {
420
 
        if (g_variant_is_floating (variant_value)) {
421
 
            g_variant_ref_sink (variant_value);
422
 
        }
423
 
 
424
 
        g_signal_emit(obj, imcontext_signals[NOTIFY_EXTENDED_ATTRIBUTE_CHANGED], 0, id, target, target_item, key, variant_value);
425
 
 
426
 
        g_variant_unref (variant_value);
427
 
 
428
 
        return TRUE;
429
 
    }
430
 
 
431
 
    g_warning ("Unknown data type: %s", G_VALUE_TYPE_NAME (value));
432
 
 
433
 
    return TRUE;
434
 
}
435
 
 
436
 
gboolean
437
 
meego_imcontext_dbus_plugin_settings_loaded (MeegoIMContextDbusObj *obj,
438
 
                                             GPtrArray *settings_data,
439
 
                                             GError **error G_GNUC_UNUSED)
440
 
{
441
 
    g_signal_emit(obj, imcontext_signals[PLUGIN_SETTINGS_LOADED], 0, settings_data);
442
 
    return TRUE;
443
 
}