25
25
/* functions prototype */
26
26
static void ibus_property_destroy (IBusProperty *prop);
27
27
static gboolean ibus_property_serialize (IBusProperty *prop,
28
IBusMessageIter *iter);
29
static gboolean ibus_property_deserialize (IBusProperty *prop,
30
IBusMessageIter *iter);
28
GVariantBuilder *builder);
29
static gint ibus_property_deserialize (IBusProperty *prop,
31
31
static gboolean ibus_property_copy (IBusProperty *dest,
32
32
const IBusProperty *src);
34
34
G_DEFINE_TYPE (IBusProperty, ibus_property, IBUS_TYPE_SERIALIZABLE)
37
ibus_property_class_init (IBusPropertyClass *klass)
37
ibus_property_class_init (IBusPropertyClass *class)
39
IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass);
40
IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass);
39
IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class);
40
IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class);
42
42
object_class->destroy = (IBusObjectDestroyFunc) ibus_property_destroy;
44
44
serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_property_serialize;
45
45
serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_property_deserialize;
46
46
serializable_class->copy = (IBusSerializableCopyFunc) ibus_property_copy;
48
g_string_append (serializable_class->signature, "suvsvbbuv");
94
92
ibus_property_serialize (IBusProperty *prop,
95
IBusMessageIter *iter)
93
GVariantBuilder *builder)
99
retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->serialize ((IBusSerializable *) prop, iter);
97
retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->serialize ((IBusSerializable *) prop, builder);
100
98
g_return_val_if_fail (retval, FALSE);
102
100
g_return_val_if_fail (IBUS_IS_PROPERTY (prop), FALSE);
104
retval = ibus_message_iter_append (iter, G_TYPE_STRING, &prop->key);
105
g_return_val_if_fail (retval, FALSE);
107
retval = ibus_message_iter_append (iter, G_TYPE_UINT, &prop->type);
108
g_return_val_if_fail (retval, FALSE);
110
retval = ibus_message_iter_append (iter, IBUS_TYPE_TEXT, &prop->label);
111
g_return_val_if_fail (retval, FALSE);
113
retval = ibus_message_iter_append (iter, G_TYPE_STRING, &prop->icon);
114
g_return_val_if_fail (retval, FALSE);
116
retval = ibus_message_iter_append (iter, IBUS_TYPE_TEXT, &prop->tooltip);
117
g_return_val_if_fail (retval, FALSE);
119
retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &prop->sensitive);
120
g_return_val_if_fail (retval, FALSE);
122
retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &prop->visible);
123
g_return_val_if_fail (retval, FALSE);
125
retval = ibus_message_iter_append (iter, G_TYPE_UINT, &prop->state);
126
g_return_val_if_fail (retval, FALSE);
128
retval = ibus_message_iter_append (iter, IBUS_TYPE_PROP_LIST, &prop->sub_props);
129
g_return_val_if_fail (retval, FALSE);
102
g_variant_builder_add (builder, "s", prop->key);
103
g_variant_builder_add (builder, "u", prop->type);
104
g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->label));
105
g_variant_builder_add (builder, "s", prop->icon);
106
g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->tooltip));
107
g_variant_builder_add (builder, "b", prop->sensitive);
108
g_variant_builder_add (builder, "b", prop->visible);
109
g_variant_builder_add (builder, "u", prop->state);
110
g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->sub_props));
135
ibus_property_deserialize (IBusProperty *prop,
136
IBusMessageIter *iter)
116
ibus_property_deserialize (IBusProperty *prop,
141
retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, iter);
142
g_return_val_if_fail (retval, FALSE);
144
retval = ibus_message_iter_get (iter, G_TYPE_STRING, &p);
145
g_return_val_if_fail (retval, FALSE);
146
ibus_message_iter_next (iter);
147
prop->key = g_strdup (p);
149
retval = ibus_message_iter_get (iter, G_TYPE_UINT, &prop->type);
150
g_return_val_if_fail (retval, FALSE);
151
ibus_message_iter_next (iter);
153
retval = ibus_message_iter_get (iter, IBUS_TYPE_TEXT, &prop->label);
121
retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, variant);
122
g_return_val_if_fail (retval, 0);
124
g_variant_get_child (variant, retval++, "s", &prop->key);
125
g_variant_get_child (variant, retval++, "u", &prop->type);
127
GVariant *subvar = g_variant_get_child_value (variant, retval++);
128
prop->label = IBUS_TEXT (ibus_serializable_deserialize (subvar));
154
129
g_object_ref_sink (prop->label);
155
g_return_val_if_fail (retval, FALSE);
156
ibus_message_iter_next (iter);
158
retval = ibus_message_iter_get (iter, G_TYPE_STRING, &p);
159
g_return_val_if_fail (retval, FALSE);
160
ibus_message_iter_next (iter);
161
prop->icon = g_strdup (p);
163
retval = ibus_message_iter_get (iter, IBUS_TYPE_TEXT, &prop->tooltip);
130
g_variant_unref (subvar);
132
g_variant_get_child (variant, retval++, "s", &prop->icon);
134
subvar = g_variant_get_child_value (variant, retval++);
135
prop->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar));
164
136
g_object_ref_sink (prop->tooltip);
165
g_return_val_if_fail (retval, FALSE);
166
ibus_message_iter_next (iter);
168
retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &prop->sensitive);
169
g_return_val_if_fail (retval, FALSE);
170
ibus_message_iter_next (iter);
172
retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &prop->visible);
173
g_return_val_if_fail (retval, FALSE);
174
ibus_message_iter_next (iter);
176
retval = ibus_message_iter_get (iter, G_TYPE_UINT, &prop->state);
177
g_return_val_if_fail (retval, FALSE);
178
ibus_message_iter_next (iter);
180
retval = ibus_message_iter_get (iter, IBUS_TYPE_PROP_LIST, &prop->sub_props);
137
g_variant_unref (subvar);
139
g_variant_get_child (variant, retval++, "b", &prop->sensitive);
140
g_variant_get_child (variant, retval++, "b", &prop->visible);
141
g_variant_get_child (variant, retval++, "u", &prop->state);
143
subvar = g_variant_get_child_value (variant, retval++);
144
prop->sub_props = IBUS_PROP_LIST (ibus_serializable_deserialize (subvar));
181
145
g_object_ref_sink (prop->sub_props);
182
g_return_val_if_fail (retval, FALSE);
183
ibus_message_iter_next (iter);
146
g_variant_unref (subvar);